@minecraft-docker/mcctl-console 2.8.1 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/.next/standalone/platform/services/mcctl-console/.next/BUILD_ID +1 -1
  2. package/.next/standalone/platform/services/mcctl-console/.next/app-build-manifest.json +115 -117
  3. package/.next/standalone/platform/services/mcctl-console/.next/app-path-routes-manifest.json +1 -1
  4. package/.next/standalone/platform/services/mcctl-console/.next/build-manifest.json +5 -5
  5. package/.next/standalone/platform/services/mcctl-console/.next/prerender-manifest.json +1 -1
  6. package/.next/standalone/platform/services/mcctl-console/.next/routes-manifest.json +1 -1
  7. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/admin/users/page.js +1 -1
  8. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/admin/users/page.js.nft.json +1 -1
  9. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/admin/users/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page.js +2 -2
  11. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page.js.nft.json +1 -1
  12. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page.js +1 -1
  14. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page.js.nft.json +1 -1
  15. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page.js +1 -1
  17. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page.js.nft.json +1 -1
  18. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page.js +1 -1
  20. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page.js.nft.json +1 -1
  21. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page.js +4 -4
  23. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page.js.nft.json +1 -1
  24. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page.js +1 -1
  26. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page.js.nft.json +1 -1
  27. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page.js +1 -1
  29. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page.js.nft.json +1 -1
  30. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page.js +1 -1
  32. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page.js.nft.json +1 -1
  33. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page.js +1 -1
  35. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page.js.nft.json +1 -1
  36. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page.js +1 -1
  38. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page.js.nft.json +1 -1
  39. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found/page.js +1 -1
  41. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found/page.js.nft.json +1 -1
  42. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found.html +1 -1
  44. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found.rsc +6 -6
  45. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/download/route.js +57 -0
  46. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/download/route.js.nft.json +1 -0
  47. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/mkdir/route.js +1 -0
  48. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/mkdir/route.js.nft.json +1 -0
  49. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/read/route.js +1 -0
  50. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/read/route.js.nft.json +1 -0
  51. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/rename/route.js +1 -0
  52. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/rename/route.js.nft.json +1 -0
  53. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/route.js +1 -0
  54. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/route.js.nft.json +1 -0
  55. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/upload/route.js +57 -0
  56. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/upload/route.js.nft.json +1 -0
  57. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/write/route.js +1 -0
  58. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/files/write/route.js.nft.json +1 -0
  59. package/.next/standalone/platform/services/mcctl-console/.next/server/app/audit-logs.html +1 -1
  60. package/.next/standalone/platform/services/mcctl-console/.next/server/app/audit-logs.rsc +8 -8
  61. package/.next/standalone/platform/services/mcctl-console/.next/server/app/backups.html +1 -1
  62. package/.next/standalone/platform/services/mcctl-console/.next/server/app/backups.rsc +7 -7
  63. package/.next/standalone/platform/services/mcctl-console/.next/server/app/dashboard.html +1 -1
  64. package/.next/standalone/platform/services/mcctl-console/.next/server/app/dashboard.rsc +8 -8
  65. package/.next/standalone/platform/services/mcctl-console/.next/server/app/index.html +1 -1
  66. package/.next/standalone/platform/services/mcctl-console/.next/server/app/index.rsc +6 -6
  67. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page.js +1 -1
  68. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page.js.nft.json +1 -1
  69. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login.html +1 -1
  71. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login.rsc +7 -7
  72. package/.next/standalone/platform/services/mcctl-console/.next/server/app/page.js +1 -1
  73. package/.next/standalone/platform/services/mcctl-console/.next/server/app/page.js.nft.json +1 -1
  74. package/.next/standalone/platform/services/mcctl-console/.next/server/app/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/platform/services/mcctl-console/.next/server/app/players.html +1 -1
  76. package/.next/standalone/platform/services/mcctl-console/.next/server/app/players.rsc +8 -8
  77. package/.next/standalone/platform/services/mcctl-console/.next/server/app/routing.html +1 -1
  78. package/.next/standalone/platform/services/mcctl-console/.next/server/app/routing.rsc +8 -8
  79. package/.next/standalone/platform/services/mcctl-console/.next/server/app/servers.html +1 -1
  80. package/.next/standalone/platform/services/mcctl-console/.next/server/app/servers.rsc +8 -8
  81. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.html +1 -1
  82. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.rsc +8 -8
  83. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page.js +1 -1
  84. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page.js.nft.json +1 -1
  85. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup.html +1 -1
  87. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup.rsc +7 -7
  88. package/.next/standalone/platform/services/mcctl-console/.next/server/app/worlds.html +1 -1
  89. package/.next/standalone/platform/services/mcctl-console/.next/server/app/worlds.rsc +8 -8
  90. package/.next/standalone/platform/services/mcctl-console/.next/server/app-paths-manifest.json +27 -20
  91. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1088.js +1 -1
  92. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1201.js +1 -0
  93. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1309.js +1 -1
  94. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/2842.js +51 -0
  95. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/354.js +1 -1
  96. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/{6175.js → 3613.js} +1 -1
  97. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/4207.js +1 -0
  98. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/4282.js +1 -0
  99. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/4479.js +1 -0
  100. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/5843.js +1 -1
  101. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/6554.js +2 -0
  102. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/7573.js +1 -1
  103. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8243.js +1 -1
  104. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8913.js +1 -0
  105. package/.next/standalone/platform/services/mcctl-console/.next/server/middleware-build-manifest.js +1 -1
  106. package/.next/standalone/platform/services/mcctl-console/.next/server/middleware-manifest.json +5 -5
  107. package/.next/standalone/platform/services/mcctl-console/.next/server/next-font-manifest.js +1 -1
  108. package/.next/standalone/platform/services/mcctl-console/.next/server/next-font-manifest.json +1 -1
  109. package/.next/standalone/platform/services/mcctl-console/.next/server/pages/404.html +1 -1
  110. package/.next/standalone/platform/services/mcctl-console/.next/server/pages/500.html +1 -1
  111. package/.next/standalone/platform/services/mcctl-console/.next/server/server-reference-manifest.json +1 -1
  112. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1055-b8c83674b69387ea.js +1 -0
  113. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/140-25eb9312925d8fea.js +1 -0
  114. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2698-b163080d7b32e5e3.js +1 -0
  115. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2701-677e528d028253ad.js +1 -0
  116. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4036-c4d6006e9e913068.js +1 -0
  117. package/.next/{static/chunks/2539-6bce0edb99b4e538.js → standalone/platform/services/mcctl-console/.next/static/chunks/4219-26d64443218aac0b.js} +1 -1
  118. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4474-b7d88543d50f7f58.js +1 -0
  119. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4841-6260a560fdad2dd4.js +1 -0
  120. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4898-60767ae3dfa904db.js +1 -0
  121. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5498-b79f9cd3afa37253.js +1 -0
  122. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6650-51e2b21d03bb2f09.js +1 -0
  123. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7073-3b047d20c07ac065.js +1 -0
  124. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7087-64ab6928ccdc0ca7.js +1 -0
  125. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7477-3b97ce4c66d3cf7e.js +1 -0
  126. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7730-be5bbd218f018510.js +1 -0
  127. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7753-74bf23c88b387cb7.js +1 -0
  128. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7965-67c4c53f693bc0c4.js +1 -0
  129. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9097-3bc29153e9b2c9d1.js +1 -0
  130. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9788-03286ddd24a074b7.js +1 -0
  131. package/.next/{static/chunks/app/(main)/admin/users/page-e8263fc89b5d349a.js → standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/admin/users/page-b3a3231f2ddc0371.js} +1 -1
  132. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/audit-logs/page-d65c062a803fc4b2.js +1 -0
  133. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/{layout-bf1846a6b0c68959.js → layout-49deaa08620bff5b.js} +1 -1
  134. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/players/page-430dd294c3b34903.js +1 -0
  135. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/routing/{page-0fbdeec8fee218ef.js → page-f430d126cc21547c.js} +1 -1
  136. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/console/page-bea101bb0e8858b4.js +1 -0
  137. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/page-2253494a8db1ef4d.js +1 -0
  138. package/.next/{static/chunks/app/(main)/servers/page-382a14f87768df2c.js → standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/page-5286112dc6e93885.js} +1 -1
  139. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/settings/page-dd38d40e3e0257a8.js +1 -0
  140. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/worlds/page-874ad606cffc439d.js +1 -0
  141. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/layout-eaefe334d7b2816a.js +1 -0
  142. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/login/page-05a2cf46a8784859.js +1 -0
  143. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/signup/page-df2a4f73aae39ef2.js +1 -0
  144. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/ee812fa3-98eef0b457d8ec47.js +1 -0
  145. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/{webpack-198a420ca2ddb7de.js → webpack-7e31802f06defd3e.js} +1 -1
  146. package/.next/standalone/platform/services/mcctl-console/.next/static/css/6a2c381c71b398da.css +1 -0
  147. package/.next/standalone/platform/services/mcctl-console/package.json +10 -0
  148. package/.next/static/chunks/1055-b8c83674b69387ea.js +1 -0
  149. package/.next/static/chunks/140-25eb9312925d8fea.js +1 -0
  150. package/.next/static/chunks/2698-b163080d7b32e5e3.js +1 -0
  151. package/.next/static/chunks/2701-677e528d028253ad.js +1 -0
  152. package/.next/static/chunks/4036-c4d6006e9e913068.js +1 -0
  153. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/2539-6bce0edb99b4e538.js → static/chunks/4219-26d64443218aac0b.js} +1 -1
  154. package/.next/static/chunks/4474-b7d88543d50f7f58.js +1 -0
  155. package/.next/static/chunks/4841-6260a560fdad2dd4.js +1 -0
  156. package/.next/static/chunks/4898-60767ae3dfa904db.js +1 -0
  157. package/.next/static/chunks/5498-b79f9cd3afa37253.js +1 -0
  158. package/.next/static/chunks/6650-51e2b21d03bb2f09.js +1 -0
  159. package/.next/static/chunks/7073-3b047d20c07ac065.js +1 -0
  160. package/.next/static/chunks/7087-64ab6928ccdc0ca7.js +1 -0
  161. package/.next/static/chunks/7477-3b97ce4c66d3cf7e.js +1 -0
  162. package/.next/static/chunks/7730-be5bbd218f018510.js +1 -0
  163. package/.next/static/chunks/7753-74bf23c88b387cb7.js +1 -0
  164. package/.next/static/chunks/7965-67c4c53f693bc0c4.js +1 -0
  165. package/.next/static/chunks/9097-3bc29153e9b2c9d1.js +1 -0
  166. package/.next/static/chunks/9788-03286ddd24a074b7.js +1 -0
  167. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/admin/users/page-e8263fc89b5d349a.js → static/chunks/app/(main)/admin/users/page-b3a3231f2ddc0371.js} +1 -1
  168. package/.next/static/chunks/app/(main)/audit-logs/page-d65c062a803fc4b2.js +1 -0
  169. package/.next/static/chunks/app/(main)/{layout-bf1846a6b0c68959.js → layout-49deaa08620bff5b.js} +1 -1
  170. package/.next/static/chunks/app/(main)/players/page-430dd294c3b34903.js +1 -0
  171. package/.next/static/chunks/app/(main)/routing/{page-0fbdeec8fee218ef.js → page-f430d126cc21547c.js} +1 -1
  172. package/.next/static/chunks/app/(main)/servers/[name]/console/page-bea101bb0e8858b4.js +1 -0
  173. package/.next/static/chunks/app/(main)/servers/[name]/page-2253494a8db1ef4d.js +1 -0
  174. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/page-382a14f87768df2c.js → static/chunks/app/(main)/servers/page-5286112dc6e93885.js} +1 -1
  175. package/.next/static/chunks/app/(main)/settings/page-dd38d40e3e0257a8.js +1 -0
  176. package/.next/static/chunks/app/(main)/worlds/page-874ad606cffc439d.js +1 -0
  177. package/.next/static/chunks/app/layout-eaefe334d7b2816a.js +1 -0
  178. package/.next/static/chunks/app/login/page-05a2cf46a8784859.js +1 -0
  179. package/.next/static/chunks/app/signup/page-df2a4f73aae39ef2.js +1 -0
  180. package/.next/static/chunks/ee812fa3-98eef0b457d8ec47.js +1 -0
  181. package/.next/static/chunks/{webpack-198a420ca2ddb7de.js → webpack-7e31802f06defd3e.js} +1 -1
  182. package/.next/static/css/6a2c381c71b398da.css +1 -0
  183. package/package.json +12 -2
  184. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3068.js +0 -1
  185. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3633.js +0 -1
  186. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/4609.js +0 -1
  187. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/609.js +0 -1
  188. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/6591.js +0 -2
  189. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8849.js +0 -1
  190. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/9023.js +0 -51
  191. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/9874.js +0 -1
  192. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1047-1957808ef6d146f3.js +0 -1
  193. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1099-fa64c7b90813b0a5.js +0 -1
  194. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/212-b904d9ae152f2360.js +0 -1
  195. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2701-385dbd7376f5851d.js +0 -1
  196. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2724-6be0c6be94353443.js +0 -1
  197. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/392-8c54ddef9482164b.js +0 -1
  198. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4187-07672ba5a9f76f7c.js +0 -1
  199. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4219-a84afcb66908141b.js +0 -1
  200. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5381-d66dae5d5171cd57.js +0 -1
  201. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5787-04cc23df05f9da2e.js +0 -1
  202. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6039-38b0b8c06d25892e.js +0 -1
  203. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6645-9bcc9a0f9cd2fdc9.js +0 -1
  204. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6646-c5d039d1ad306467.js +0 -1
  205. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/674-096e0376c367d751.js +0 -1
  206. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/682-6192991ddec396b8.js +0 -1
  207. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6909-9750e61adcf6f5e5.js +0 -1
  208. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7965-420dbb1f781fdc83.js +0 -1
  209. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8233-0fdf0ee81a8cadce.js +0 -1
  210. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/837-f4fbf77c24343b1f.js +0 -1
  211. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8738-25eee78e0dfd0adf.js +0 -1
  212. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9949-2daeb31bdedf25c7.js +0 -1
  213. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/audit-logs/page-c52171f3de12db63.js +0 -1
  214. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/players/page-c4760429d9828ad3.js +0 -1
  215. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/console/page-a0050b5b439d954f.js +0 -1
  216. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/page-f82acaf60a615953.js +0 -1
  217. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/settings/page-94ebb6f110d7cba4.js +0 -1
  218. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/worlds/page-a194d5d6a77d7e06.js +0 -1
  219. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/layout-37a5eb78e96aa17e.js +0 -1
  220. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/login/page-b7ec94d60aae14ce.js +0 -1
  221. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/signup/page-6f03571bb9914130.js +0 -1
  222. package/.next/standalone/platform/services/mcctl-console/.next/static/css/2579b9365591037f.css +0 -1
  223. package/.next/standalone/platform/services/mcctl-console/.next/static/media/0ea4f4df910e6120-s.woff2 +0 -0
  224. package/.next/standalone/platform/services/mcctl-console/.next/static/media/1f160ec2cb9962ef-s.woff2 +0 -0
  225. package/.next/standalone/platform/services/mcctl-console/.next/static/media/739c2d8941231bb4-s.p.woff2 +0 -0
  226. package/.next/standalone/platform/services/mcctl-console/.next/static/media/ad8a7e2c3c2c120b-s.woff2 +0 -0
  227. package/.next/standalone/platform/services/mcctl-console/.next/static/media/cde148027b808b99-s.woff2 +0 -0
  228. package/.next/standalone/platform/services/mcctl-console/.next/static/media/e61ae719f7cc4155-s.woff2 +0 -0
  229. package/.next/static/chunks/1047-1957808ef6d146f3.js +0 -1
  230. package/.next/static/chunks/1099-fa64c7b90813b0a5.js +0 -1
  231. package/.next/static/chunks/212-b904d9ae152f2360.js +0 -1
  232. package/.next/static/chunks/2701-385dbd7376f5851d.js +0 -1
  233. package/.next/static/chunks/2724-6be0c6be94353443.js +0 -1
  234. package/.next/static/chunks/392-8c54ddef9482164b.js +0 -1
  235. package/.next/static/chunks/4187-07672ba5a9f76f7c.js +0 -1
  236. package/.next/static/chunks/4219-a84afcb66908141b.js +0 -1
  237. package/.next/static/chunks/5381-d66dae5d5171cd57.js +0 -1
  238. package/.next/static/chunks/5787-04cc23df05f9da2e.js +0 -1
  239. package/.next/static/chunks/6039-38b0b8c06d25892e.js +0 -1
  240. package/.next/static/chunks/6645-9bcc9a0f9cd2fdc9.js +0 -1
  241. package/.next/static/chunks/6646-c5d039d1ad306467.js +0 -1
  242. package/.next/static/chunks/674-096e0376c367d751.js +0 -1
  243. package/.next/static/chunks/682-6192991ddec396b8.js +0 -1
  244. package/.next/static/chunks/6909-9750e61adcf6f5e5.js +0 -1
  245. package/.next/static/chunks/7965-420dbb1f781fdc83.js +0 -1
  246. package/.next/static/chunks/8233-0fdf0ee81a8cadce.js +0 -1
  247. package/.next/static/chunks/837-f4fbf77c24343b1f.js +0 -1
  248. package/.next/static/chunks/8738-25eee78e0dfd0adf.js +0 -1
  249. package/.next/static/chunks/9949-2daeb31bdedf25c7.js +0 -1
  250. package/.next/static/chunks/app/(main)/audit-logs/page-c52171f3de12db63.js +0 -1
  251. package/.next/static/chunks/app/(main)/players/page-c4760429d9828ad3.js +0 -1
  252. package/.next/static/chunks/app/(main)/servers/[name]/console/page-a0050b5b439d954f.js +0 -1
  253. package/.next/static/chunks/app/(main)/servers/[name]/page-f82acaf60a615953.js +0 -1
  254. package/.next/static/chunks/app/(main)/settings/page-94ebb6f110d7cba4.js +0 -1
  255. package/.next/static/chunks/app/(main)/worlds/page-a194d5d6a77d7e06.js +0 -1
  256. package/.next/static/chunks/app/layout-37a5eb78e96aa17e.js +0 -1
  257. package/.next/static/chunks/app/login/page-b7ec94d60aae14ce.js +0 -1
  258. package/.next/static/chunks/app/signup/page-6f03571bb9914130.js +0 -1
  259. package/.next/static/css/2579b9365591037f.css +0 -1
  260. package/.next/static/media/0ea4f4df910e6120-s.woff2 +0 -0
  261. package/.next/static/media/1f160ec2cb9962ef-s.woff2 +0 -0
  262. package/.next/static/media/739c2d8941231bb4-s.p.woff2 +0 -0
  263. package/.next/static/media/ad8a7e2c3c2c120b-s.woff2 +0 -0
  264. package/.next/static/media/cde148027b808b99-s.woff2 +0 -0
  265. package/.next/static/media/e61ae719f7cc4155-s.woff2 +0 -0
  266. /package/.next/standalone/platform/services/mcctl-console/.next/static/{S1X5jEkA1d_pSlIMuZWrE → ojSswOX1mWw27ewVtDT2w}/_buildManifest.js +0 -0
  267. /package/.next/standalone/platform/services/mcctl-console/.next/static/{S1X5jEkA1d_pSlIMuZWrE → ojSswOX1mWw27ewVtDT2w}/_ssgManifest.js +0 -0
  268. /package/.next/static/{S1X5jEkA1d_pSlIMuZWrE → ojSswOX1mWw27ewVtDT2w}/_buildManifest.js +0 -0
  269. /package/.next/static/{S1X5jEkA1d_pSlIMuZWrE → ojSswOX1mWw27ewVtDT2w}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[278,2666],{59616:function(e,t,n){Promise.resolve().then(n.bind(n,35862))},35862:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return nk}});var r=n(94655),s=n(35106),a=n(74228),l=n(31358),i=n(7281),o=n(30417),c=n(79983),d=n(81071),u=n(93017),x=n(10721),p=n(628),h=n(41565),m=n(31317),y=n(88812),f=n(7178),v=n(17820),g=n(73424),b=n(99770),j=n(62508),Z=n(5682),C=n(76678),w=n(97436),S=n(84840),k=n(76492),R=n(10117),P=n(5501),T=n(37809),I=n(21111),F=n(17978),z=n(89573),W=n(96292),O=n(33104),N=n(25333),D=n(52082),A=n(69123),M=n(83855),E=n(44059),L=n(71185),q=n(30165),U=n(97293),K=n(11259),B=n(66615),V=n(89161),H=n(34071),Q=n(4405);function G(e){let{value:t,unit:n,label:s,icon:a,progress:l,progressMax:o,color:c="#1bd96a"}=e;return(0,r.jsxs)(p.Z,{"data-testid":"resource-stat-card",sx:{p:2.5,bgcolor:"background.paper",border:"1px solid",borderColor:"divider",borderRadius:3},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:2},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"baseline",gap:.75,flexWrap:"wrap",minWidth:0},children:[(0,r.jsx)(m.Z,{variant:"h4",component:"span",sx:{fontWeight:700,color:"text.primary",letterSpacing:"-0.5px"},children:t}),(0,r.jsx)(m.Z,{variant:"body2",component:"span",sx:{color:"text.secondary",fontWeight:500},children:n})]}),(0,r.jsx)(i.Z,{sx:{color:"text.secondary",flexShrink:0},children:a})]}),(0,r.jsx)(m.Z,{variant:"body2",sx:{color:"text.secondary",fontWeight:500,mt:.5},children:s}),(0,r.jsx)(Q.Z,{variant:"determinate",value:Math.min(l/o*100,100),sx:{mt:1,height:6,borderRadius:1.5,bgcolor:"#2a2d3a","& .MuiLinearProgress-bar":{borderRadius:1.5,background:"linear-gradient(90deg, ".concat(c," 0%, ").concat(c,"cc 100%)")}}})]})}var J=n(163),_=n(73660),X=n(90158),$=n(58347),Y=n(95511),ee=n(46725),et=n(26577),en=n(56813),er=n(26892),es=n(84509);function ea(e){var t;let{serverName:n}=e,{data:s,isLoading:a,error:l}=(0,es.HZ)(n,{limit:20});if(a)return(0,r.jsx)(i.Z,{children:[void 0,void 0,void 0,void 0,void 0].map((e,t)=>(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:2,py:1.5},children:[(0,r.jsx)(x.Z,{variant:"rounded",width:60,height:24}),(0,r.jsx)(x.Z,{variant:"text",width:"60%"}),(0,r.jsx)(x.Z,{variant:"text",width:50})]},t))});if(l)return(0,r.jsxs)(d.Z,{severity:"error",children:["Failed to load activity: ",l.message]});let c=null!==(t=null==s?void 0:s.logs)&&void 0!==t?t:[];if(0===c.length)return(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{py:4,textAlign:"center"},children:"No activity recorded for this server yet."});let u="/audit-logs?targetType=server&targetName=".concat(encodeURIComponent(n));return(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(X.Z,{sx:{py:0},children:c.map(e=>{var t;return(0,r.jsx)($.ZP,{sx:{px:0,py:1.5,"&:not(:last-child)":{borderBottom:"1px solid",borderColor:"divider"}},children:(0,r.jsx)(g.Z,{primary:(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(en.I,{action:e.action,size:"small"}),(0,r.jsxs)(m.Z,{variant:"body2",color:"text.secondary",children:["by ",e.actor.replace("api:","").replace("cli:","")]}),(0,r.jsx)(er.c,{status:e.status,size:"small"})]}),secondary:(0,r.jsx)(Y.Z,{title:(t=e.timestamp,new Intl.DateTimeFormat(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"}).format(new Date(t))),arrow:!0,children:(0,r.jsx)(m.Z,{variant:"caption",component:"span",color:"text.disabled",children:function(e){let t=new Date,n=new Date(e),r=Math.floor((t.getTime()-n.getTime())/6e4),s=Math.floor(r/60);return r<1?"just now":r<60?"".concat(r,"m ago"):s<24?"".concat(s,"h ago"):"".concat(Math.floor(s/24),"d ago")}(e.timestamp)})})})},e.id)})}),(0,r.jsx)(i.Z,{sx:{mt:2,textAlign:"center"},children:(0,r.jsx)(o.Z,{component:ee.default,href:u,size:"small",endIcon:(0,r.jsx)(et.Z,{}),sx:{textTransform:"none"},children:"View Full History"})})]})}var el=n(37530),ei=n(84420),eo=n(46121),ec=n(84775),ed=n(92666),eu=n(70115),ex=n(70603),ep=n(32366),eh=n(5942),em=n(25523);function ey(e){let{serverName:t}=e,{data:n,isLoading:a}=(0,ed.Js)(t),l=(0,ed.Bx)(),[x,y]=(0,s.useState)([]),[f,v]=(0,s.useState)(!1),[g,b]=(0,s.useState)(!1),[j,Z]=(0,s.useState)(""),[C,S]=(0,s.useState)(""),[k,R]=(0,s.useState)(!1),[P,T]=(0,s.useState)({open:!1,message:"",severity:"success"});(0,s.useEffect)(()=>{(null==n?void 0:n.customHostnames)&&(y(n.customHostnames),v(!1),R(!1))},[n]);let F=e=>{let t=e.trim().toLowerCase();return t?t.length>253?"Domain exceeds 253 characters":/^[a-z0-9]([a-z0-9\-.]*[a-z0-9])?$/.test(t)?t.endsWith(".local")?"Cannot use .local system domain":t.endsWith(".nip.io")?"Cannot use .nip.io system domain":x.includes(t)?"Domain already exists":"":"Invalid domain format":"Domain cannot be empty"},z=()=>{let e=j.trim().toLowerCase(),t=F(e);if(t){S(t);return}y(t=>[...t,e]),Z(""),S(""),b(!1),v(!0)},W=e=>{y(t=>t.filter(t=>t!==e)),v(!0)},O=async()=>{try{await l.mutateAsync({serverName:t,customHostnames:x}),v(!1),R(!0),T({open:!0,message:"Hostnames saved. Container recreation required to apply changes.",severity:"warning"})}catch(e){T({open:!0,message:e instanceof Error?e.message:"Failed to save hostnames",severity:"error"})}},D=()=>{b(!1),Z(""),S("")};return a?(0,r.jsx)(p.Z,{sx:{mb:3,borderRadius:3},children:(0,r.jsx)(h.Z,{children:(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,r.jsx)(u.Z,{size:24})})})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.Z,{sx:{mb:3,borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,r.jsx)(em.Z,{color:"primary"}),(0,r.jsx)(m.Z,{variant:"h6",fontWeight:600,children:"Hostnames / Domains"})]}),(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Manage hostnames used by mc-router to route connections to this server."}),(0,r.jsx)(A.Z,{sx:{mb:3}}),(null==n?void 0:n.systemHostnames)&&n.systemHostnames.length>0&&(0,r.jsxs)(i.Z,{sx:{mb:3},children:[(0,r.jsx)(m.Z,{variant:"subtitle2",color:"text.secondary",sx:{mb:1},children:"System Hostnames (read-only)"}),(0,r.jsx)(eu.Z,{direction:"row",flexWrap:"wrap",gap:1,children:n.systemHostnames.map(e=>(0,r.jsx)(N.Z,{icon:(0,r.jsx)(ex.Z,{sx:{fontSize:16}}),label:e.hostname,title:e.description,variant:"outlined",color:"default",size:"small"},e.hostname))})]}),(0,r.jsxs)(i.Z,{sx:{mb:2},children:[(0,r.jsx)(m.Z,{variant:"subtitle2",color:"text.secondary",sx:{mb:1},children:"Custom Domains"}),0===x.length&&!g&&(0,r.jsx)(m.Z,{variant:"body2",color:"text.disabled",sx:{mb:1},children:"No custom domains configured."}),(0,r.jsx)(eu.Z,{spacing:1,children:x.map(e=>(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",py:.5,px:1.5,borderRadius:1,bgcolor:"action.hover"},children:[(0,r.jsx)(m.Z,{variant:"body2",children:e}),(0,r.jsx)(c.Z,{size:"small",color:"error",onClick:()=>W(e),title:"Remove domain",children:(0,r.jsx)(I.Z,{fontSize:"small"})})]},e))}),g?(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"flex-start",gap:1,mt:1},children:[(0,r.jsx)(w.Z,{size:"small",placeholder:"e.g. play.example.com",value:j,onChange:e=>{Z(e.target.value),S("")},onKeyDown:e=>{"Enter"===e.key&&z(),"Escape"===e.key&&D()},error:!!C,helperText:C,autoFocus:!0,sx:{flex:1}}),(0,r.jsx)(o.Z,{size:"small",variant:"contained",onClick:z,children:"Add"}),(0,r.jsx)(c.Z,{size:"small",onClick:D,children:(0,r.jsx)(L.Z,{fontSize:"small"})})]}):(0,r.jsx)(o.Z,{size:"small",startIcon:(0,r.jsx)(ep.Z,{}),onClick:()=>b(!0),sx:{mt:1},children:"Add Domain"})]}),k&&(0,r.jsxs)(d.Z,{severity:"warning",sx:{mb:2},children:["Container recreation is required for hostname changes to take effect. Run ",(0,r.jsx)("code",{children:"docker compose up -d"})," or restart the server from the dashboard."]}),(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,r.jsx)(o.Z,{variant:"contained",size:"small",startIcon:(0,r.jsx)(eh.Z,{}),onClick:O,disabled:!f||l.isPending,children:l.isPending?"Saving...":"Save Hostnames"})})]})}),(0,r.jsx)(el.Z,{open:P.open,autoHideDuration:6e3,onClose:()=>T({...P,open:!1}),anchorOrigin:{vertical:"bottom",horizontal:"right"},children:(0,r.jsx)(d.Z,{onClose:()=>T({...P,open:!1}),severity:P.severity,sx:{width:"100%"},children:P.message})})]})}var ef=n(87716),ev=n(81960),eg=n(62328),eb=n(29793),ej=n(75726),eZ=n(40064),eC=n(38393),ew=n(28058),eS=n(42730);function ek(e){var t;let{field:n,value:a,onChange:l}=e,[o,d]=(0,s.useState)(!1),u=null!==(t=n.columns)&&void 0!==t?t:6;return(0,r.jsx)(S.ZP,{item:!0,xs:12,sm:u,children:(()=>{var e,t,s,u,x,p;switch(n.type){case"boolean":return(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(eZ.Z,{control:(0,r.jsx)(eC.Z,{checked:null!=a&&a,onChange:e=>l(n.key,e.target.checked)}),label:n.label}),n.helperText&&(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",sx:{ml:4,display:"block"},children:n.helperText})]});case"select":return(0,r.jsxs)(eb.Z,{fullWidth:!0,size:"small",children:[(0,r.jsx)(ej.Z,{children:n.label}),(0,r.jsx)(eg.Z,{value:null!==(u=null!=a?a:null===(t=n.options)||void 0===t?void 0:null===(e=t[0])||void 0===e?void 0:e.value)&&void 0!==u?u:"",label:n.label,onChange:e=>l(n.key,e.target.value),children:null===(s=n.options)||void 0===s?void 0:s.map(e=>(0,r.jsx)(f.Z,{value:e.value,children:e.label},e.value))})]});case"number":return(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",type:"number",label:n.label,value:null!=a?a:"",onChange:e=>{let t=e.target.value;l(n.key,""===t?void 0:parseInt(t,10))},inputProps:{min:null===(x=n.validation)||void 0===x?void 0:x.min,max:null===(p=n.validation)||void 0===p?void 0:p.max},helperText:n.helperText,InputProps:n.unit?{endAdornment:(0,r.jsx)(D.Z,{position:"end",children:(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",children:n.unit})})}:void 0});case"password":return(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",type:o?"text":"password",label:n.label,value:null!=a?a:"",onChange:e=>l(n.key,e.target.value),helperText:n.helperText,InputProps:{endAdornment:(0,r.jsx)(D.Z,{position:"end",children:(0,r.jsx)(c.Z,{size:"small",onClick:()=>d(!o),edge:"end",children:o?(0,r.jsx)(eS.Z,{fontSize:"small"}):(0,r.jsx)(ew.Z,{fontSize:"small"})})})}});default:return(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",label:n.label,value:null!=a?a:"",onChange:e=>l(n.key,e.target.value),helperText:n.helperText})}})()})}function eR(e){let{section:t,values:n,onChange:a}=e,[l,c]=(0,s.useState)(!1),d=t.icon,u=t.advancedFields.length;return(0,r.jsx)(p.Z,{sx:{mb:3,borderRadius:3},children:(0,r.jsxs)(h.Z,{sx:{p:3},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:1},children:[(0,r.jsx)(d,{sx:{fontSize:22,color:"primary.main"}}),(0,r.jsx)(m.Z,{variant:"h6",fontWeight:600,children:t.title})]}),(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:t.description}),(0,r.jsx)(A.Z,{sx:{mb:3}}),(0,r.jsx)(S.ZP,{container:!0,spacing:2.5,children:t.essentialFields.map(e=>(0,r.jsx)(ek,{field:e,value:n[e.key],onChange:a},e.key))}),u>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(o.Z,{fullWidth:!0,variant:"text",onClick:()=>c(!l),endIcon:(0,r.jsx)(ev.Z,{sx:{transform:l?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.3s"}}),sx:{mt:2.5,justifyContent:"flex-start",color:"text.secondary",textTransform:"none",py:1,"&:hover":{bgcolor:"action.hover"}},children:[l?"Hide":"Show"," Advanced Settings (",u,")"]}),(0,r.jsx)(ef.Z,{in:l,timeout:300,children:(0,r.jsx)(i.Z,{sx:{pt:2,borderTop:"1px dashed",borderColor:"divider"},children:(0,r.jsx)(S.ZP,{container:!0,spacing:2.5,children:t.advancedFields.map(e=>(0,r.jsx)(ek,{field:e,value:n[e.key],onChange:a},e.key))})})})]})]})})}var eP=n(12550);function eT(e){let{hasChanges:t,changedCount:n,hasRestartChanges:s,restartFields:a=[],isSaving:l,onSave:c,onDiscard:d}=e;return(0,r.jsx)(eP.Z,{direction:"up",in:t,mountOnEnter:!0,unmountOnExit:!0,children:(0,r.jsxs)(i.Z,{sx:{position:"sticky",bottom:0,zIndex:1100,bgcolor:"background.paper",borderTop:2,borderColor:"primary.main",px:{xs:2,sm:3},py:2,mx:{xs:-2,sm:-3},mb:{xs:-2,sm:-3},boxShadow:"0 -4px 20px rgba(0,0,0,0.4)",display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:1},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[s&&(0,r.jsx)(ec.Z,{sx:{color:"warning.main",fontSize:20}}),(0,r.jsxs)(m.Z,{variant:"body2",fontWeight:600,children:[n," unsaved change",1!==n?"s":""]}),s&&(0,r.jsxs)(m.Z,{variant:"caption",color:"warning.main",children:["(",a.length>0?a.join(", "):"some fields"," require restart)"]})]}),(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:1},children:[(0,r.jsx)(o.Z,{variant:"text",color:"inherit",onClick:d,disabled:l,children:"Discard"}),(0,r.jsx)(o.Z,{variant:"contained",startIcon:l?(0,r.jsx)(u.Z,{size:16,color:"inherit"}):(0,r.jsx)(eh.Z,{}),onClick:c,disabled:l,children:l?"Saving...":"Save Changes (".concat(n,")")})]})]})})}function eI(e){let{open:t,changedFields:n,onSaveOnly:s,onSaveAndRestart:a,onCancel:l}=e;return(0,r.jsxs)(b.Z,{open:t,onClose:l,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsx)(j.Z,{children:(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(ec.Z,{color:"warning"}),(0,r.jsx)(m.Z,{variant:"h6",fontWeight:600,children:"Restart Required"})]})}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsx)(m.Z,{variant:"body1",gutterBottom:!0,children:"The following changes require a server restart to take effect:"}),(0,r.jsx)(X.Z,{dense:!0,children:n.map(e=>(0,r.jsx)($.ZP,{sx:{py:0},children:(0,r.jsx)(g.Z,{primary:e,primaryTypographyProps:{variant:"body2"}})},e))})]}),(0,r.jsxs)(C.Z,{children:[(0,r.jsx)(o.Z,{onClick:l,color:"inherit",children:"Cancel"}),(0,r.jsx)(o.Z,{onClick:s,variant:"outlined",children:"Save Only"}),(0,r.jsx)(o.Z,{onClick:a,variant:"contained",color:"warning",children:"Save & Restart"})]})]})}var eF=n(1217),ez=n(84974),eW=n(23482),eO=n(61244),eN=n(87739);let eD=[{id:"gameplay",icon:eF.Z,title:"Gameplay",description:"Core game rules and player experience settings.",essentialFields:[{key:"difficulty",label:"Difficulty",type:"select",options:[{value:"peaceful",label:"Peaceful"},{value:"easy",label:"Easy"},{value:"normal",label:"Normal"},{value:"hard",label:"Hard"}]},{key:"gameMode",label:"Game Mode",type:"select",options:[{value:"survival",label:"Survival"},{value:"creative",label:"Creative"},{value:"adventure",label:"Adventure"},{value:"spectator",label:"Spectator"}]},{key:"maxPlayers",label:"Max Players",type:"number",validation:{min:1,max:1e3}},{key:"pvp",label:"Enable PvP",type:"boolean",helperText:"Allow players to damage each other"}],advancedFields:[{key:"forceGamemode",label:"Force Game Mode",type:"boolean",helperText:"Force game mode when players join"},{key:"hardcore",label:"Hardcore",type:"boolean",helperText:"One life only - world deleted on death"},{key:"allowFlight",label:"Allow Flight",type:"boolean",helperText:"Allow flight in survival mode"},{key:"allowNether",label:"Allow Nether",type:"boolean",helperText:"Enable Nether portal access"},{key:"enableCommandBlock",label:"Command Blocks",type:"boolean",helperText:"Enable command block functionality"},{key:"spawnProtection",label:"Spawn Protection",type:"number",helperText:"Radius around spawn (0 = disabled)",unit:"blocks",validation:{min:0,max:256}},{key:"spawnAnimals",label:"Spawn Animals",type:"boolean",helperText:"Spawn passive mobs (cows, pigs, etc.)"},{key:"spawnMonsters",label:"Spawn Monsters",type:"boolean",helperText:"Spawn hostile mobs (zombies, creepers, etc.)"},{key:"spawnNpcs",label:"Spawn NPCs",type:"boolean",helperText:"Spawn villagers and wandering traders"}]},{id:"world",icon:ez.Z,title:"World",description:"World generation and server identity settings.",essentialFields:[{key:"motd",label:"MOTD (Message of the Day)",type:"string",helperText:"Displayed in the server list",columns:12},{key:"level",label:"World Name",type:"string",helperText:"Save folder name",restartRequired:!0},{key:"levelType",label:"Level Type",type:"select",restartRequired:!0,options:[{value:"default",label:"Default"},{value:"flat",label:"Flat"},{value:"largeBiomes",label:"Large Biomes"},{value:"amplified",label:"Amplified"},{value:"buffet",label:"Buffet"}]},{key:"seed",label:"World Seed",type:"string",helperText:"Only affects new world generation",restartRequired:!0}],advancedFields:[{key:"generateStructures",label:"Generate Structures",type:"boolean",helperText:"Generate villages, temples, etc."},{key:"maxWorldSize",label:"Max World Size",type:"number",unit:"blocks",helperText:"Maximum world radius",validation:{min:1,max:29999984}},{key:"icon",label:"Server Icon URL",type:"string",helperText:"64x64 PNG image URL",columns:12}]},{id:"security",icon:eW.Z,title:"Security",description:"Authentication and access control settings.",essentialFields:[{key:"onlineMode",label:"Online Mode (Mojang Auth)",type:"boolean",helperText:"Disable to allow cracked clients (not recommended)",restartRequired:!0},{key:"enableWhitelist",label:"Enable Whitelist",type:"boolean",helperText:"Only whitelisted players can join",restartRequired:!0}],advancedFields:[{key:"enforceWhitelist",label:"Enforce Whitelist",type:"boolean",helperText:"Kick non-whitelisted players already online",restartRequired:!0},{key:"enforceSecureProfile",label:"Enforce Secure Profile",type:"boolean",helperText:"Require signed chat messages from players",restartRequired:!0}]},{id:"performance",icon:q.Z,title:"Performance & JVM",description:"Memory, view distance, and JVM optimization settings.",essentialFields:[{key:"memory",label:"Memory",type:"string",helperText:"e.g., 2G, 4G, 8G",restartRequired:!0},{key:"useAikarFlags",label:"Aikar's Flags",type:"boolean",helperText:"Optimized GC flags for Paper/Spigot",restartRequired:!0},{key:"viewDistance",label:"View Distance",type:"number",unit:"chunks",validation:{min:2,max:32}}],advancedFields:[{key:"simulationDistance",label:"Simulation Distance",type:"number",unit:"chunks",validation:{min:3,max:32}},{key:"maxTickTime",label:"Max Tick Time",type:"number",unit:"ms",helperText:"-1 to disable watchdog",validation:{min:-1}},{key:"initMemory",label:"Initial Heap",type:"string",helperText:"e.g., 1G (overrides Memory)",restartRequired:!0},{key:"maxMemory",label:"Max Heap",type:"string",helperText:"e.g., 8G (overrides Memory)",restartRequired:!0},{key:"jvmXxOpts",label:"JVM -XX Options",type:"string",helperText:"Additional -XX JVM flags",restartRequired:!0,columns:12}]},{id:"autopause",icon:eO.Z,title:"Auto-pause / Auto-stop",description:"Automatically pause or stop when no players are connected.",essentialFields:[{key:"enableAutopause",label:"Enable Auto-pause",type:"boolean",helperText:"Pause process when no players connected",restartRequired:!0},{key:"autopauseTimeoutEst",label:"Pause Timeout",type:"number",unit:"seconds",helperText:"Wait time after last player leaves",validation:{min:0}}],advancedFields:[{key:"autopauseTimeoutInit",label:"Init Timeout",type:"number",unit:"seconds",helperText:"Timeout after start without connections",validation:{min:0}},{key:"autopausePeriod",label:"Check Period",type:"number",unit:"seconds",helperText:"Status check interval",validation:{min:1}},{key:"enableAutostop",label:"Enable Auto-stop",type:"boolean",helperText:"Stop container when no players connected",restartRequired:!0},{key:"autostopTimeoutEst",label:"Stop Timeout",type:"number",unit:"seconds",helperText:"Wait time before stopping container",validation:{min:0}}]},{id:"system",icon:eN.Z,title:"System",description:"Timezone, resource pack, RCON, and container settings.",essentialFields:[{key:"tz",label:"Timezone",type:"string",helperText:"e.g., Asia/Seoul, UTC",restartRequired:!0},{key:"resourcePack",label:"Resource Pack URL",type:"string",helperText:"Direct download URL for resource pack",columns:12},{key:"enableRcon",label:"Enable RCON",type:"boolean",helperText:"Remote server console access",restartRequired:!0}],advancedFields:[{key:"resourcePackSha1",label:"Resource Pack SHA1",type:"string",helperText:"40-character hex checksum",columns:12},{key:"resourcePackEnforce",label:"Enforce Resource Pack",type:"boolean",helperText:"Kick players who decline"},{key:"resourcePackPrompt",label:"Resource Pack Prompt",type:"string",helperText:"Custom message for resource pack dialog",columns:12},{key:"rconPassword",label:"RCON Password",type:"password",restartRequired:!0},{key:"rconPort",label:"RCON Port",type:"number",validation:{min:1024,max:65535},restartRequired:!0},{key:"stopDuration",label:"Stop Timeout",type:"number",unit:"seconds",helperText:"Graceful shutdown wait time",restartRequired:!0,validation:{min:0}},{key:"uid",label:"User ID (UID)",type:"number",helperText:"Container process UID",restartRequired:!0,validation:{min:0}},{key:"gid",label:"Group ID (GID)",type:"number",helperText:"Container process GID",restartRequired:!0,validation:{min:0}}]}],eA=["memory","initMemory","maxMemory","useAikarFlags","jvmXxOpts","onlineMode","enableWhitelist","enforceWhitelist","enforceSecureProfile","level","seed","levelType","enableAutopause","enableAutostop","enableRcon","rconPassword","rconPort","tz","uid","gid","stopDuration"];function eM(e){let{serverName:t,isRunning:n}=e,{data:a,isLoading:l}=(0,ed.iC)(t),c=(0,ed.MH)(),x=(0,ed.gx)(),y=(0,ed._I)(),[f,v]=(0,s.useState)({}),[g,S]=(0,s.useState)({}),[k,R]=(0,s.useState)(!1),[P,T]=(0,s.useState)(""),[I,F]=(0,s.useState)(!1),[z,W]=(0,s.useState)({open:!1,message:"",severity:"info"});(0,s.useEffect)(()=>{(null==a?void 0:a.config)&&(v(a.config),S(a.config))},[a]);let O=(0,s.useMemo)(()=>{let e=[];for(let t of Object.keys(f))f[t]!==g[t]&&e.push(t);for(let t of Object.keys(g))f[t]===g[t]||e.includes(t)||e.push(t);return e},[f,g]),N=O.length>0,D=O.filter(e=>eA.includes(e)),M=D.length>0,E=(0,s.useCallback)((e,t)=>{v(n=>({...n,[e]:t}))},[]),L=(0,s.useCallback)(()=>{v(g)},[g]),q=(0,s.useCallback)(async e=>{try{let r=await c.mutateAsync({serverName:t,config:f});if(S(r.config),v(r.config),e&&n)try{await y.mutateAsync(t),W({open:!0,message:"Settings saved. Server is restarting...",severity:"warning"})}catch(e){W({open:!0,message:"Settings saved, but server restart failed. Please restart manually.",severity:"error"})}else W({open:!0,message:r.restartRequired?"Settings saved. Restart required for some changes to take effect.":"Settings saved successfully.",severity:r.restartRequired?"warning":"success"})}catch(e){W({open:!0,message:e instanceof Error?e.message:"Failed to save settings",severity:"error"})}finally{F(!1)}},[f,t,n,c,y]),U=(0,s.useCallback)(()=>{M&&n?F(!0):q(!1)},[M,n,q]),K=async()=>{if("RESET"!==P){W({open:!0,message:"Please type RESET to confirm",severity:"warning"});return}try{await x.mutateAsync(t),W({open:!0,message:"World reset successfully",severity:"success"}),R(!1),T("")}catch(e){W({open:!0,message:e instanceof Error?e.message:"Failed to reset world",severity:"error"})}};return l?(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,r.jsx)(u.Z,{})}):(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(ey,{serverName:t}),eD.map(e=>(0,r.jsx)(eR,{section:e,values:f,onChange:E},e.id)),(0,r.jsx)(p.Z,{sx:{borderRadius:3,borderColor:"error.main",borderWidth:1,borderStyle:"solid"},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(m.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,color:"error",children:"Danger Zone"}),(0,r.jsx)(A.Z,{sx:{mb:3}}),(0,r.jsxs)(i.Z,{sx:{mb:3},children:[(0,r.jsx)(m.Z,{variant:"subtitle1",fontWeight:600,gutterBottom:!0,children:"Reset World"}),(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"This will permanently delete the current world and generate a new one. This action cannot be undone."}),(0,r.jsx)(o.Z,{variant:"outlined",color:"error",startIcon:(0,r.jsx)(ec.Z,{}),onClick:()=>R(!0),disabled:n,children:"Reset World"}),n&&(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",sx:{ml:2},children:"Stop the server first"})]})]})}),(0,r.jsx)(eT,{hasChanges:N,changedCount:O.length,hasRestartChanges:M,restartFields:D,isSaving:c.isPending,onSave:U,onDiscard:L}),(0,r.jsx)(eI,{open:I,changedFields:D,onSaveOnly:()=>q(!1),onSaveAndRestart:()=>q(!0),onCancel:()=>F(!1)}),(0,r.jsxs)(b.Z,{open:k,onClose:()=>R(!1),maxWidth:"sm",fullWidth:!0,children:[(0,r.jsx)(j.Z,{children:(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(ei.Z,{color:"error"}),(0,r.jsx)(m.Z,{variant:"h6",fontWeight:600,children:"Reset World"})]})}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsxs)(m.Z,{variant:"body1",gutterBottom:!0,children:["This will permanently delete the world for ",(0,r.jsx)("strong",{children:t})," and generate a new one."]}),(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",gutterBottom:!0,children:"This action cannot be undone. All player progress and builds will be lost."}),(0,r.jsx)(w.Z,{fullWidth:!0,label:"Type RESET to confirm",value:P,onChange:e=>T(e.target.value),sx:{mt:3},autoFocus:!0})]}),(0,r.jsxs)(C.Z,{children:[(0,r.jsx)(o.Z,{onClick:()=>R(!1),children:"Cancel"}),(0,r.jsx)(o.Z,{variant:"contained",color:"error",onClick:K,disabled:"RESET"!==P||x.isPending,startIcon:x.isPending?(0,r.jsx)(u.Z,{size:16}):(0,r.jsx)(eo.Z,{}),children:x.isPending?"Resetting...":"Reset World"})]})]}),(0,r.jsx)(el.Z,{open:z.open,autoHideDuration:6e3,onClose:()=>W({...z,open:!1}),anchorOrigin:{vertical:"bottom",horizontal:"right"},children:(0,r.jsx)(d.Z,{onClose:()=>W({...z,open:!1}),severity:z.severity,sx:{width:"100%"},children:z.message})})]})}var eE=n(86702),eL=n(47606),eq=n(407),eU=n(56056),eK=n(11597),eB=n(59602);let eV={admin:{label:"Owner",color:"primary",variant:"filled"},manage:{label:"Operator",color:"info",variant:"outlined"},view:{label:"Viewer",color:"default",variant:"outlined"}};function eH(e){let{permission:t,size:n="medium"}=e,s=eV[t];return(0,r.jsx)(N.Z,{label:s.label,color:s.color,variant:s.variant,size:n})}var eQ=n(99046),eG=n(68038),eJ=n(34080),e_=n(39181),eX=n(5632),e$=n(58919),eY=n(20367),e0=n(42936);function e1(e){var t,n;let{open:a,onClose:l,serverId:c}=e,[x,p]=(0,s.useState)(""),[h,y]=(0,s.useState)(null),[f,v]=(0,s.useState)("view"),{data:g,isLoading:S}=(n={enabled:a},(0,eX.a)({queryKey:["users","search",x],queryFn:()=>(0,e0.SC)("/api/users?q=".concat(encodeURIComponent(x))),enabled:(null==n?void 0:n.enabled)!==!1&&x.length>=2,staleTime:3e4})),k=function(){let e=(0,e$.NL)();return(0,eY.D)({mutationFn:e=>(0,e0.SC)("/api/user-servers",{method:"POST",body:JSON.stringify(e)}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["user-servers",n.serverId]}),e.invalidateQueries({queryKey:["user-servers"]})}})}(),R=(0,s.useMemo)(()=>{var e;return null!==(e=null==g?void 0:g.users)&&void 0!==e?e:[]},[g]),P=()=>{p(""),y(null),v("view"),k.reset(),l()};return(0,r.jsxs)(b.Z,{open:a,onClose:P,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderRadius:3}},children:[(0,r.jsx)(j.Z,{sx:{fontWeight:600},children:"Add User Access"}),(0,r.jsxs)(Z.Z,{sx:{display:"flex",flexDirection:"column",gap:3,pt:"8px !important"},children:[k.isError&&(0,r.jsx)(d.Z,{severity:"error",sx:{mb:1},children:(null===(t=k.error)||void 0===t?void 0:t.message)||"Failed to grant access"}),(0,r.jsx)(eQ.Z,{options:R,getOptionLabel:e=>e.name||e.email,isOptionEqualToValue:(e,t)=>e.id===t.id,value:h,onChange:(e,t)=>y(t),inputValue:x,onInputChange:(e,t)=>p(t),loading:S,filterOptions:e=>e,noOptionsText:x.length<2?"Type at least 2 characters":"No users found",renderInput:e=>(0,r.jsx)(w.Z,{...e,label:"Search User",placeholder:"Search by name or email...",InputProps:{...e.InputProps,endAdornment:(0,r.jsxs)(r.Fragment,{children:[S&&(0,r.jsx)(u.Z,{size:20}),e.InputProps.endAdornment]})}}),renderOption:(e,t)=>{var n,s,a;let{key:l,...o}=e;return(0,r.jsxs)(i.Z,{component:"li",...o,sx:{display:"flex",gap:1.5,py:1},children:[(0,r.jsx)(eE.Z,{src:null!==(a=t.image)&&void 0!==a?a:void 0,sx:{width:32,height:32,bgcolor:"primary.main",fontSize:14},children:((null===(n=t.name)||void 0===n?void 0:n[0])||(null===(s=t.email)||void 0===s?void 0:s[0])||"?").toUpperCase()}),(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(m.Z,{variant:"body2",fontWeight:500,children:t.name||"Unknown"}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",children:t.email})]})]},l)}}),(0,r.jsxs)(eb.Z,{children:[(0,r.jsx)(eG.Z,{sx:{fontWeight:500,mb:1},children:"Permission Level"}),(0,r.jsxs)(eJ.Z,{value:f,onChange:e=>v(e.target.value),children:[(0,r.jsx)(eZ.Z,{value:"view",control:(0,r.jsx)(e_.Z,{size:"small"}),label:(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(m.Z,{variant:"body2",fontWeight:500,children:"Viewer"}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",children:"Can view server status and logs"})]})}),(0,r.jsx)(eZ.Z,{value:"manage",control:(0,r.jsx)(e_.Z,{size:"small"}),label:(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(m.Z,{variant:"body2",fontWeight:500,children:"Operator"}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",children:"Can start, stop, and configure the server"})]})}),(0,r.jsx)(eZ.Z,{value:"admin",control:(0,r.jsx)(e_.Z,{size:"small"}),label:(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(m.Z,{variant:"body2",fontWeight:500,children:"Owner"}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",children:"Full control including managing other users"})]})})]})]})]}),(0,r.jsxs)(C.Z,{sx:{px:3,pb:2},children:[(0,r.jsx)(o.Z,{onClick:P,color:"inherit",children:"Cancel"}),(0,r.jsx)(o.Z,{onClick:()=>{h&&k.mutate({userId:h.id,serverId:c,permission:f},{onSuccess:P})},variant:"contained",disabled:!h||k.isPending,sx:{borderRadius:2},children:k.isPending?"Adding...":"Add User"})]})]})}function e2(e){var t,n;let{serverId:a}=e,{data:l,isLoading:u,error:b}=(0,eX.a)({queryKey:["user-servers",a],queryFn:()=>(0,e0.SC)("/api/user-servers?serverId=".concat(encodeURIComponent(a))),enabled:!!a}),j=function(){let e=(0,e$.NL)();return(0,eY.D)({mutationFn:e=>{let{id:t,permission:n}=e;return(0,e0.SC)("/api/user-servers/".concat(encodeURIComponent(t)),{method:"PATCH",body:JSON.stringify({permission:n})})},onSuccess:()=>{e.invalidateQueries({queryKey:["user-servers"]})}})}(),Z=function(){let e=(0,e$.NL)();return(0,eY.D)({mutationFn:e=>(0,e0.SC)("/api/user-servers/".concat(encodeURIComponent(e)),{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["user-servers"]})}})}(),[C,w]=(0,s.useState)(!1),[S,k]=(0,s.useState)(null),[R,P]=(0,s.useState)(null),I=(e,t)=>{k(e.currentTarget),P(t)},F=()=>{k(null),P(null)},z=e=>{if(!R||R.permission===e){F();return}j.mutate({id:R.id,permission:e},{onSettled:F})},W=null!==(t=null==l?void 0:l.users.filter(e=>"admin"===e.permission).length)&&void 0!==t?t:0,O=(null==R?void 0:R.permission)==="admin"&&W<=1;if(u)return(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,r.jsx)(x.Z,{variant:"text",width:"30%",height:32}),(0,r.jsx)(x.Z,{variant:"rounded",width:120,height:36,sx:{borderRadius:2}})]}),(0,r.jsx)(A.Z,{sx:{mb:2}}),[0,1,2].map(e=>(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2,py:1.5,borderBottom:"1px solid",borderColor:"divider"},children:[(0,r.jsx)(x.Z,{variant:"circular",width:40,height:40}),(0,r.jsxs)(i.Z,{sx:{flex:1},children:[(0,r.jsx)(x.Z,{variant:"text",width:"40%"}),(0,r.jsx)(x.Z,{variant:"text",width:"60%"})]}),(0,r.jsx)(x.Z,{variant:"rounded",width:80,height:28,sx:{borderRadius:10}}),(0,r.jsx)(x.Z,{variant:"circular",width:32,height:32})]},e))]})});if(b)return(0,r.jsxs)(d.Z,{severity:"error",children:["Failed to load access list: ",b.message]});let N=null!==(n=null==l?void 0:l.users)&&void 0!==n?n:[];return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,r.jsx)(m.Z,{variant:"h6",fontWeight:600,children:"Server Access"}),(0,r.jsx)(o.Z,{variant:"contained",size:"small",startIcon:(0,r.jsx)(eL.Z,{}),onClick:()=>w(!0),sx:{borderRadius:2},children:"Add User"})]}),(0,r.jsx)(A.Z,{sx:{mb:1}}),0===N.length?(0,r.jsx)(i.Z,{sx:{py:4,textAlign:"center"},children:(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:"No users have been granted access to this server yet."})}):N.map(e=>{var t,n,s,a,l,o,d,u;return(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2,py:1.5,"&:not(:last-child)":{borderBottom:"1px solid",borderColor:"divider"}},children:[(0,r.jsx)(eE.Z,{src:null!==(u=null===(t=e.user)||void 0===t?void 0:t.image)&&void 0!==u?u:void 0,sx:{width:40,height:40,bgcolor:"primary.main",fontSize:16},children:((null===(s=e.user)||void 0===s?void 0:null===(n=s.name)||void 0===n?void 0:n[0])||(null===(l=e.user)||void 0===l?void 0:null===(a=l.email)||void 0===a?void 0:a[0])||"?").toUpperCase()}),(0,r.jsxs)(i.Z,{sx:{flex:1,minWidth:0},children:[(0,r.jsx)(m.Z,{variant:"body2",fontWeight:500,noWrap:!0,children:(null===(o=e.user)||void 0===o?void 0:o.name)||"Unknown User"}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",noWrap:!0,children:(null===(d=e.user)||void 0===d?void 0:d.email)||e.userId})]}),(0,r.jsx)(eH,{permission:e.permission,size:"small"}),(0,r.jsx)(c.Z,{size:"small",onClick:t=>I(t,e),sx:{color:"text.secondary"},children:(0,r.jsx)(T.Z,{fontSize:"small"})})]},e.id)}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,mt:2,pt:1},children:[(0,r.jsx)(eB.Z,{sx:{fontSize:16,color:"text.disabled"}}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.disabled",children:"Only platform admins and server owners can manage access."})]})]})}),(0,r.jsxs)(y.Z,{anchorEl:S,open:!!S,onClose:F,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},disableScrollLock:!0,children:[(0,r.jsxs)(f.Z,{onClick:()=>z("admin"),disabled:(null==R?void 0:R.permission)==="admin",children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(eq.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Change to Owner"})]}),(0,r.jsxs)(f.Z,{onClick:()=>z("manage"),disabled:(null==R?void 0:R.permission)==="manage"||O,children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(eU.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Change to Operator"})]}),(0,r.jsxs)(f.Z,{onClick:()=>z("view"),disabled:(null==R?void 0:R.permission)==="view"||O,children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(ew.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Change to Viewer"})]}),(0,r.jsx)(A.Z,{}),(0,r.jsxs)(f.Z,{onClick:()=>{R&&Z.mutate(R.id,{onSettled:F})},disabled:O,sx:{color:"error.main"},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(eK.Z,{fontSize:"small",sx:{color:"error.main"}})}),(0,r.jsx)(g.Z,{children:"Remove Access"})]})]}),(0,r.jsx)(e1,{open:C,onClose:()=>w(!1),serverId:a})]})}var e3=n(37228),e6=n(97511);function e4(e){let{label:t,value:n,copyText:s}=e;return(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",py:1},children:[(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:t}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(m.Z,{variant:"body2",sx:{color:s?"text.primary":"text.secondary",wordBreak:"break-all"},children:n}),s&&(0,r.jsx)(e6.q,{text:s,size:16})]})]})}function e5(e){let{serverName:t,hostname:n}=e,{data:s,isLoading:a}=(0,e3.UW)();if(a)return(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(x.Z,{variant:"text",width:"40%",height:28,sx:{mb:1}}),(0,r.jsx)(x.Z,{variant:"rectangular",height:1,sx:{mb:2}}),(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,r.jsx)(x.Z,{variant:"text",width:"30%"}),(0,r.jsx)(x.Z,{variant:"text",width:"40%"})]}),(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,r.jsx)(x.Z,{variant:"text",width:"30%"}),(0,r.jsx)(x.Z,{variant:"text",width:"40%"})]})]})});let l=(null==s?void 0:s.enabled)&&s.servers.length>0,o=null==s?void 0:s.servers.find(e=>e.serverName===t),c=(null==o?void 0:o.playitDomain)||"Not configured",d=!!(null==o?void 0:o.playitDomain);return(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(m.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Connection"}),(0,r.jsx)(A.Z,{sx:{mb:2}}),(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",py:1,gap:1},children:[(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{flexShrink:0},children:"LAN Address"}),n?(0,r.jsx)(i.Z,{sx:{minWidth:0},children:(0,r.jsx)(e6.h,{hostname:n,portSuffix:25565,color:"text.primary",showCopyButton:!0})}):(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:"Not configured"})]}),l&&(0,r.jsx)(e4,{label:"External Address",value:c,copyText:d?c:void 0})]})})}var e8=n(42431),e7=n(76777),e9=n(15761);function te(e){let{serverName:t}=e,{data:n,isLoading:a,error:l}=(0,eX.a)({queryKey:["servers",t,"mods"],queryFn:()=>(0,e0.SC)("/api/servers/".concat(encodeURIComponent(t),"/mods")),enabled:!!t}),x=function(){let e=(0,e$.NL)();return(0,eY.D)({mutationFn:e=>{let{serverName:t,slugs:n,source:r}=e;return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(t),"/mods"),{method:"POST",body:JSON.stringify({slugs:n,source:r})})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"mods"]})}})}(),y=function(){let e=(0,e$.NL)();return(0,eY.D)({mutationFn:e=>{let{serverName:t,slug:n}=e;return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(t),"/mods/").concat(encodeURIComponent(n)),{method:"DELETE"})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"mods"]})}})}(),[f,v]=(0,s.useState)(!1),[g,C]=(0,s.useState)(""),[S,k]=(0,s.useState)(""),[R,P]=(0,s.useState)(!1),[T,F]=(0,s.useState)({open:!1,message:"",severity:"info"}),{data:z,isLoading:W}=function(e,t){let n=new URLSearchParams;return e&&n.set("q",e),(null==t?void 0:t.limit)!=null&&n.set("limit",String(t.limit)),(null==t?void 0:t.offset)!=null&&n.set("offset",String(t.offset)),(0,eX.a)({queryKey:["mods","search",e,null==t?void 0:t.limit,null==t?void 0:t.offset],queryFn:()=>(0,e0.SC)("/api/mods/search?".concat(n)),enabled:(null==t?void 0:t.enabled)!==!1&&!!e.trim()})}(S,{limit:10,enabled:f&&S.length>0});(0,s.useEffect)(()=>{let e=setTimeout(()=>{k(g)},300);return()=>clearTimeout(e)},[g]);let O=(0,s.useCallback)(async e=>{try{await y.mutateAsync({serverName:t,slug:e}),P(!0),F({open:!0,message:"Removed ".concat(e),severity:"success"})}catch(e){F({open:!0,message:e instanceof Error?e.message:"Failed to remove mod",severity:"error"})}},[y,t]),M=(0,s.useCallback)(async e=>{try{await x.mutateAsync({serverName:t,slugs:[e]}),P(!0),F({open:!0,message:"Added ".concat(e),severity:"success"})}catch(e){F({open:!0,message:e instanceof Error?e.message:"Failed to add mod",severity:"error"})}},[x,t]),E=new Set;if(null==n?void 0:n.mods)for(let e of Object.values(n.mods))for(let t of e)E.add(t);if(a)return(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:6},children:(0,r.jsx)(u.Z,{})});if(l)return(0,r.jsxs)(d.Z,{severity:"error",sx:{mt:2},children:["Failed to load mods: ",l.message]});let q=E.size>0;return(0,r.jsxs)(i.Z,{children:[R&&(0,r.jsx)(d.Z,{severity:"info",sx:{mb:2},children:"Restart the server to apply mod changes."}),(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,r.jsx)(m.Z,{variant:"h6",fontWeight:600,children:"Installed Mods"}),(0,r.jsx)(o.Z,{variant:"contained",size:"small",startIcon:(0,r.jsx)(ep.Z,{}),onClick:()=>{C(""),k(""),v(!0)},children:"Add Mods"})]}),(0,r.jsx)(A.Z,{sx:{mb:2}}),q?Object.entries(n.mods).map(e=>{let[t,n]=e;return(0,r.jsxs)(i.Z,{sx:{mb:2},children:[(0,r.jsx)(m.Z,{variant:"subtitle2",color:"text.secondary",sx:{mb:1,textTransform:"capitalize"},children:t}),(0,r.jsx)(i.Z,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:n.map(e=>(0,r.jsx)(N.Z,{label:e,icon:(0,r.jsx)(e7.Z,{}),onDelete:()=>O(e),deleteIcon:(0,r.jsx)(I.Z,{}),variant:"outlined"},e))})]},t)}):(0,r.jsxs)(i.Z,{sx:{textAlign:"center",py:4},children:[(0,r.jsx)(e7.Z,{sx:{fontSize:48,color:"text.disabled",mb:1}}),(0,r.jsx)(m.Z,{variant:"body1",color:"text.secondary",children:"No mods installed"}),(0,r.jsx)(m.Z,{variant:"body2",color:"text.disabled",sx:{mt:.5},children:'Click "Add Mods" to search and install mods from Modrinth'})]})]})}),(0,r.jsxs)(b.Z,{open:f,onClose:()=>v(!1),maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{minHeight:400}},children:[(0,r.jsxs)(j.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:["Search Mods",(0,r.jsx)(c.Z,{onClick:()=>v(!1),size:"small",children:(0,r.jsx)(L.Z,{})})]}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsx)(w.Z,{fullWidth:!0,autoFocus:!0,placeholder:"Search Modrinth...",value:g,onChange:e=>C(e.target.value),InputProps:{startAdornment:(0,r.jsx)(D.Z,{position:"start",children:(0,r.jsx)(e8.Z,{})})},sx:{mb:2}}),W&&(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,r.jsx)(u.Z,{size:28})}),!W&&z&&0===z.hits.length&&S&&(0,r.jsxs)(m.Z,{variant:"body2",color:"text.secondary",sx:{textAlign:"center",py:4},children:['No mods found for "',S,'"']}),!W&&z&&z.hits.length>0&&(0,r.jsx)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:1.5},children:z.hits.map(e=>{var t;let n=E.has(e.slug);return(0,r.jsx)(p.Z,{variant:"outlined",sx:{borderRadius:2},children:(0,r.jsx)(h.Z,{sx:{py:1.5,px:2,"&:last-child":{pb:1.5}},children:(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:1.5,alignItems:"flex-start"},children:[(0,r.jsx)(eE.Z,{src:e.iconUrl||void 0,variant:"rounded",sx:{width:40,height:40,bgcolor:"action.hover"},children:(0,r.jsx)(e7.Z,{})}),(0,r.jsxs)(i.Z,{sx:{flex:1,minWidth:0},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,r.jsx)(m.Z,{variant:"subtitle2",noWrap:!0,children:e.title}),(0,r.jsx)(o.Z,{size:"small",variant:n?"outlined":"contained",disabled:n||x.isPending,onClick:()=>M(e.slug),sx:{ml:1,minWidth:80,flexShrink:0},children:n?"Installed":"Add"})]}),(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{mt:.25,overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical"},children:e.description}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,mt:.5},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:.25},children:[(0,r.jsx)(e9.Z,{sx:{fontSize:14,color:"text.disabled"}}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.disabled",children:(t=e.downloads)>=1e6?"".concat((t/1e6).toFixed(1),"M"):t>=1e3?"".concat((t/1e3).toFixed(1),"K"):String(t)})]}),e.author&&(0,r.jsxs)(m.Z,{variant:"caption",color:"text.disabled",children:["by ",e.author]})]})]})]})})},e.slug)})})]})]}),(0,r.jsx)(el.Z,{open:T.open,autoHideDuration:4e3,onClose:()=>F(e=>({...e,open:!1})),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,r.jsx)(d.Z,{onClose:()=>F(e=>({...e,open:!1})),severity:T.severity,variant:"filled",children:T.message})})]})}function tt(e,t){return(0,eX.a)({queryKey:["servers",e,"files","content",t],queryFn:()=>{let n=new URLSearchParams({path:t});return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(e),"/files/read?").concat(n))},enabled:!!e&&!!t})}function tn(e){let t=(0,e$.NL)();return(0,eY.D)({mutationFn:t=>{let{path:n,content:r}=t,s=new URLSearchParams({path:n});return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(e),"/files/write?").concat(s),{method:"PUT",body:JSON.stringify({content:r})})},onSuccess:()=>{t.invalidateQueries({queryKey:["servers",e,"files"]})}})}var tr=n(26138),ts=n(41261),ta=n(49368);function tl(e){let{path:t,onNavigate:n}=e,s=t.split("/").filter(Boolean);return(0,r.jsxs)(tr.Z,{sx:{mb:1},children:[(0,r.jsxs)(ts.Z,{component:"button",underline:"hover",color:"inherit",onClick:()=>n("/"),sx:{display:"flex",alignItems:"center",gap:.5,cursor:"pointer"},children:[(0,r.jsx)(ta.Z,{sx:{fontSize:18}}),"root"]}),s.map((e,t)=>{let a=t===s.length-1,l="/"+s.slice(0,t+1).join("/");return a?(0,r.jsx)(m.Z,{color:"text.primary",sx:{fontWeight:500},children:e},l):(0,r.jsx)(ts.Z,{component:"button",underline:"hover",color:"inherit",onClick:()=>n(l),sx:{cursor:"pointer"},children:e},l)})]})}var ti=n(23907),to=n(69366),tc=n(14895);let td=/[/\\]/,tu=/\.\./;function tx(e){let{open:t,existingNames:n,isPending:a,onConfirm:l,onClose:i}=e,[c,d]=(0,s.useState)(""),u=(0,s.useMemo)(()=>c.trim()?td.test(c)?"Name cannot contain / or \\":tu.test(c)?'Name cannot contain ".."':c.startsWith(".")?'Name cannot start with "."':null:"Folder name cannot be empty",[c]),x=(0,s.useMemo)(()=>n.some(e=>e.toLowerCase()===c.trim().toLowerCase()),[c,n]),p=!u&&!x&&!!c.trim(),h=(0,s.useCallback)(()=>{p&&(l(c.trim()),d(""))},[p,c,l]),m=(0,s.useCallback)(()=>{d(""),i()},[i]);return(0,r.jsxs)(b.Z,{open:t,onClose:m,maxWidth:"xs",fullWidth:!0,children:[(0,r.jsx)(j.Z,{children:"Create New Folder"}),(0,r.jsx)(Z.Z,{children:(0,r.jsx)(w.Z,{autoFocus:!0,fullWidth:!0,label:"Folder name",value:c,onChange:e=>d(e.target.value),onKeyDown:e=>"Enter"===e.key&&h(),error:!!u&&c.length>0||x,helperText:c.length>0&&u||(x?'"'.concat(c.trim(),'" already exists'):void 0),sx:{mt:1}})}),(0,r.jsxs)(C.Z,{children:[(0,r.jsx)(o.Z,{onClick:m,children:"Cancel"}),(0,r.jsx)(o.Z,{onClick:h,variant:"contained",disabled:a||!p,children:"Create"})]})]})}function tp(e){let{searchQuery:t,onSearchChange:n,onCreateFolder:a,onUpload:l,onRefresh:c,existingNames:d,disabled:u}=e,[x,p]=(0,s.useState)(!1);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:1,alignItems:"center",mb:2,flexWrap:"wrap"},children:[(0,r.jsx)(w.Z,{size:"small",placeholder:"Search files...",value:t,onChange:e=>n(e.target.value),InputProps:{startAdornment:(0,r.jsx)(D.Z,{position:"start",children:(0,r.jsx)(e8.Z,{sx:{fontSize:20,color:"text.secondary"}})})},sx:{minWidth:200,flex:{xs:"1 1 100%",sm:"0 1 auto"}}}),(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:1,ml:"auto"},children:[(0,r.jsx)(o.Z,{size:"small",startIcon:(0,r.jsx)(tc.Z,{}),onClick:l,disabled:u,children:"Upload"}),(0,r.jsx)(o.Z,{size:"small",startIcon:(0,r.jsx)(ti.Z,{}),onClick:()=>p(!0),disabled:u,children:"New Folder"}),(0,r.jsx)(o.Z,{size:"small",startIcon:(0,r.jsx)(to.Z,{}),onClick:c,disabled:u,children:"Refresh"})]})]}),(0,r.jsx)(tx,{open:x,existingNames:d,isPending:!!u,onConfirm:e=>{a(e),p(!1)},onClose:()=>p(!1)})]})}var th=n(21138),tm=n(84811),ty=n(47001),tf=n(53281),tv=n(11254),tg=n(70366),tb=n(53325),tj=n(32579),tZ=n(97589),tC=n(18644),tw=n(7837),tS=n(94358),tk=n(9078),tR=n(45813),tP=n(26559);function tT(e){var t;return["yml","yaml","json","properties","toml","cfg","conf","ini","txt","md","log","xml","sh","bat","csv"].includes((null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())||"")}function tI(e){var t;let{file:n,currentPath:a,onNavigate:l,onAction:o}=e,[d,u]=(0,s.useState)(null),x=()=>{"directory"===n.type?l("/"===a?"/".concat(n.name):"".concat(a,"/").concat(n.name)):tT(n.name)&&o("open")};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(tg.Z,{hover:!0,sx:{cursor:"directory"===n.type||tT(n.name)?"pointer":"default"},onClick:x,children:[(0,r.jsx)(ty.Z,{children:(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[function(e){var t;if("directory"===e.type)return(0,r.jsx)(tb.Z,{sx:{color:"#FFB74D"}});let n=(null===(t=e.name.split(".").pop())||void 0===t?void 0:t.toLowerCase())||"";return["yml","yaml","json","properties","toml","cfg","conf","ini","txt","md"].includes(n)?(0,r.jsx)(tZ.Z,{sx:{color:"#42A5F5"}}):"jar"===n?(0,r.jsx)(tC.Z,{sx:{color:"#AB47BC"}}):"log"===n?(0,r.jsx)(tw.Z,{sx:{color:"#78909C"}}):["dat","dat_old","mca","nbt","lock"].includes(n)?(0,r.jsx)(tS.Z,{sx:{color:"#8D6E63"}}):(0,r.jsx)(tj.Z,{sx:{color:"#90A4AE"}})}(n),(0,r.jsx)(m.Z,{variant:"body2",sx:{fontWeight:"directory"===n.type?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n.name})]})}),(0,r.jsx)(ty.Z,{sx:{display:{xs:"none",sm:"table-cell"}},children:(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:"directory"===n.type?"-":0===(t=n.size)?"-":t<1024?"".concat(t," B"):t<1048576?"".concat((t/1024).toFixed(1)," KB"):t<1073741824?"".concat((t/1024/1024).toFixed(1)," MB"):"".concat((t/1024/1024/1024).toFixed(1)," GB")})}),(0,r.jsx)(ty.Z,{sx:{display:{xs:"none",md:"table-cell"}},children:(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:new Date(n.modifiedAt).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})}),(0,r.jsx)(ty.Z,{children:(0,r.jsx)(c.Z,{size:"small",onClick:e=>{e.stopPropagation(),u(e.currentTarget)},children:(0,r.jsx)(T.Z,{fontSize:"small"})})})]}),(0,r.jsxs)(y.Z,{anchorEl:d,open:!!d,onClose:()=>u(null),children:["directory"===n.type&&(0,r.jsxs)(f.Z,{onClick:()=>{u(null),x()},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(tk.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Open"})]}),"file"===n.type&&tT(n.name)&&(0,r.jsxs)(f.Z,{onClick:()=>{u(null),o("open")},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(tR.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Edit"})]}),"file"===n.type&&(0,r.jsxs)(f.Z,{onClick:()=>{u(null),o("download")},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(e9.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Download"})]}),(0,r.jsxs)(f.Z,{onClick:()=>{u(null),o("rename")},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(tP.Z,{fontSize:"small"})}),(0,r.jsx)(g.Z,{children:"Rename"})]}),(0,r.jsxs)(f.Z,{onClick:()=>{u(null),o("delete")},sx:{color:"error.main"},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(I.Z,{fontSize:"small",color:"error"})}),(0,r.jsx)(g.Z,{children:"Delete"})]})]})]})}function tF(e){let{files:t,currentPath:n,onNavigate:s,onFileAction:a,searchQuery:l}=e,o=l?t.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())):t;return 0===o.length?(0,r.jsxs)(i.Z,{sx:{textAlign:"center",py:6},children:[(0,r.jsx)(tb.Z,{sx:{fontSize:48,color:"text.disabled",mb:1}}),(0,r.jsx)(m.Z,{variant:"body1",color:"text.secondary",children:l?"No matching files found":"This directory is empty"})]}):(0,r.jsx)(tf.Z,{children:(0,r.jsxs)(th.Z,{size:"small",children:[(0,r.jsx)(tv.Z,{children:(0,r.jsxs)(tg.Z,{children:[(0,r.jsx)(ty.Z,{sx:{fontWeight:600},children:"Name"}),(0,r.jsx)(ty.Z,{sx:{fontWeight:600,width:100,display:{xs:"none",sm:"table-cell"}},children:"Size"}),(0,r.jsx)(ty.Z,{sx:{fontWeight:600,width:160,display:{xs:"none",md:"table-cell"}},children:"Modified"}),(0,r.jsx)(ty.Z,{sx:{width:48}})]})}),(0,r.jsx)(tm.Z,{children:o.map(e=>(0,r.jsx)(tI,{file:e,currentPath:n,onNavigate:s,onAction:t=>a(t,e)},e.name))})]})})}var tz=n(56275),tW=n(62108),tO=n(35308),tN=n(66349),tD=n(45328),tA=n(41648),tM=n(29944),tE=n(75134),tL=n(19341),tq=n(36074),tU=n(66546);function tK(e){let{language:t,fileSize:n,line:s,col:a,dirty:l}=e;return(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2,px:2,py:.5,bgcolor:"grey.100",borderTop:1,borderColor:"divider",fontSize:"0.75rem",color:"text.secondary",flexWrap:"wrap",minHeight:28},children:[(0,r.jsx)(m.Z,{variant:"caption",sx:{fontWeight:500},children:t}),(0,r.jsx)(m.Z,{variant:"caption",children:n<1024?"".concat(n," B"):n<1048576?"".concat((n/1024).toFixed(1)," KB"):"".concat((n/1024/1024).toFixed(1)," MB")}),(0,r.jsx)(m.Z,{variant:"caption",children:"UTF-8"}),(0,r.jsxs)(m.Z,{variant:"caption",children:["Ln ",s,", Col ",a]}),(0,r.jsx)(i.Z,{sx:{flex:1}}),l&&(0,r.jsx)(m.Z,{variant:"caption",sx:{color:"warning.main",fontWeight:600},children:"Modified"})]})}let tB=(0,s.forwardRef)(function(e,t){return(0,r.jsx)(eP.Z,{direction:"up",ref:t,...e})});function tV(e){var t;let{serverName:n,filePath:a,onClose:l}=e,x=(0,s.useRef)(null),p=(0,s.useRef)(null),[h,y]=(0,s.useState)(!1),[f,v]=(0,s.useState)({line:1,col:1}),[g,j]=(0,s.useState)(!1),Z=(null==a?void 0:a.split("/").pop())||"",{data:C,isLoading:w,error:S}=tt(n,a),k=tn(n),R=(0,s.useCallback)(()=>{if(!p.current||!a)return;let e=p.current.state.doc.toString();k.mutate({path:a,content:e},{onSuccess:()=>y(!1)})},[a,k]),P=(0,s.useCallback)(()=>{h?j(!0):l()},[h,l]),T=(0,s.useCallback)(()=>{j(!1),y(!1),l()},[l]);(0,s.useEffect)(()=>{y(!1),v({line:1,col:1}),k.reset()},[a]),(0,s.useEffect)(()=>{if(!x.current||!C)return;p.current&&(p.current.destroy(),p.current=null);let e=tO.$f.of([{key:"Mod-s",run:()=>(setTimeout(()=>{if(!p.current||!a)return;let e=p.current.state.doc.toString();k.mutate({path:a,content:e},{onSuccess:()=>y(!1)})},0),!0),preventDefault:!0}]),t=tO.tk.updateListener.of(e=>{if(e.docChanged&&y(!0),e.selectionSet||e.docChanged){let t=e.state.selection.main.head,n=e.state.doc.lineAt(t);v({line:n.number,col:t-n.from+1})}}),n=tN.yy.create({doc:C.content,extensions:[(0,tO.Eu)(),(0,tO.ZO)(),(0,tO.AE)(),(0,tD.m8)(),(0,tA.mi)(),(0,tO.Uw)(),(0,tO.Zs)(),(0,tA.nY)(),(0,tA.n$)(),(0,tM.sW)(),(0,tA.nF)(tA.R_,{fallback:!0}),tU.vk,function(e){var t;switch((null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())||""){case"json":return(0,tE.AV)();case"yml":case"yaml":return(0,tL.rV)();case"xml":case"html":return(0,tq.Ls)();default:return[]}}(Z),e,tO.$f.of([...tD.wQ,...tD.f$,...tM.Lp,tD.oc]),t,tO.tk.lineWrapping,tO.tk.theme({"&":{height:"100%",fontSize:"13px"},".cm-scroller":{overflow:"auto"},".cm-content":{fontFamily:'"Fira Code", "Cascadia Code", "JetBrains Mono", "Consolas", monospace'},".cm-gutters":{fontFamily:'"Fira Code", "Cascadia Code", "JetBrains Mono", "Consolas", monospace'}})]}),r=new tO.tk({state:n,parent:x.current});return p.current=r,()=>{r.destroy(),p.current=null}},[C,Z,a]);let I=null!==a,F=C&&C.size>5242880;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(b.Z,{fullScreen:!0,open:I,onClose:P,TransitionComponent:tB,children:[(0,r.jsx)(tz.Z,{sx:{position:"relative"},color:"default",elevation:1,children:(0,r.jsxs)(tW.Z,{variant:"dense",children:[(0,r.jsx)(c.Z,{edge:"start",color:"inherit",onClick:P,"aria-label":"close",children:(0,r.jsx)(L.Z,{})}),(0,r.jsx)(tZ.Z,{sx:{mx:1,color:"primary.main"}}),(0,r.jsxs)(m.Z,{sx:{flex:1},variant:"subtitle1",noWrap:!0,children:[Z,h&&" *"]}),(0,r.jsx)(o.Z,{color:"primary",variant:"contained",size:"small",startIcon:k.isPending?(0,r.jsx)(u.Z,{size:16,color:"inherit"}):(0,r.jsx)(eh.Z,{}),onClick:R,disabled:!h||k.isPending,children:"Save"})]})}),(0,r.jsxs)(i.Z,{sx:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},children:[w&&(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",alignItems:"center",flex:1},children:(0,r.jsx)(u.Z,{})}),S&&(0,r.jsxs)(d.Z,{severity:"error",sx:{m:2},children:["Failed to load file: ",S.message]}),F&&(0,r.jsxs)(d.Z,{severity:"warning",sx:{m:2},children:["This file is too large to edit (",(C.size/1024/1024).toFixed(1)," MB). Maximum editable size is 5 MB."]}),k.isError&&(0,r.jsxs)(d.Z,{severity:"error",sx:{m:2},children:["Failed to save: ",k.error.message]}),k.isSuccess&&!h&&(0,r.jsx)(d.Z,{severity:"success",sx:{m:2},children:"File saved successfully."}),C&&!F&&(0,r.jsx)(i.Z,{ref:x,sx:{flex:1,overflow:"hidden"}}),C&&!F&&(0,r.jsx)(tK,{language:{json:"JSON",yml:"YAML",yaml:"YAML",xml:"XML",html:"HTML",properties:"Properties",toml:"TOML",cfg:"Config",conf:"Config",ini:"INI",txt:"Plain Text",md:"Markdown",log:"Log",sh:"Shell",bat:"Batch",csv:"CSV"}[(null===(t=Z.split(".").pop())||void 0===t?void 0:t.toLowerCase())||""]||"Plain Text",fileSize:C.size,line:f.line,col:f.col,dirty:h})]})]}),(0,r.jsx)(b.Z,{open:g,onClose:()=>j(!1),maxWidth:"xs",fullWidth:!0,children:(0,r.jsxs)(i.Z,{sx:{p:3},children:[(0,r.jsx)(m.Z,{variant:"h6",gutterBottom:!0,children:"Unsaved Changes"}),(0,r.jsxs)(m.Z,{variant:"body2",color:"text.secondary",sx:{mb:3},children:["You have unsaved changes in ",(0,r.jsx)("strong",{children:Z}),". Do you want to discard them?"]}),(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"flex-end",gap:1},children:[(0,r.jsx)(o.Z,{onClick:()=>j(!1),children:"Cancel"}),(0,r.jsx)(o.Z,{onClick:T,color:"error",variant:"contained",children:"Discard"})]})]})})]})}var tH=n(65087);let tQ=new Set(["world","world_nether","world_the_end","server.jar","server.properties","plugins","mods"]);function tG(e){var t;let{target:n,isPending:a,onConfirm:l,onClose:i}=e,[c,u]=(0,s.useState)(""),x=!!n&&(t=n.name,tQ.has(t.toLowerCase())),p=(null==n?void 0:n.type)==="directory",h=!x||c===(null==n?void 0:n.name);(0,s.useEffect)(()=>{n||u("")},[n]);let m=(0,s.useCallback)(()=>{h&&l()},[h,l]);return(0,r.jsxs)(b.Z,{open:!!n,onClose:i,maxWidth:"xs",fullWidth:!0,children:[(0,r.jsxs)(j.Z,{children:["Delete ",p?"Folder":"File"]}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsxs)(tH.Z,{children:["Are you sure you want to delete ",(0,r.jsx)("strong",{children:null==n?void 0:n.name}),"?",p&&" This will delete all contents inside."," ","This action cannot be undone."]}),x&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(d.Z,{severity:"warning",sx:{mt:2},children:[(0,r.jsx)("strong",{children:null==n?void 0:n.name})," is a critical server ",p?"folder":"file",". Deleting it may break your server."]}),(0,r.jsx)(w.Z,{autoFocus:!0,fullWidth:!0,label:'Type "'.concat(null==n?void 0:n.name,'" to confirm'),value:c,onChange:e=>u(e.target.value),onKeyDown:e=>"Enter"===e.key&&m(),placeholder:null==n?void 0:n.name,sx:{mt:2},error:c.length>0&&c!==(null==n?void 0:n.name)})]})]}),(0,r.jsxs)(C.Z,{children:[(0,r.jsx)(o.Z,{onClick:i,children:"Cancel"}),(0,r.jsx)(o.Z,{onClick:m,color:"error",variant:"contained",disabled:a||!h,children:"Delete"})]})]})}let tJ=/[/\\]/,t_=/\.\./;function tX(e){let t=e.lastIndexOf(".");return t>0?e.slice(t):""}function t$(e){let{target:t,existingNames:n,isPending:a,onConfirm:l,onClose:i}=e,[c,u]=(0,s.useState)("");(0,s.useEffect)(()=>{t&&u(t.name)},[t]);let x=(0,s.useMemo)(()=>c.trim()?tJ.test(c)?"Name cannot contain / or \\":t_.test(c)?'Name cannot contain ".."':c.startsWith(".")?'Name cannot start with "."':null:"Name cannot be empty",[c]),p=(0,s.useMemo)(()=>n.some(e=>e!==(null==t?void 0:t.name)&&e.toLowerCase()===c.trim().toLowerCase()),[c,null==t?void 0:t.name,n]),h=(0,s.useMemo)(()=>!!t&&"directory"!==t.type&&tX(t.name)!==tX(c),[t,c]),m=c.trim()===(null==t?void 0:t.name),y=!x&&!p&&!m&&!!c.trim(),f=(0,s.useCallback)(()=>{y&&l(c.trim())},[y,c,l]);return(0,r.jsxs)(b.Z,{open:!!t,onClose:i,maxWidth:"xs",fullWidth:!0,children:[(0,r.jsx)(j.Z,{children:"Rename"}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsx)(w.Z,{autoFocus:!0,fullWidth:!0,label:"New name",value:c,onChange:e=>u(e.target.value),onKeyDown:e=>"Enter"===e.key&&f(),error:!!x||p,helperText:x||(p?'"'.concat(c.trim(),'" already exists'):void 0),sx:{mt:1}}),h&&!x&&!p&&(0,r.jsx)(d.Z,{severity:"warning",sx:{mt:2},children:"Changing the file extension may make the file unusable."})]}),(0,r.jsxs)(C.Z,{children:[(0,r.jsx)(o.Z,{onClick:i,children:"Cancel"}),(0,r.jsx)(o.Z,{onClick:f,variant:"contained",disabled:a||!y,children:"Rename"})]})]})}var tY=n(75946),t0=n(35847),t1=n(397),t2=n(61650),t3=n(73729),t6=n(41189);let t4=(0,s.forwardRef)(function(e,t){return(0,r.jsx)(eP.Z,{direction:"up",ref:t,...e})}),t5={whitelist:{label:"Whitelist Manager",icon:(0,r.jsx)(t0.Z,{sx:{mx:1}})},ops:{label:"Operators Manager",icon:(0,r.jsx)(eq.Z,{sx:{mx:1}})},bans:{label:"Ban List Manager",icon:(0,r.jsx)(t1.Z,{sx:{mx:1}})}};function t8(e){let{serverName:t,editorType:n,filePath:s,onClose:a,onSwitchToRaw:l}=e,d=n?t5[n]:null;return(0,r.jsxs)(b.Z,{fullScreen:!0,open:null!==n,onClose:a,TransitionComponent:t4,children:[(0,r.jsx)(tz.Z,{sx:{position:"relative"},color:"default",elevation:1,children:(0,r.jsxs)(tW.Z,{variant:"dense",children:[(0,r.jsx)(c.Z,{edge:"start",color:"inherit",onClick:a,"aria-label":"close",children:(0,r.jsx)(L.Z,{})}),null==d?void 0:d.icon,(0,r.jsx)(m.Z,{sx:{flex:1},variant:"subtitle1",noWrap:!0,children:null==d?void 0:d.label}),s&&(0,r.jsx)(o.Z,{size:"small",startIcon:(0,r.jsx)(tY.Z,{}),onClick:()=>{a(),l(s)},children:"Raw View"})]})}),(0,r.jsxs)(i.Z,{sx:{flex:1,overflow:"auto",p:{xs:1,sm:2}},children:["whitelist"===n&&(0,r.jsx)(t2.Z,{serverName:t}),"ops"===n&&(0,r.jsx)(t3.d,{serverName:t}),"bans"===n&&(0,r.jsx)(t6.Z,{serverName:t})]})]})}var t7=n(10297),t9=n(89923),ne=n(22041),nt=n(72147),nn=n(66561),nr=n(12795),ns=n(96407),na=n(90117),nl=n(8352);let ni={gameplay:{label:"Gameplay",description:"Game rules, player limits, and core mechanics"},world:{label:"World Generation",description:"World settings, level name, and generation options"},network:{label:"Network & Security",description:"Ports, authentication, RCON, and query settings"},performance:{label:"Performance",description:"View distance, tick settings, and compression"},advanced:{label:"Advanced",description:"Other server properties"}},no=["gameplay","world","network","performance","advanced"],nc=[{key:"gamemode",type:"enum",category:"gameplay",label:"Game Mode",description:"Default game mode for new players",defaultValue:"survival",options:[{value:"survival",label:"Survival"},{value:"creative",label:"Creative"},{value:"adventure",label:"Adventure"},{value:"spectator",label:"Spectator"}]},{key:"difficulty",type:"enum",category:"gameplay",label:"Difficulty",description:"Server difficulty level",defaultValue:"easy",options:[{value:"peaceful",label:"Peaceful"},{value:"easy",label:"Easy"},{value:"normal",label:"Normal"},{value:"hard",label:"Hard"}]},{key:"hardcore",type:"boolean",category:"gameplay",label:"Hardcore",description:"Players are set to spectator mode on death",defaultValue:"false"},{key:"pvp",type:"boolean",category:"gameplay",label:"PvP",description:"Allow player vs player combat",defaultValue:"true"},{key:"max-players",type:"number",category:"gameplay",label:"Max Players",description:"Maximum number of players on the server",defaultValue:"20",min:0,max:2147483647},{key:"force-gamemode",type:"boolean",category:"gameplay",label:"Force Game Mode",description:"Force players to join in the default game mode",defaultValue:"false"},{key:"allow-flight",type:"boolean",category:"gameplay",label:"Allow Flight",description:"Allow players to use flight in survival mode",defaultValue:"false"},{key:"spawn-protection",type:"number",category:"gameplay",label:"Spawn Protection",description:"Radius of spawn protection area (0 = disabled)",defaultValue:"16",min:0,max:65536},{key:"spawn-animals",type:"boolean",category:"gameplay",label:"Spawn Animals",description:"Allow animals to spawn naturally",defaultValue:"true"},{key:"spawn-monsters",type:"boolean",category:"gameplay",label:"Spawn Monsters",description:"Allow hostile mobs to spawn naturally",defaultValue:"true"},{key:"spawn-npcs",type:"boolean",category:"gameplay",label:"Spawn NPCs",description:"Allow villagers to spawn",defaultValue:"true"},{key:"allow-nether",type:"boolean",category:"gameplay",label:"Allow Nether",description:"Allow players to travel to the Nether",defaultValue:"true"},{key:"enable-command-block",type:"boolean",category:"gameplay",label:"Enable Command Blocks",description:"Allow command blocks to be used",defaultValue:"false"},{key:"player-idle-timeout",type:"number",category:"gameplay",label:"Player Idle Timeout",description:"Kick idle players after N minutes (0 = disabled)",defaultValue:"0",min:0,max:2147483647},{key:"level-name",type:"string",category:"world",label:"Level Name",description:"Name of the world folder",defaultValue:"world"},{key:"level-seed",type:"string",category:"world",label:"Level Seed",description:"Seed for world generation (blank = random)",defaultValue:""},{key:"level-type",type:"enum",category:"world",label:"Level Type",description:"World generation type",defaultValue:"minecraft\\:normal",options:[{value:"minecraft\\:normal",label:"Normal"},{value:"minecraft\\:flat",label:"Flat"},{value:"minecraft\\:large_biomes",label:"Large Biomes"},{value:"minecraft\\:amplified",label:"Amplified"},{value:"minecraft\\:single_biome_surface",label:"Single Biome"}]},{key:"generate-structures",type:"boolean",category:"world",label:"Generate Structures",description:"Generate villages, temples, and other structures",defaultValue:"true"},{key:"max-world-size",type:"number",category:"world",label:"Max World Size",description:"Maximum world border radius in blocks",defaultValue:"29999984",min:1,max:29999984},{key:"generator-settings",type:"string",category:"world",label:"Generator Settings",description:"Custom world generator settings (JSON)",defaultValue:"{}"},{key:"motd",type:"string",category:"world",label:"MOTD",description:"Message displayed in the server list",defaultValue:"A Minecraft Server"},{key:"server-port",type:"readonly",category:"network",label:"Server Port",description:"Port the server listens on (cannot be changed at runtime)",defaultValue:"25565"},{key:"server-ip",type:"readonly",category:"network",label:"Server IP",description:"IP address to bind to (blank = all interfaces)",defaultValue:""},{key:"online-mode",type:"boolean",category:"network",label:"Online Mode",description:"Authenticate players with Mojang servers",defaultValue:"true"},{key:"white-list",type:"boolean",category:"network",label:"Whitelist",description:"Only allow whitelisted players to join",defaultValue:"false"},{key:"enforce-whitelist",type:"boolean",category:"network",label:"Enforce Whitelist",description:"Kick non-whitelisted players when whitelist is reloaded",defaultValue:"false"},{key:"enforce-secure-profile",type:"boolean",category:"network",label:"Enforce Secure Profile",description:"Require players to have a signed key from Mojang",defaultValue:"true"},{key:"enable-rcon",type:"boolean",category:"network",label:"Enable RCON",description:"Enable remote console access",defaultValue:"false"},{key:"rcon.port",type:"number",category:"network",label:"RCON Port",description:"Port for RCON connections",defaultValue:"25575",min:1,max:65535},{key:"rcon.password",type:"string",category:"network",label:"RCON Password",description:"Password for RCON authentication",defaultValue:""},{key:"enable-query",type:"boolean",category:"network",label:"Enable Query",description:"Enable GameSpy4 protocol server listener",defaultValue:"false"},{key:"query.port",type:"number",category:"network",label:"Query Port",description:"Port for query protocol",defaultValue:"25565",min:1,max:65535},{key:"enable-status",type:"boolean",category:"network",label:"Enable Status",description:"Show server in the server list",defaultValue:"true"},{key:"prevent-proxy-connections",type:"boolean",category:"network",label:"Prevent Proxy Connections",description:"Block VPN/proxy connections (requires online-mode)",defaultValue:"false"},{key:"hide-online-players",type:"boolean",category:"network",label:"Hide Online Players",description:"Hide player count and list in server status",defaultValue:"false"},{key:"view-distance",type:"number",category:"performance",label:"View Distance",description:"Render distance in chunks sent to players",defaultValue:"10",min:3,max:32},{key:"simulation-distance",type:"number",category:"performance",label:"Simulation Distance",description:"Distance in chunks for entity simulation",defaultValue:"10",min:3,max:32},{key:"max-tick-time",type:"number",category:"performance",label:"Max Tick Time",description:"Maximum tick duration before watchdog crash (ms, -1 = disabled)",defaultValue:"60000",min:-1,max:2147483647},{key:"network-compression-threshold",type:"number",category:"performance",label:"Network Compression Threshold",description:"Minimum packet size to compress (bytes, -1 = disabled)",defaultValue:"256",min:-1,max:2147483647},{key:"max-chained-neighbor-updates",type:"number",category:"performance",label:"Max Chained Neighbor Updates",description:"Limit for chained block updates (-1 = unlimited)",defaultValue:"1000000",min:-1,max:2147483647},{key:"rate-limit",type:"number",category:"performance",label:"Rate Limit",description:"Max packets per second before kick (0 = disabled)",defaultValue:"0",min:0,max:2147483647},{key:"entity-broadcast-range-percentage",type:"number",category:"performance",label:"Entity Broadcast Range",description:"Percentage of default entity visibility range",defaultValue:"100",min:10,max:1e3},{key:"resource-pack",type:"string",category:"advanced",label:"Resource Pack URL",description:"URL of the server resource pack",defaultValue:""},{key:"resource-pack-sha1",type:"string",category:"advanced",label:"Resource Pack SHA1",description:"SHA1 hash of the resource pack file",defaultValue:""},{key:"require-resource-pack",type:"boolean",category:"advanced",label:"Require Resource Pack",description:"Kick players who decline the resource pack",defaultValue:"false"},{key:"resource-pack-prompt",type:"string",category:"advanced",label:"Resource Pack Prompt",description:"Custom message shown when asking to download resource pack",defaultValue:""},{key:"function-permission-level",type:"enum",category:"advanced",label:"Function Permission Level",description:"OP level required to execute functions",defaultValue:"2",options:[{value:"1",label:"Level 1 - Moderator"},{value:"2",label:"Level 2 - Gamemaster"},{value:"3",label:"Level 3 - Admin"},{value:"4",label:"Level 4 - Owner"}]},{key:"op-permission-level",type:"enum",category:"advanced",label:"OP Permission Level",description:"Default OP level for new operators",defaultValue:"4",options:[{value:"1",label:"Level 1 - Moderator"},{value:"2",label:"Level 2 - Gamemaster"},{value:"3",label:"Level 3 - Admin"},{value:"4",label:"Level 4 - Owner"}]},{key:"text-filtering-config",type:"string",category:"advanced",label:"Text Filtering Config",description:"Text filtering configuration file",defaultValue:""},{key:"log-ips",type:"boolean",category:"advanced",label:"Log IPs",description:"Log player IP addresses in the server log",defaultValue:"true"},{key:"broadcast-console-to-ops",type:"boolean",category:"advanced",label:"Broadcast Console to OPs",description:"Send console output to all OPs",defaultValue:"true"},{key:"broadcast-rcon-to-ops",type:"boolean",category:"advanced",label:"Broadcast RCON to OPs",description:"Send RCON output to all OPs",defaultValue:"true"},{key:"sync-chunk-writes",type:"boolean",category:"advanced",label:"Sync Chunk Writes",description:"Synchronize chunk writes for data safety",defaultValue:"true"},{key:"enable-jmx-monitoring",type:"boolean",category:"advanced",label:"Enable JMX Monitoring",description:"Expose JMX metrics for monitoring",defaultValue:"false"},{key:"use-native-transport",type:"boolean",category:"advanced",label:"Use Native Transport",description:"Use Linux-specific packet optimizations",defaultValue:"true"},{key:"initial-enabled-packs",type:"string",category:"advanced",label:"Initial Enabled Packs",description:"Comma-separated list of initially enabled data packs",defaultValue:"vanilla"},{key:"initial-disabled-packs",type:"string",category:"advanced",label:"Initial Disabled Packs",description:"Comma-separated list of initially disabled data packs",defaultValue:""}];nc.map(e=>[e.key,e]);let nd=(0,r.jsx)(N.Z,{label:"modified",size:"small",color:"warning",variant:"outlined"});function nu(e){let{schema:t,value:n,onChange:s,isChanged:a}=e,l=a?{"& .MuiInputBase-root":{bgcolor:"action.selected"}}:void 0,o=a?(0,r.jsx)(D.Z,{position:"end",children:nd}):void 0;switch(t.type){case"boolean":return(0,r.jsxs)(i.Z,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(eZ.Z,{control:(0,r.jsx)(eC.Z,{checked:"true"===n,onChange:e=>s(t.key,e.target.checked?"true":"false"),size:"small"}),label:t.label,sx:{mr:0}}),a&&nd]}),(0,r.jsx)(m.Z,{variant:"caption",color:"text.secondary",sx:{ml:"48px",display:"block",mt:-.5},children:t.description})]});case"enum":var c;return(0,r.jsx)(w.Z,{select:!0,fullWidth:!0,size:"small",label:t.label,helperText:t.description,value:n,onChange:e=>s(t.key,e.target.value),InputProps:{endAdornment:o},sx:l,children:null===(c=t.options)||void 0===c?void 0:c.map(e=>(0,r.jsx)(f.Z,{value:e.value,children:e.label},e.value))});case"number":return(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",type:"number",label:t.label,helperText:t.description,value:n,onChange:e=>s(t.key,e.target.value),inputProps:{min:t.min,max:t.max},InputProps:{endAdornment:o},sx:l});case"readonly":return(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",label:t.label,helperText:t.description,value:n,disabled:!0,InputProps:{endAdornment:(0,r.jsx)(D.Z,{position:"end",children:(0,r.jsx)(N.Z,{label:"readonly",size:"small",variant:"outlined"})})}});default:return(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",label:t.label,helperText:t.description,value:n,onChange:e=>s(t.key,e.target.value),InputProps:{endAdornment:o},sx:l})}}function nx(e){let{serverName:t}=e,n="/server.properties",{data:a,isLoading:l,error:c}=tt(t,n),x=tn(t),[p,h]=(0,s.useState)({}),[y,f]=(0,s.useState)({}),[v,g]=(0,s.useState)("");(0,s.useEffect)(()=>{if(!(null==a?void 0:a.content))return;let e=function(e){let t={};for(let n of e.split("\n")){let e=n.trim();if(!e||e.startsWith("#"))continue;let r=e.indexOf("=");if(-1===r)continue;let s=e.substring(0,r).trim(),a=e.substring(r+1).trim();t[s]=a}return t}(a.content);h(e),f(e),x.reset()},[a]);let b=(0,s.useCallback)((e,t)=>{h(n=>({...n,[e]:t}))},[]),j=(0,s.useMemo)(()=>{let e=[];for(let t of Object.keys(p))p[t]!==y[t]&&e.push(t);return e},[p,y]),Z=(0,s.useCallback)(()=>{if(!(null==a?void 0:a.content))return;let e=function(e,t){let n=e.split("\n"),r=new Set,s=n.map(e=>{let n=e.trim();if(!n||n.startsWith("#"))return e;let s=n.indexOf("=");if(-1===s)return e;let a=n.substring(0,s).trim();return(r.add(a),a in t)?"".concat(a,"=").concat(t[a]):e});for(let[e,n]of Object.entries(t))r.has(e)||s.push("".concat(e,"=").concat(n));return s.join("\n")}(a.content,p);x.mutate({path:n,content:e},{onSuccess:()=>{f({...p})}})},[a,p,x]),C=(0,s.useCallback)(()=>{h({...y})},[y]),k=(0,s.useMemo)(()=>{let e=v.toLowerCase(),t={gameplay:[],world:[],network:[],performance:[],advanced:[]};for(let n of nc)(!e||n.key.toLowerCase().includes(e)||n.label.toLowerCase().includes(e)||n.description.toLowerCase().includes(e))&&t[n.category].push(n);let n=new Set(nc.map(e=>e.key));for(let r of Object.keys(p))!n.has(r)&&(!e||r.toLowerCase().includes(e))&&t.advanced.push({key:r,type:"string",category:"advanced",label:r,description:"Custom property (not in standard schema)",defaultValue:""});return t},[v,p]);return l?(0,r.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",alignItems:"center",py:8},children:(0,r.jsx)(u.Z,{})}):c?(0,r.jsxs)(d.Z,{severity:"error",sx:{m:2},children:["Failed to load server.properties: ",c.message]}):(0,r.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,r.jsx)(d.Z,{severity:"warning",icon:(0,r.jsx)(nl.Z,{}),sx:{mx:2,mt:2,mb:1},children:(0,r.jsxs)(m.Z,{variant:"body2",children:[(0,r.jsx)("strong",{children:"Warning:"})," Changes are applied directly to the running server file. For persistent settings that survive server recreation, use the ",(0,r.jsx)("strong",{children:"Options"})," tab."]})}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1},children:[(0,r.jsx)(w.Z,{size:"small",placeholder:"Search properties...",value:v,onChange:e=>g(e.target.value),InputProps:{startAdornment:(0,r.jsx)(D.Z,{position:"start",children:(0,r.jsx)(e8.Z,{fontSize:"small"})})},sx:{flex:1,maxWidth:400}}),(0,r.jsx)(i.Z,{sx:{flex:1}}),j.length>0&&(0,r.jsx)(N.Z,{label:"".concat(j.length," changed"),color:"warning",size:"small"}),(0,r.jsx)(o.Z,{size:"small",startIcon:(0,r.jsx)(na.Z,{}),onClick:C,disabled:0===j.length,children:"Discard"}),(0,r.jsx)(o.Z,{size:"small",variant:"contained",startIcon:x.isPending?(0,r.jsx)(u.Z,{size:16,color:"inherit"}):(0,r.jsx)(eh.Z,{}),onClick:Z,disabled:0===j.length||x.isPending,children:"Save"})]}),x.isError&&(0,r.jsxs)(d.Z,{severity:"error",sx:{mx:2,mb:1},children:["Failed to save: ",x.error.message]}),x.isSuccess&&0===j.length&&(0,r.jsx)(d.Z,{severity:"success",sx:{mx:2,mb:1},children:"File saved successfully."}),(0,r.jsx)(i.Z,{sx:{flex:1,overflow:"auto",px:2,pb:2},children:no.map(e=>{let t=k[e];if(0===t.length)return null;let n=ni[e],s=t.filter(e=>j.includes(e.key)).length;return(0,r.jsxs)(nn.Z,{defaultExpanded:"advanced"!==e,disableGutters:!0,children:[(0,r.jsx)(nr.Z,{expandIcon:(0,r.jsx)(ev.Z,{}),children:(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,width:"100%"},children:[(0,r.jsx)(m.Z,{variant:"subtitle1",sx:{fontWeight:600},children:n.label}),(0,r.jsxs)(m.Z,{variant:"caption",color:"text.secondary",children:["(",t.length,")"]}),s>0&&(0,r.jsx)(N.Z,{label:"".concat(s," modified"),size:"small",color:"warning",variant:"outlined"})]})}),(0,r.jsxs)(ns.Z,{children:[(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n.description}),(0,r.jsx)(S.ZP,{container:!0,spacing:2,children:t.map(e=>{var t;let n=null!==(t=p[e.key])&&void 0!==t?t:e.defaultValue,s=j.includes(e.key);return(0,r.jsx)(S.ZP,{item:!0,xs:12,sm:"boolean"===e.type?6:12,children:(0,r.jsx)(nu,{schema:e,value:n,onChange:b,isChanged:s})},e.key)})})]})]},e)})})]})}let np=(0,s.forwardRef)(function(e,t){return(0,r.jsx)(eP.Z,{direction:"up",ref:t,...e})});function nh(e){let{serverName:t,open:n,filePath:a,onClose:l}=e,[o,d]=(0,s.useState)("form"),u=()=>{l(),d("form")};return"raw"===o&&a?(0,r.jsx)(tV,{serverName:t,filePath:a,onClose:u}):(0,r.jsxs)(b.Z,{fullScreen:!0,open:n,onClose:u,TransitionComponent:np,children:[(0,r.jsx)(tz.Z,{sx:{position:"relative"},color:"default",elevation:1,children:(0,r.jsxs)(tW.Z,{variant:"dense",children:[(0,r.jsx)(c.Z,{edge:"start",color:"inherit",onClick:u,"aria-label":"close",children:(0,r.jsx)(L.Z,{})}),(0,r.jsx)(ne.Z,{sx:{mx:1,color:"primary.main"}}),(0,r.jsx)(m.Z,{sx:{flex:1},variant:"subtitle1",noWrap:!0,children:"server.properties"}),(0,r.jsxs)(t7.Z,{value:o,exclusive:!0,onChange:(e,t)=>t&&d(t),size:"small",children:[(0,r.jsxs)(t9.Z,{value:"form",children:[(0,r.jsx)(nt.Z,{fontSize:"small",sx:{mr:.5}}),"Form"]}),(0,r.jsxs)(t9.Z,{value:"raw",children:[(0,r.jsx)(tY.Z,{fontSize:"small",sx:{mr:.5}}),"Raw"]})]})]})}),(0,r.jsx)(i.Z,{sx:{flex:1,overflow:"auto"},children:(0,r.jsx)(nx,{serverName:t})})]})}var nm=n(91606);function ny(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):e<1073741824?"".concat((e/1024/1024).toFixed(1)," MB"):"".concat((e/1024/1024/1024).toFixed(1)," GB")}function nf(e){let{open:t,isPending:n,onUpload:a,onClose:l}=e,[u,x]=(0,s.useState)([]),[p,h]=(0,s.useState)(!1),y=(0,s.useRef)(null);(0,s.useEffect)(()=>{t&&(x([]),h(!1))},[t]);let f=u.filter(e=>e.size>104857600),w=(0,s.useCallback)(e=>{let t=Array.from(e);x(e=>{let n=new Set(e.map(e=>e.name));return[...e,...t.filter(e=>!n.has(e.name))]})},[]),S=(0,s.useCallback)(e=>{x(t=>t.filter(t=>t.name!==e))},[]),k=(0,s.useCallback)(e=>{e.preventDefault(),h(!1),e.dataTransfer.files.length&&w(e.dataTransfer.files)},[w]),R=(0,s.useCallback)(()=>{u.length>0&&0===f.length&&a(u)},[u,f,a]),P=(0,s.useCallback)(()=>{n||(x([]),l())},[n,l]);return(0,r.jsxs)(b.Z,{open:t,onClose:P,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsx)(j.Z,{children:"Upload Files"}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsxs)(i.Z,{onDragOver:e=>{e.preventDefault(),h(!0)},onDragLeave:()=>h(!1),onDrop:k,onClick:()=>{var e;return null===(e=y.current)||void 0===e?void 0:e.click()},sx:{border:"2px dashed",borderColor:p?"primary.main":"divider",borderRadius:2,p:4,textAlign:"center",cursor:"pointer",bgcolor:p?"action.hover":"transparent",transition:"all 0.2s","&:hover":{borderColor:"primary.main",bgcolor:"action.hover"}},children:[(0,r.jsx)(nm.Z,{sx:{fontSize:48,color:"text.secondary",mb:1}}),(0,r.jsx)(m.Z,{variant:"body1",color:"text.secondary",children:"Drag & drop files here, or click to browse"}),(0,r.jsxs)(m.Z,{variant:"caption",color:"text.secondary",children:["Max ",ny(104857600)," per file"]})]}),(0,r.jsx)("input",{ref:y,type:"file",multiple:!0,hidden:!0,onChange:e=>{var t;(null===(t=e.target.files)||void 0===t?void 0:t.length)&&(w(e.target.files),e.target.value="")}}),u.length>0&&(0,r.jsx)(X.Z,{dense:!0,sx:{mt:2},children:u.map(e=>(0,r.jsxs)($.ZP,{secondaryAction:(0,r.jsx)(c.Z,{edge:"end",size:"small",onClick:()=>S(e.name),disabled:n,children:(0,r.jsx)(I.Z,{fontSize:"small"})}),children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(tj.Z,{})}),(0,r.jsx)(g.Z,{primary:e.name,secondary:ny(e.size),primaryTypographyProps:{noWrap:!0,color:e.size>104857600?"error":"text.primary"}})]},e.name))}),f.length>0&&(0,r.jsx)(d.Z,{severity:"error",sx:{mt:1},children:1===f.length?'"'.concat(f[0].name,'" exceeds the ').concat(ny(104857600)," limit"):"".concat(f.length," files exceed the ").concat(ny(104857600)," limit")}),n&&(0,r.jsx)(Q.Z,{sx:{mt:2}})]}),(0,r.jsxs)(C.Z,{children:[(0,r.jsx)(o.Z,{onClick:P,disabled:n,children:"Cancel"}),(0,r.jsxs)(o.Z,{onClick:R,variant:"contained",startIcon:(0,r.jsx)(nm.Z,{}),disabled:n||0===u.length||f.length>0,children:["Upload ",u.length>0?"(".concat(u.length,")"):""]})]})]})}function nv(e){let{serverName:t}=e,[n,a]=(0,s.useState)("/"),[l,i]=(0,s.useState)(""),[o,c]=(0,s.useState)({open:!1,message:"",severity:"info"}),[u,m]=(0,s.useState)(null),[y,f]=(0,s.useState)(null),[v,g]=(0,s.useState)(null),[b,j]=(0,s.useState)(null),[Z,C]=(0,s.useState)(null),[w,S]=(0,s.useState)(!1),[k,R]=(0,s.useState)(null),[P,T]=(0,s.useState)(!1),{data:I,isLoading:F,error:z,refetch:W}=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/";return(0,eX.a)({queryKey:["servers",e,"files",t],queryFn:()=>{let n=new URLSearchParams({path:t});return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(e),"/files?").concat(n))},enabled:!!e})}(t,n),O=function(e){let t=(0,e$.NL)();return(0,eY.D)({mutationFn:t=>{let{path:n}=t,r=new URLSearchParams({path:n});return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(e),"/files?").concat(r),{method:"DELETE"})},onSuccess:()=>{t.invalidateQueries({queryKey:["servers",e,"files"]})}})}(t),N=function(e){let t=(0,e$.NL)();return(0,eY.D)({mutationFn:t=>{let{path:n}=t,r=new URLSearchParams({path:n});return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(e),"/files/mkdir?").concat(r),{method:"POST"})},onSuccess:()=>{t.invalidateQueries({queryKey:["servers",e,"files"]})}})}(t),D=function(e){let t=(0,e$.NL)();return(0,eY.D)({mutationFn:t=>{let{oldPath:n,newPath:r}=t;return(0,e0.SC)("/api/servers/".concat(encodeURIComponent(e),"/files/rename"),{method:"POST",body:JSON.stringify({oldPath:n,newPath:r})})},onSuccess:()=>{t.invalidateQueries({queryKey:["servers",e,"files"]})}})}(t),A=function(e){let t=(0,e$.NL)();return(0,eY.D)({mutationFn:async t=>{let{path:n,files:r}=t,s=new FormData;for(let e of r)s.append("files",e);let a=new URLSearchParams({path:n}),l=await fetch("/api/servers/".concat(encodeURIComponent(e),"/files/upload?").concat(a),{method:"POST",body:s});if(!l.ok){let e=await l.json().catch(()=>({error:"UnknownError",message:l.statusText})),t=Error(e.message);throw t.statusCode=l.status,t.code=e.error,t}return l.json()},onSuccess:()=>{t.invalidateQueries({queryKey:["servers",e,"files"]})}})}(t),M=(0,s.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"success";c({open:!0,message:e,severity:t})},[]),E=(0,s.useCallback)(e=>{a(e),i("")},[]),L=(0,s.useCallback)(e=>{let t="/"===n?"/".concat(e):"".concat(n,"/").concat(e);N.mutate({path:t},{onSuccess:()=>M('Folder "'.concat(e,'" created')),onError:e=>M(e.message,"error")})},[n,N,M]),q=(0,s.useCallback)((e,r)=>{switch(e){case"delete":m(r);break;case"rename":f(r);break;case"download":!function(e,t){let n=new URLSearchParams({path:t}),r="/api/servers/".concat(encodeURIComponent(e),"/files/download?").concat(n),s=document.createElement("a");s.href=r,s.download="",document.body.appendChild(s),s.click(),document.body.removeChild(s)}(t,"/"===n?"/".concat(r.name):"".concat(n,"/").concat(r.name));break;case"open":{let e="/"===n?"/".concat(r.name):"".concat(n,"/").concat(r.name);if("/"===n&&"server.properties"===r.name)R(e),S(!0);else{let t="/"===n?function(e){switch(e){case"whitelist.json":return"whitelist";case"ops.json":return"ops";case"banned-players.json":return"bans";default:return null}}(r.name):null;t?(j(t),C(e)):g(e)}}}},[n,t]),U=(0,s.useCallback)(e=>{A.mutate({path:n,files:e},{onSuccess:e=>{M("".concat(e.files.length," file(s) uploaded")),T(!1)},onError:e=>{M(e.message,"error")}})},[n,A,M]),K=(0,s.useCallback)(()=>{if(!u)return;let e="/"===n?"/".concat(u.name):"".concat(n,"/").concat(u.name);O.mutate({path:e},{onSuccess:()=>{M('"'.concat(u.name,'" deleted')),m(null)},onError:e=>{M(e.message,"error"),m(null)}})},[u,n,O,M]),B=(0,s.useCallback)(e=>{if(!y)return;let t="/"===n?"/".concat(y.name):"".concat(n,"/").concat(y.name),r="/"===n?"/".concat(e):"".concat(n,"/").concat(e);D.mutate({oldPath:t,newPath:r},{onSuccess:()=>{M('Renamed to "'.concat(e,'"')),f(null)},onError:e=>{M(e.message,"error"),f(null)}})},[y,n,D,M]),V=(0,s.useMemo)(()=>((null==I?void 0:I.files)||[]).map(e=>e.name),[null==I?void 0:I.files]);return F?(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(x.Z,{variant:"text",width:300,height:32,sx:{mb:2}}),(0,r.jsx)(x.Z,{variant:"rectangular",height:40,sx:{mb:2}}),[1,2,3,4,5].map(e=>(0,r.jsx)(x.Z,{variant:"rectangular",height:48,sx:{mb:.5}},e))]})}):z?(0,r.jsxs)(d.Z,{severity:"error",sx:{borderRadius:3},children:["Failed to load files: ",z.message]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(tl,{path:n,onNavigate:E}),(0,r.jsx)(tp,{searchQuery:l,onSearchChange:i,onCreateFolder:L,onUpload:()=>T(!0),onRefresh:()=>W(),existingNames:V,disabled:N.isPending}),(0,r.jsx)(tF,{files:(null==I?void 0:I.files)||[],currentPath:n,onNavigate:E,onFileAction:q,searchQuery:l})]})}),(0,r.jsx)(tG,{target:u,isPending:O.isPending,onConfirm:K,onClose:()=>m(null)}),(0,r.jsx)(t$,{target:y,existingNames:V,isPending:D.isPending,onConfirm:B,onClose:()=>f(null)}),(0,r.jsx)(nf,{open:P,isPending:A.isPending,onUpload:U,onClose:()=>T(!1)}),(0,r.jsx)(tV,{serverName:t,filePath:v,onClose:()=>g(null)}),(0,r.jsx)(nh,{serverName:t,open:w,filePath:k,onClose:()=>{S(!1),R(null)}}),(0,r.jsx)(t8,{serverName:t,editorType:b,filePath:Z,onClose:()=>{j(null),C(null)},onSwitchToRaw:e=>{j(null),C(null),g(e)}}),(0,r.jsx)(el.Z,{open:o.open,autoHideDuration:4e3,onClose:()=>c(e=>({...e,open:!1})),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,r.jsx)(d.Z,{onClose:()=>c(e=>({...e,open:!1})),severity:o.severity,variant:"filled",children:o.message})})]})}let ng=["Overview","Activity","Mods","Files","Backups","Access","Options"];function nb(e){return e.replace(/\x1b\[\?[\d;]*[a-zA-Z]/g,"").replace(/\x1b\[[0-9;]*[a-zA-Z]/g,"").replace(/\x1b=/g,"").replace(/\[\?[\d;]*[a-zA-Z]/g,"").replace(/\[[0-9;]*[a-zA-Z]/g,"").replace(/\[m/g,"").replace(/>\.\.\.\.\r?/g,"").replace(/\r/g,"").trim()}function nj(e){var t,n,a,l,d;let{server:u,onSendCommand:x}=e,[y,f]=(0,s.useState)("Overview"),[v,g]=(0,s.useState)(""),[j,C]=(0,s.useState)(!0),[R,P]=(0,s.useState)(!1),T=(0,s.useRef)(null),I=(0,M.Z)(),F=(0,E.Z)(I.breakpoints.down("sm")),{logs:z,isConnected:W}=(0,J.Y)({serverName:u.name}),O=(0,s.useMemo)(()=>z.filter(e=>!e.includes("RCON Listener")&&!e.includes("RCON Client")&&!e.includes("RconClient")),[z]);(0,s.useEffect)(()=>{T.current&&j&&(T.current.scrollTop=T.current.scrollHeight)},[O,j]);let Q=async()=>{v.trim()&&x&&(await x(v.trim()),g(""))},X=null!==(l=null===(t=u.stats)||void 0===t?void 0:t.cpuPercent)&&void 0!==l?l:0;(null===(n=u.stats)||void 0===n?void 0:n.memoryUsage)&&u.stats.memoryUsage,function(e){if(!e)return;let t=e.match(/^(\d+)\s*(M|G)?$/i);if(t)parseInt(t[1],10),(t[2]||"M").toUpperCase()}(u.memory);let $=null!==(d=null===(a=u.stats)||void 0===a?void 0:a.memoryPercent)&&void 0!==d?d:0;return(0,r.jsxs)(i.Z,{children:[(0,r.jsx)(i.Z,{sx:{display:"flex",flexWrap:"wrap",gap:.5,mb:3},children:ng.map(e=>(0,r.jsx)(o.Z,{onClick:()=>f(e),sx:{px:2,py:1,borderRadius:5,fontSize:14,fontWeight:500,textTransform:"none",bgcolor:y===e?"primary.main":"transparent",color:y===e?"#0a0e14":"text.secondary","&:hover":{bgcolor:y===e?"primary.main":(0,k.Fq)("#1bd96a",.1)}},children:e},e))}),(0,r.jsxs)(i.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"repeat(3, 1fr)"},gap:2,mb:2.5},children:[(0,r.jsx)(G,{value:"".concat(X.toFixed(2),"%"),unit:"/ 100%",label:"CPU usage",icon:(0,r.jsx)(q.Z,{sx:{fontSize:28}}),progress:X,progressMax:100,color:"#1bd96a"}),(0,r.jsx)(G,{value:"".concat($.toFixed(2),"%"),unit:"/ 100%",label:"Memory usage",icon:(0,r.jsx)(U.Z,{sx:{fontSize:28}}),progress:$,progressMax:100,color:"#1bd96a"}),(0,r.jsx)(G,{value:u.worldSize||"0 B",unit:"/ 10 GB",label:"World size",icon:(0,r.jsx)(K.Z,{sx:{fontSize:28}}),progress:function(e){if(!e)return 0;let t=e.match(/^([\d.]+)\s*(B|KB|MB|MiB|GB|GiB)?$/i);if(!t)return 0;let n=parseFloat(t[1]);switch((t[2]||"B").toUpperCase()){case"GB":case"GIB":return 1024*n;case"MB":case"MIB":return n;case"KB":return n/1024;default:return n/1048576}}(u.worldSize),progressMax:10240,color:"#1bd96a"})]}),(0,r.jsxs)(p.Z,{sx:{bgcolor:"background.paper",borderRadius:3,border:"1px solid",borderColor:"divider",overflow:"hidden"},children:[(0,r.jsxs)(i.Z,{sx:{px:3,py:2,borderBottom:"1px solid",borderColor:"divider",display:"flex",alignItems:"center",gap:1.25},children:[(0,r.jsx)(m.Z,{variant:"h6",sx:{fontWeight:700,color:"text.primary"},children:"Console"}),(0,r.jsx)(i.Z,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:W?"primary.main":"error.main",boxShadow:W?"0 0 8px rgba(27, 217, 106, 0.4)":"0 0 8px rgba(239, 68, 68, 0.4)"}})]}),(0,r.jsxs)(i.Z,{sx:{position:"relative"},children:[(0,r.jsx)(i.Z,{ref:T,onScroll:()=>{if(!T.current)return;let{scrollTop:e,scrollHeight:t,clientHeight:n}=T.current;C(t-e-n<30)},sx:{height:{xs:240,sm:360},overflowY:"auto",px:2.5,py:2,fontSize:13,lineHeight:1.85,color:"#b4b6c4",bgcolor:"#0a0a0a",scrollbarWidth:"thin",scrollbarColor:"#3a3d4e #0a0a0a","&::-webkit-scrollbar":{width:8},"&::-webkit-scrollbar-track":{bgcolor:"#0a0a0a"},"&::-webkit-scrollbar-thumb":{bgcolor:"#3a3d4e",borderRadius:4}},children:0===O.length?(0,r.jsx)(m.Z,{sx:{color:"text.secondary",textAlign:"center",py:8},children:"Waiting for logs..."}):O.map((e,t)=>{let n=function(e){let t=nb(e).match(/\[(\d{2}:\d{2}:\d{2})\]\s*\[([^/]+)\/(\w+)\]:\s*(.+)/);return t?{time:t[1],thread:t[2],level:t[3]||"INFO",msg:t[4]}:null}(e);return n?(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:[(0,r.jsxs)(i.Z,{component:"span",sx:{color:"#4a4d60"},children:["[",n.time,"]"]}),(0,r.jsxs)(i.Z,{component:"span",sx:{color:"#4a4d60"},children:["\xa0[",n.thread,"/",(0,r.jsx)(i.Z,{component:"span",sx:{color:"WARN"===n.level?"#e8a848":"#6b6e80"},children:n.level}),"]:\xa0"]}),(0,r.jsx)(i.Z,{component:"span",sx:{color:"WARN"===n.level?"#c4a45a":"#b4b6c4"},children:n.msg})]},t):(0,r.jsx)(i.Z,{sx:{color:"#b4b6c4"},children:nb(e)},t)})}),(0,r.jsx)(c.Z,{onClick:()=>P(!0),sx:{position:"absolute",top:12,right:12,width:36,height:36,borderRadius:2,bgcolor:"#282a3a",border:"1px solid #3a3d4e",color:"#8b8da0","&:hover":{bgcolor:"#313440"}},children:(0,r.jsx)(B.Z,{sx:{fontSize:18}})}),!j&&(0,r.jsx)(c.Z,{onClick:()=>{T.current&&T.current.scrollTo({top:T.current.scrollHeight,behavior:"smooth"})},sx:{position:"absolute",bottom:12,right:12,width:36,height:36,borderRadius:2,bgcolor:"#282a3a",border:"1px solid #3a3d4e",color:"#8b8da0","&:hover":{bgcolor:"#313440"}},children:(0,r.jsx)(V.Z,{sx:{fontSize:18}})})]}),(0,r.jsx)(i.Z,{sx:{px:2.5,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:(0,r.jsx)(w.Z,{fullWidth:!0,size:"small",placeholder:"Send a command",value:v,onChange:e=>g(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),Q())},disabled:!W,InputProps:{startAdornment:(0,r.jsx)(D.Z,{position:"start",children:(0,r.jsx)(H.Z,{sx:{fontSize:16,color:"#999"}})}),sx:{bgcolor:"#13141c",borderRadius:2,fontSize:14,"& .MuiOutlinedInput-notchedOutline":{borderColor:"#2a2d3e"},"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#3a3d4e"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"primary.main"}}}})})]}),"Overview"===y&&(0,r.jsxs)(S.ZP,{container:!0,spacing:3,sx:{mt:1},children:[(0,r.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(m.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Server Information"}),(0,r.jsx)(A.Z,{sx:{mb:2}}),(0,r.jsx)(nZ,{label:"Name",value:u.name}),(0,r.jsx)(nZ,{label:"Container",value:u.container}),(0,r.jsx)(nZ,{label:"Hostname",value:u.hostname?(0,r.jsx)(e6.h,{hostname:u.hostname,color:"text.primary"}):void 0}),(0,r.jsx)(nZ,{label:"Type",value:u.type}),(0,r.jsx)(nZ,{label:"Version",value:u.version}),(0,r.jsx)(nZ,{label:"Memory",value:u.memory}),(0,r.jsx)(nZ,{label:"Uptime",value:u.uptime||function(e){if(!e||e<0)return"0s";let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?"".concat(t,"h ").concat(n,"m"):n>0?"".concat(n,"m ").concat(r,"s"):"".concat(r,"s")}(u.uptimeSeconds)})]})})}),(0,r.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(m.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Players"}),(0,r.jsx)(A.Z,{sx:{mb:2}}),u.players?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(nZ,{label:"Online",value:"".concat(u.players.online," / ").concat(u.players.max)}),u.players.players&&u.players.players.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",sx:{mt:2,mb:1},children:"Online Players"}),(0,r.jsx)(i.Z,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:u.players.players.map(e=>(0,r.jsx)(N.Z,{label:e,size:"small"},e))})]})]}):(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:"Player information unavailable"})]})})}),(0,r.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(e5,{serverName:u.name,hostname:u.hostname})})]}),"Activity"===y&&(0,r.jsx)(i.Z,{sx:{mt:3},children:(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(m.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Server Activity"}),(0,r.jsx)(A.Z,{sx:{mb:2}}),(0,r.jsx)(ea,{serverName:u.name})]})})}),"Mods"===y&&(0,r.jsx)(i.Z,{sx:{mt:3},children:(0,r.jsx)(te,{serverName:u.name})}),"Files"===y&&(0,r.jsx)(i.Z,{sx:{mt:3},children:(0,r.jsx)(nv,{serverName:u.name})}),"Backups"===y&&(0,r.jsx)(i.Z,{sx:{mt:3},children:(0,r.jsx)(m.Z,{variant:"body1",color:"text.secondary",children:"Backup management coming soon"})}),"Access"===y&&(0,r.jsx)(i.Z,{sx:{mt:3},children:(0,r.jsx)(e2,{serverId:u.name})}),"Options"===y&&(0,r.jsx)(i.Z,{sx:{mt:3},children:(0,r.jsx)(eM,{serverName:u.name,isRunning:"running"===u.status})}),(0,r.jsxs)(b.Z,{open:R,onClose:()=>P(!1),maxWidth:"xl",fullWidth:!0,fullScreen:F,PaperProps:{sx:{height:F?"100vh":"90vh",bgcolor:"background.paper"}},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",p:2,borderBottom:1,borderColor:"divider"},children:[(0,r.jsxs)(m.Z,{variant:"h6",sx:{fontFamily:'"Minecraft", sans-serif',fontWeight:400,letterSpacing:"0.05em"},children:["Console - ",u.name]}),(0,r.jsx)(c.Z,{onClick:()=>P(!1),"aria-label":"Close console",children:(0,r.jsx)(L.Z,{})})]}),(0,r.jsx)(Z.Z,{sx:{p:0,display:"flex",flexDirection:"column"},children:(0,r.jsx)(_.K,{serverName:u.name})})]})]})}function nZ(e){let{label:t,value:n}=e;return n?(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,r.jsx)(m.Z,{variant:"body2",color:"text.secondary",children:t}),(0,r.jsx)(m.Z,{variant:"body2",component:"div",sx:{fontWeight:500},children:n})]}):null}var nC=n(93757);function nw(){return(0,r.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,r.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})}function nS(){return(0,r.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("path",{d:"M21 2v6h-6"}),(0,r.jsx)("path",{d:"M3 12a9 9 0 0115.36-6.36L21 8"}),(0,r.jsx)("path",{d:"M3 22v-6h6"}),(0,r.jsx)("path",{d:"M21 12a9 9 0 01-15.36 6.36L3 16"})]})}function nk(){var e,t,n,N;let D=(0,a.useParams)(),A=(0,l.x)(),M=decodeURIComponent(D.name),{data:E,isLoading:L,error:q}=(0,ed.Hy)(M),{status:U,health:K}=function(e){let{serverName:t,onStatusChange:n,enabled:r=!0,reconnectInterval:a=3e3}=e,[l,i]=(0,s.useState)(null),[o,c]=(0,s.useState)(null);(0,s.useEffect)(()=>{i(null),c(null)},[t]);let d=(0,s.useCallback)(e=>{if("server-status"===e.type){let t=e.data.status,r=e.data.health;i(t),c(r),null==n||n(t,r)}},[n]),{isConnected:u,reconnect:x,retryCount:p}=(0,nC.D)({url:"/api/sse/servers/".concat(encodeURIComponent(t),"/status"),onMessage:d,enabled:r,reconnectInterval:a});return{status:l,health:o,isConnected:u,reconnect:x,retryCount:p}}({serverName:M,enabled:!!M}),[B,V]=(0,s.useState)(null),[H,Q]=(0,s.useState)(!1),[G,J]=(0,s.useState)(""),_=(0,ed.jM)(),X=(0,ed.Aw)(),$=(0,ed._I)(),Y=(0,ed.Hq)(),ee=async()=>{try{await _.mutateAsync(M)}catch(e){console.error("Failed to start server:",e)}},et=async()=>{try{await X.mutateAsync(M)}catch(e){console.error("Failed to stop server:",e)}},en=async()=>{try{await $.mutateAsync(M)}catch(e){console.error("Failed to restart server:",e)}},er=async e=>{try{await fetch("/api/servers/".concat(encodeURIComponent(M),"/exec"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:e})})}catch(e){console.error("Failed to send command:",e)}},es=U||(null==E?void 0:E.server.status),ea=_.isPending||X.isPending||$.isPending,el=null==E?void 0:E.server;return(0,r.jsxs)(r.Fragment,{children:[q&&(0,r.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to load server: ",q.message]}),_.isError&&(0,r.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to start server: ",null===(e=_.error)||void 0===e?void 0:e.message]}),X.isError&&(0,r.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to stop server: ",null===(t=X.error)||void 0===t?void 0:t.message]}),$.isError&&(0,r.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to restart server: ",null===(n=$.error)||void 0===n?void 0:n.message]}),Y.isError&&(0,r.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to delete server: ",null===(N=Y.error)||void 0===N?void 0:N.message]}),L?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2,mb:2.5},children:[(0,r.jsx)(x.Z,{variant:"rounded",width:64,height:64,sx:{borderRadius:3,flexShrink:0}}),(0,r.jsxs)(i.Z,{sx:{flex:1},children:[(0,r.jsx)(x.Z,{variant:"text",width:80,height:18,sx:{mb:.5}}),(0,r.jsx)(x.Z,{variant:"text",width:"40%",height:40}),(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:2,mt:.75},children:[(0,r.jsx)(x.Z,{variant:"text",width:100}),(0,r.jsx)(x.Z,{variant:"text",width:60}),(0,r.jsx)(x.Z,{variant:"text",width:140}),(0,r.jsx)(x.Z,{variant:"text",width:50})]})]}),(0,r.jsxs)(i.Z,{sx:{display:"flex",gap:1,flexShrink:0},children:[(0,r.jsx)(x.Z,{variant:"rounded",width:90,height:40,sx:{borderRadius:2}}),(0,r.jsx)(x.Z,{variant:"rounded",width:36,height:36,sx:{borderRadius:2}})]})]}),(0,r.jsx)(i.Z,{sx:{display:"flex",gap:.5,mb:3},children:[80,70,65,50,65,65].map((e,t)=>(0,r.jsx)(x.Z,{variant:"rounded",width:e,height:36,sx:{borderRadius:5}},t))}),(0,r.jsx)(i.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"repeat(3, 1fr)"},gap:2,mb:2.5},children:[0,1,2].map(e=>(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1.5},children:[(0,r.jsx)(x.Z,{variant:"text",width:"50%"}),(0,r.jsx)(x.Z,{variant:"circular",width:28,height:28})]}),(0,r.jsx)(x.Z,{variant:"text",width:"60%",height:36}),(0,r.jsx)(x.Z,{variant:"rounded",width:"100%",height:6,sx:{borderRadius:3,mt:1}})]})},e))}),(0,r.jsxs)(p.Z,{sx:{borderRadius:3,border:"1px solid",borderColor:"divider"},children:[(0,r.jsxs)(i.Z,{sx:{px:3,py:2,borderBottom:"1px solid",borderColor:"divider",display:"flex",alignItems:"center",gap:1.25},children:[(0,r.jsx)(x.Z,{variant:"text",width:80,height:28}),(0,r.jsx)(x.Z,{variant:"circular",width:10,height:10})]}),(0,r.jsx)(x.Z,{variant:"rectangular",height:360,sx:{bgcolor:"#0a0a0a"}}),(0,r.jsx)(i.Z,{sx:{px:2.5,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:(0,r.jsx)(x.Z,{variant:"rounded",width:"100%",height:40,sx:{borderRadius:2}})})]}),(0,r.jsxs)(S.ZP,{container:!0,spacing:3,sx:{mt:1},children:[(0,r.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(x.Z,{variant:"text",width:"40%",height:28,sx:{mb:1}}),(0,r.jsx)(x.Z,{variant:"rectangular",height:1,sx:{mb:2}}),[0,1,2,3,4,5,6].map(e=>(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,r.jsx)(x.Z,{variant:"text",width:"30%"}),(0,r.jsx)(x.Z,{variant:"text",width:"40%"})]},e))]})})}),(0,r.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(p.Z,{sx:{borderRadius:3},children:(0,r.jsxs)(h.Z,{children:[(0,r.jsx)(x.Z,{variant:"text",width:"30%",height:28,sx:{mb:1}}),(0,r.jsx)(x.Z,{variant:"rectangular",height:1,sx:{mb:2}}),(0,r.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,r.jsx)(x.Z,{variant:"text",width:"25%"}),(0,r.jsx)(x.Z,{variant:"text",width:"20%"})]})]})})})]})]}):el?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2,mb:2.5},children:[(0,r.jsx)(i.Z,{sx:{width:64,height:64,borderRadius:3,overflow:"hidden",bgcolor:"background.paper",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,border:"1px solid",borderColor:"divider",fontSize:36},children:function(e){if(!e)return"\uD83C\uDFAE";let t=e.toUpperCase();return["PAPER","SPIGOT","BUKKIT","PURPUR"].includes(t)?"\uD83D\uDD0C":["FORGE","NEOFORGE","FABRIC","QUILT"].includes(t)?"\uD83D\uDD27":"\uD83C\uDFAE"}(el.type)}),(0,r.jsxs)(i.Z,{sx:{flex:1},children:[(0,r.jsxs)(m.Z,{onClick:()=>A.push("/servers"),sx:{fontSize:12,color:"primary.main",cursor:"pointer",mb:.25,display:"flex",alignItems:"center",gap:.5,"&:hover":{textDecoration:"underline"}},children:[(0,r.jsx)(R.Z,{sx:{fontSize:14}})," All servers"]}),(0,r.jsx)(m.Z,{variant:"h4",component:"h1",sx:{fontFamily:'"Minecraft", sans-serif',fontWeight:400,color:"text.primary",letterSpacing:"0.5px",m:0,textTransform:"uppercase"},children:M}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:0,mt:.75,flexWrap:"wrap",fontSize:13,color:"text.secondary"},children:[el.version&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(F.Z,{sx:{fontSize:14}}),"Minecraft ",el.version]}),(0,r.jsx)(i.Z,{component:"span",sx:{mx:1.25,color:"#3a3d4e"},children:"|"})]}),el.type&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(z.Z,{sx:{fontSize:14}}),el.type]}),(0,r.jsx)(i.Z,{component:"span",sx:{mx:1.25,color:"#3a3d4e"},children:"|"})]}),el.hostname&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(W.Z,{sx:{fontSize:14}}),(0,r.jsx)(e6.h,{hostname:el.hostname,fontSize:13})]}),(0,r.jsx)(i.Z,{component:"span",sx:{mx:1.25,color:"#3a3d4e"},children:"|"})]}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(O.Z,{sx:{fontSize:14}}),el.uptime||function(e){if(!e||e<0)return"0s";let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?"".concat(t,"h ").concat(n,"m"):n>0?"".concat(n,"m ").concat(r,"s"):"".concat(r,"s")}(el.uptimeSeconds)||"0s"]})]})]}),(0,r.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1.25,flexShrink:0},children:[("stopped"===es||"exited"===es||"not_created"===es)&&(0,r.jsx)(o.Z,{variant:"contained",color:"success",startIcon:ea?(0,r.jsx)(u.Z,{size:16,color:"inherit"}):(0,r.jsx)(P.Z,{}),onClick:ee,disabled:ea,sx:{px:2,py:1,borderRadius:2,fontSize:14,fontWeight:600},children:"Start"}),"running"===es&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.Z,{variant:"outlined",startIcon:ea?(0,r.jsx)(u.Z,{size:16}):(0,r.jsx)(nw,{}),onClick:et,disabled:ea,sx:{px:2,py:1,borderRadius:2,fontSize:14,fontWeight:500,borderColor:"divider",color:"text.secondary","&:hover":{borderColor:"text.secondary",bgcolor:(0,k.Fq)("#fff",.05)}},children:"Stop"}),(0,r.jsx)(o.Z,{variant:"contained",startIcon:ea?(0,r.jsx)(u.Z,{size:16,color:"inherit"}):(0,r.jsx)(nS,{}),onClick:en,disabled:ea,sx:{px:2,py:1,borderRadius:2,fontSize:14,fontWeight:600,bgcolor:"primary.main",color:"#0a0e14","&:hover":{bgcolor:"primary.dark"}},children:"Restart"})]}),(0,r.jsx)(c.Z,{onClick:e=>V(e.currentTarget),sx:{width:36,height:36,borderRadius:2,border:"1px solid",borderColor:"divider",color:"text.secondary"},children:(0,r.jsx)(T.Z,{sx:{fontSize:18}})}),(0,r.jsx)(y.Z,{anchorEl:B,open:!!B,onClose:()=>V(null),children:(0,r.jsxs)(f.Z,{onClick:()=>{V(null),Q(!0),J("")},sx:{color:"error.main"},children:[(0,r.jsx)(v.Z,{children:(0,r.jsx)(I.Z,{fontSize:"small",sx:{color:"error.main"}})}),(0,r.jsx)(g.Z,{children:"Delete Server"})]})})]})]}),(0,r.jsx)(nj,{server:el,onSendCommand:er})]}):(0,r.jsx)(d.Z,{severity:"warning",children:"Server not found"}),(0,r.jsxs)(b.Z,{open:H,onClose:()=>{Q(!1),J("")},maxWidth:"sm",fullWidth:!0,children:[(0,r.jsx)(j.Z,{children:"Delete Server"}),(0,r.jsxs)(Z.Z,{children:[(0,r.jsxs)(m.Z,{sx:{mb:2},children:["This action cannot be undone. Type ",(0,r.jsx)("strong",{children:M})," to confirm deletion."]}),(0,r.jsx)(w.Z,{label:"Server name",value:G,onChange:e=>J(e.target.value),fullWidth:!0,autoFocus:!0})]}),(0,r.jsxs)(C.Z,{sx:{px:3,pb:2},children:[(0,r.jsx)(o.Z,{onClick:()=>{Q(!1),J("")},children:"Cancel"}),(0,r.jsx)(o.Z,{variant:"contained",color:"error",onClick:()=>{G===M&&Y.mutate({name:M,force:!0},{onSuccess:()=>{A.push("/servers")}})},disabled:G!==M||Y.isPending,startIcon:Y.isPending?(0,r.jsx)(u.Z,{size:16}):null,children:Y.isPending?"Deleting...":"Delete"})]})]})]})}},56813:function(e,t,n){"use strict";n.d(t,{I:function(){return l}});var r=n(94655),s=n(25333),a=n(82925);function l(e){let{action:t,size:n="small"}=e,l=a.Lu[t]||"default",i=a.n3[t]||t;return(0,r.jsx)(s.Z,{label:i,color:l,size:n,variant:"filled",sx:{fontWeight:600,fontSize:"small"===n?"0.7rem":"0.8rem"}})}},26892:function(e,t,n){"use strict";n.d(t,{c:function(){return i}});var r=n(94655),s=n(25333),a=n(46207),l=n(43436);function i(e){let{status:t,size:n="small"}=e;return(0,r.jsx)(s.Z,{icon:"success"===t?(0,r.jsx)(a.Z,{}):(0,r.jsx)(l.Z,{}),label:"success"===t?"OK":"Error",color:"success"===t?"success":"error",size:n,variant:"outlined",sx:{fontWeight:500,fontSize:"small"===n?"0.7rem":"0.8rem"}})}},97511:function(e,t,n){"use strict";n.d(t,{q:function(){return o},h:function(){return h}});var r=n(94655),s=n(35106),a=n(79983),l=n(10449),i=n(24559);function o(e){let{text:t,size:n=14}=e,[o,c]=(0,s.useState)(!1),d=async e=>{e.stopPropagation();try{await navigator.clipboard.writeText(t),c(!0),setTimeout(()=>c(!1),2e3)}catch(e){}};return(0,r.jsx)(a.Z,{size:"small",onClick:d,sx:{ml:.5,p:.25,color:o?"success.main":"text.secondary","&:hover":{bgcolor:"action.hover"}},"aria-label":o?"Copied":"Copy to clipboard",children:o?(0,r.jsx)(i.Z,{sx:{fontSize:n}}):(0,r.jsx)(l.Z,{sx:{fontSize:n}})})}var c=n(7281),d=n(31317),u=n(25333),x=n(93300);function p(e){return e?e.split(",").map(e=>e.trim()).filter(Boolean):[]}function h(e){let{hostname:t,portSuffix:n,color:a="text.secondary",fontSize:l,showCopyButton:i=!1}=e,[h,m]=(0,s.useState)(null),y=p(t),f=function(e){let t=p(e);return 0===t.length?"-":t.find(e=>e.endsWith(".local"))||t[0]}(t),v=e=>n?"".concat(e,":").concat(n):e;return 0===y.length?(0,r.jsx)(c.Z,{component:"span",sx:{color:a,fontSize:l,display:"inline"},children:"-"}):1===y.length?(0,r.jsxs)(c.Z,{component:"span",sx:{display:"inline-flex",alignItems:"center"},children:[(0,r.jsx)(c.Z,{component:"span",sx:{color:a,fontSize:l,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v(f)}),i&&(0,r.jsx)(o,{text:v(f)})]}):(0,r.jsxs)(c.Z,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75,minWidth:0},children:[(0,r.jsx)(c.Z,{component:"span",sx:{color:a,fontSize:l,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v(f)}),(0,r.jsx)(u.Z,{label:"+".concat(y.length-1),size:"small",onClick:e=>{e.stopPropagation(),m(e.currentTarget)},sx:{height:20,fontSize:11,cursor:"pointer","& .MuiChip-label":{px:.75}}}),(0,r.jsx)(x.ZP,{open:!!h,anchorEl:h,onClose:()=>{m(null)},onClick:e=>e.stopPropagation(),anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},children:(0,r.jsx)(c.Z,{sx:{p:1.5,minWidth:200},children:y.map(e=>(0,r.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",py:.5},children:[(0,r.jsx)(d.Z,{variant:"body2",sx:{fontSize:12},children:v(e)}),(0,r.jsx)(o,{text:v(e)})]},e))})})]})}},3454:function(e,t,n){"use strict";n.d(t,{LoadingProvider:function(){return o},startLoading:function(){return c},stopLoading:function(){return d}});var r=n(94655),s=n(35106),a=n(74228),l=n(31477),i=n.n(l);function o(e){let{children:t}=e,n=(0,a.usePathname)(),l=(0,a.useSearchParams)();return(0,s.useEffect)(()=>{i().done()},[n,l]),(0,r.jsx)(r.Fragment,{children:t})}function c(){i().start()}function d(){i().done()}i().configure({showSpinner:!1,speed:300,minimum:.1})},8690:function(e,t,n){"use strict";n.d(t,{Av:function(){return r.startLoading}});var r=n(3454)},73660:function(e,t,n){"use strict";n.d(t,{K:function(){return R}});var r=n(94655),s=n(35106),a=n(18844),l=n.n(a),i=n(7281),o=n(69899),c=n(97436),d=n(30417),u=n(90829),x=n(79983),p=n(31317),h=n(25333),m=n(40064),y=n(45547),f=n(70115),v=n(69123),g=n(93017),b=n(11141),j=n(19127),Z=n(69366),C=n(163);let w=[{label:"say",template:"say "},{label:"give",template:"give "},{label:"tp",template:"tp "},{label:"gamemode",template:"gamemode "}],S=new(l())({fg:"#aaa",bg:"#000",newline:!1,escapeXML:!0,colors:{0:"#000000",1:"#cc0000",2:"#4e9a06",3:"#c4a000",4:"#3465a4",5:"#75507b",6:"#06989a",7:"#d3d7cf",8:"#555753",9:"#ef2929",10:"#8ae234",11:"#fce94f",12:"#729fcf",13:"#ad7fa8",14:"#34e2e2",15:"#eeeeec"}}),k=(0,s.memo)(function(e){let{log:t}=e,n=(0,s.useMemo)(()=>(function(e){let t=e.replace(/\x1b\[\?[\d;]*[a-zA-Z]/g,"").replace(/\x1b\[[0-9;]*[KJH]/g,"").replace(/\x1b=/g,"").replace(/\[\?[\d;]*[a-zA-Z]/g,"").replace(/\[[0-9;]*[KJH]/g,"").replace(/\[m/g,"").replace(/\[(\d+)m/g,"\x1b[$1m").replace(/>\.\.\.\.\r?/g,"").replace(/\r/g,"");return S.toHtml(t)})(t),[t]);return(0,r.jsx)(i.Z,{sx:{py:.25,whiteSpace:"pre-wrap",wordBreak:"break-all","& span":{}},dangerouslySetInnerHTML:{__html:n}})});function R(e){let{serverName:t}=e,[n,a]=(0,s.useState)(""),[l,S]=(0,s.useState)([]),[R,P]=(0,s.useState)(-1),[T,I]=(0,s.useState)("ALL"),[F,z]=(0,s.useState)(!0),[W,O]=(0,s.useState)(!0),[N,D]=(0,s.useState)(!1),A=(0,s.useRef)(null),M=(0,s.useRef)(null),{logs:E,isConnected:L,clearLogs:q,reconnect:U,retryCount:K}=(0,C.Y)({serverName:t}),B=(0,s.useMemo)(()=>{let e=E;return W&&(e=e.filter(e=>!e.includes("RCON Listener")&&!e.includes("RCON Client")&&!e.includes("RconClient"))),"ALL"!==T&&(e=e.filter(e=>(e.includes("/ERROR]")||e.includes("/ERROR:")?"ERROR":e.includes("/WARN]")||e.includes("/WARN:")?"WARN":(e.includes("/INFO]")||e.includes("/INFO:"),"INFO"))===T)),e},[E,T,W]);(0,s.useEffect)(()=>{F&&M.current&&(M.current.scrollTop=M.current.scrollHeight)},[B,F]);let V=(0,s.useCallback)(async()=>{let e=n.trim();if(e&&!N){D(!0);try{S(t=>[...t,e]),P(-1),await fetch("/api/servers/".concat(encodeURIComponent(t),"/exec"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:e})}),a("")}catch(e){console.error("Failed to execute command:",e)}finally{D(!1)}}},[n,t,N]),H=(0,s.useCallback)(e=>{if("Enter"===e.key)e.preventDefault(),V();else if("ArrowUp"===e.key){if(e.preventDefault(),0===l.length)return;let t=-1===R?l.length-1:Math.max(0,R-1);P(t),a(l[t])}else if("ArrowDown"===e.key){if(e.preventDefault(),-1===R)return;let t=R+1;t>=l.length?(P(-1),a("")):(P(t),a(l[t]))}},[l,R,V]),Q=(0,s.useCallback)(e=>{var t;a(e),null===(t=A.current)||void 0===t||t.focus()},[]),G=L?{text:"Connected",color:"success"}:K>0?{text:"Disconnected (Retry ".concat(K,")"),color:"warning"}:{text:"Disconnected",color:"error"};return(0,r.jsxs)(o.Z,{"data-testid":"server-console",sx:{display:"flex",flexDirection:"column",height:"100%",minHeight:400},children:[(0,r.jsxs)(i.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},alignItems:{xs:"flex-start",sm:"center"},justifyContent:"space-between",px:2,py:1,gap:1,borderBottom:1,borderColor:"divider"},children:[(0,r.jsxs)(f.Z,{direction:"row",spacing:1,alignItems:"center",children:[(0,r.jsx)(p.Z,{variant:"subtitle2",children:"Console"}),(0,r.jsx)(h.Z,{"data-testid":"connection-status",label:G.text,color:G.color,size:"small"})]}),(0,r.jsxs)(f.Z,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,r.jsx)(u.Z,{size:"small",variant:"outlined",children:["ALL","INFO","WARN","ERROR"].map(e=>(0,r.jsx)(d.Z,{onClick:()=>I(e),variant:T===e?"contained":"outlined",children:e},e))}),(0,r.jsx)(m.Z,{control:(0,r.jsx)(y.Z,{checked:F,onChange:e=>z(e.target.checked),size:"small",inputProps:{"aria-label":"Auto-scroll"}}),label:"Auto-scroll"}),(0,r.jsx)(m.Z,{control:(0,r.jsx)(y.Z,{checked:W,onChange:e=>O(e.target.checked),size:"small",inputProps:{"aria-label":"Hide RCON"}}),label:"Hide RCON"}),(0,r.jsx)(x.Z,{size:"small",onClick:q,"aria-label":"Clear logs",title:"Clear logs",children:(0,r.jsx)(j.Z,{})}),!L&&(0,r.jsx)(d.Z,{size:"small",startIcon:(0,r.jsx)(Z.Z,{}),onClick:U,"aria-label":"Reconnect",children:"Reconnect"})]})]}),(0,r.jsx)(i.Z,{ref:M,sx:{flex:1,overflow:"auto",bgcolor:"#1a1a1a",p:1,fontSize:"0.85rem"},children:0===B.length?(0,r.jsx)(p.Z,{color:"text.secondary",sx:{textAlign:"center",py:4,color:"#666"},children:"Waiting for logs..."}):B.map((e,t)=>(0,r.jsx)(k,{log:e},t))}),(0,r.jsx)(v.Z,{}),(0,r.jsx)(i.Z,{sx:{px:2,py:1,bgcolor:"background.default"},children:(0,r.jsxs)(f.Z,{direction:"row",spacing:1,children:[(0,r.jsx)(p.Z,{variant:"caption",color:"text.secondary",sx:{alignSelf:"center"},children:"Quick:"}),w.map(e=>(0,r.jsx)(d.Z,{size:"small",variant:"outlined",onClick:()=>Q(e.template),children:e.label},e.label))]})}),(0,r.jsx)(v.Z,{}),(0,r.jsxs)(i.Z,{sx:{display:"flex",p:1,gap:1},children:[(0,r.jsx)(c.Z,{inputRef:A,fullWidth:!0,size:"small",placeholder:"Enter command...",value:n,onChange:e=>a(e.target.value),onKeyDown:H,disabled:!L||N,InputProps:{}}),(0,r.jsx)(d.Z,{variant:"contained",onClick:V,disabled:!n.trim()||!L||N,startIcon:N?(0,r.jsx)(g.Z,{size:16}):(0,r.jsx)(b.Z,{}),"aria-label":"Send command",children:"Send"})]})]})}},42936:function(e,t,n){"use strict";async function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={...t.headers};t.body&&(n["Content-Type"]="application/json");let r=await fetch(e,{...t,headers:n});if(!r.ok){let e=await r.json().catch(()=>({error:"UnknownError",message:r.statusText})),t=Error(e.message);throw t.statusCode=r.status,t.code=e.error,t}return r.json()}n.d(t,{SC:function(){return r}})},31358:function(e,t,n){"use strict";n.d(t,{x:function(){return l}});var r=n(74228),s=n(35106),a=n(8690);function l(){let e=(0,r.useRouter)(),t=(0,s.useCallback)((t,n)=>{(0,a.Av)(),e.push(t,n)},[e]),n=(0,s.useCallback)((t,n)=>{(0,a.Av)(),e.replace(t,n)},[e]);return(0,s.useMemo)(()=>({...e,push:t,replace:n}),[e,t,n])}},84509:function(e,t,n){"use strict";n.d(t,{DM:function(){return l},HZ:function(){return o},VM:function(){return i},hT:function(){return a},oL:function(){return c}});var r=n(5632),s=n(42936);function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=function(e){let t=new URLSearchParams;e.action&&t.set("action",e.action),e.actor&&t.set("actor",e.actor),e.targetType&&t.set("targetType",e.targetType),e.targetName&&t.set("targetName",e.targetName),e.status&&t.set("status",e.status),e.from&&t.set("from",e.from),e.to&&t.set("to",e.to),void 0!==e.limit&&t.set("limit",String(e.limit)),void 0!==e.offset&&t.set("offset",String(e.offset)),e.sort&&t.set("sort",e.sort);let n=t.toString();return n?"?".concat(n):""}(e);return(0,r.a)({queryKey:["audit-logs",e],queryFn:()=>(0,s.SC)("/api/audit-logs".concat(n)),enabled:(null==t?void 0:t.enabled)!==!1})}function l(e){return(0,r.a)({queryKey:["audit-logs","stats"],queryFn:()=>(0,s.SC)("/api/audit-logs/stats"),enabled:(null==e?void 0:e.enabled)!==!1,refetchInterval:3e4})}function i(e,t){return(0,r.a)({queryKey:["audit-logs",e],queryFn:()=>(0,s.SC)("/api/audit-logs/".concat(encodeURIComponent(e))),enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function o(e,t){var n;return a({targetType:"server",targetName:e,limit:null!==(n=null==t?void 0:t.limit)&&void 0!==n?n:20},{enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;return a({limit:e,sort:"timestamp:desc"})}},92666:function(e,t,n){"use strict";n.d(t,{$t:function(){return S},Aw:function(){return u},Bx:function(){return Z},Fv:function(){return f},Hq:function(){return c},Hy:function(){return o},Js:function(){return j},Ll:function(){return F},MH:function(){return g},S0:function(){return z},Sr:function(){return p},Yo:function(){return T},_I:function(){return x},c5:function(){return k},g2:function(){return y},gx:function(){return b},hy:function(){return h},iC:function(){return v},jM:function(){return d},mj:function(){return w},nq:function(){return m},nv:function(){return C},ox:function(){return P},s8:function(){return R},x$:function(){return i},zF:function(){return I}});var r=n(5632),s=n(58919),a=n(20367),l=n(42936);function i(){return(0,r.a)({queryKey:["servers"],queryFn:()=>(0,l.SC)("/api/servers"),refetchInterval:6e4})}function o(e,t){return(0,r.a)({queryKey:["servers",e],queryFn:()=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e))),enabled:(null==t?void 0:t.enabled)!==!1&&!!e,refetchInterval:3e4})}function c(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{name:t,force:n}=e;return(0,l.SC)("/api/servers/".concat(encodeURIComponent(t)).concat(n?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["servers"]})}})}function d(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function u(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function x(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/restart"),{method:"POST"}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function p(){return(0,r.a)({queryKey:["worlds"],queryFn:()=>(0,l.SC)("/api/worlds"),refetchInterval:3e4})}function h(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>(0,l.SC)("/api/worlds",{method:"POST",body:JSON.stringify(e)}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function m(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{worldName:t,serverName:n}=e;return(0,l.SC)("/api/worlds/".concat(encodeURIComponent(t),"/assign"),{method:"POST",body:JSON.stringify({serverName:n})})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}function y(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{worldName:t,force:n}=e;return(0,l.SC)("/api/worlds/".concat(encodeURIComponent(t),"/release").concat(n?"?force=true":""),{method:"POST"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function f(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{name:t,force:n}=e;return(0,l.SC)("/api/worlds/".concat(encodeURIComponent(t)).concat(n?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function v(e,t){return(0,r.a)({queryKey:["servers",e,"config"],queryFn:()=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/config")),enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function g(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{serverName:t,config:n}=e;return(0,l.SC)("/api/servers/".concat(encodeURIComponent(t),"/config"),{method:"PATCH",body:JSON.stringify(n)})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"config"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function b(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/world/reset"),{method:"POST"}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["servers",n]}),e.invalidateQueries({queryKey:["worlds"]})}})}function j(e,t){return(0,r.a)({queryKey:["servers",e,"hostnames"],queryFn:()=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/hostnames")),enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function Z(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{serverName:t,customHostnames:n}=e;return(0,l.SC)("/api/servers/".concat(encodeURIComponent(t),"/hostnames"),{method:"PUT",body:JSON.stringify({customHostnames:n})})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"hostnames"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function C(){return(0,r.a)({queryKey:["router-status"],queryFn:()=>(0,l.SC)("/api/router/status"),refetchInterval:3e4})}function w(){return(0,r.a)({queryKey:["backup-status"],queryFn:()=>(0,l.SC)("/api/backup"),refetchInterval:6e4})}function S(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return(0,r.a)({queryKey:["backup-history",e],queryFn:()=>(0,l.SC)("/api/backup/history?limit=".concat(e)),refetchInterval:6e4})}function k(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{message:t}=e;return(0,l.SC)("/api/backup",{method:"POST",body:JSON.stringify({message:t})})},onSuccess:()=>{e.invalidateQueries({queryKey:["backup-status"]}),e.invalidateQueries({queryKey:["backup-history"]})}})}function R(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>(0,l.SC)("/api/backup/restore",{method:"POST",body:JSON.stringify({commitHash:e})}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}function P(e){return(0,r.a)({queryKey:["servers",e,"whitelist"],queryFn:()=>(0,l.SC)("/api/players/whitelist?server=".concat(encodeURIComponent(e))),enabled:!!e})}function T(e){return(0,r.a)({queryKey:["servers",e,"whitelist-status"],queryFn:()=>(0,l.SC)("/api/players/whitelist/status?server=".concat(encodeURIComponent(e))),enabled:!!e})}function I(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{serverName:t,enabled:n}=e;return(0,l.SC)("/api/players/whitelist/status",{method:"PUT",body:JSON.stringify({server:t,enabled:n})})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"whitelist-status"]}),e.invalidateQueries({queryKey:["servers",r,"whitelist"]})}})}function F(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{serverName:t,player:n}=e;return(0,l.SC)("/api/players/whitelist",{method:"POST",body:JSON.stringify({server:t,player:n})})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"whitelist"]})}})}function z(){let e=(0,s.NL)();return(0,a.D)({mutationFn:e=>{let{serverName:t,player:n}=e;return(0,l.SC)("/api/players/whitelist?player=".concat(encodeURIComponent(n),"&server=").concat(encodeURIComponent(t)),{method:"DELETE"})},onSuccess:(t,n)=>{let{serverName:r}=n;e.invalidateQueries({queryKey:["servers",r,"whitelist"]})}})}},37228:function(e,t,n){"use strict";n.d(t,{Bc:function(){return o},N$:function(){return c},UW:function(){return i}});var r=n(5632),s=n(58919),a=n(20367),l=n(42936);function i(){return(0,r.a)({queryKey:["playit-status"],queryFn:()=>(0,l.SC)("/api/playit/status"),refetchInterval:3e4})}function o(){let e=(0,s.NL)();return(0,a.D)({mutationFn:()=>(0,l.SC)("/api/playit/start",{method:"POST"}),onSuccess:()=>{e.invalidateQueries({queryKey:["playit-status"]})}})}function c(){let e=(0,s.NL)();return(0,a.D)({mutationFn:()=>(0,l.SC)("/api/playit/stop",{method:"POST"}),onSuccess:()=>{e.invalidateQueries({queryKey:["playit-status"]})}})}},93757:function(e,t,n){"use strict";n.d(t,{D:function(){return a}});var r=n(35106);class s{connect(e){this.options=e,this.shouldReconnect=!0,this.establishConnection()}establishConnection(){this.options&&(this.updateState("connecting"),this.eventSource&&this.eventSource.close(),this.eventSource=new EventSource(this.options.url,{withCredentials:this.options.withCredentials||!1}),this.eventSource.onopen=()=>{this.updateState("connected"),this.retryCount=0,this.lastError=null},this.eventSource.onmessage=e=>{if(!e.data.startsWith(":"))try{var t,n;let r=JSON.parse(e.data);null===(n=this.options)||void 0===n||null===(t=n.onMessage)||void 0===t||t.call(n,r)}catch(e){console.warn("Failed to parse SSE message:",e)}},this.eventSource.onerror=()=>{var e,t;let n={message:"SSE connection error",code:"CONNECTION_ERROR",retryCount:this.retryCount,timestamp:new Date};this.lastError=n,this.updateState("error"),null===(t=this.options)||void 0===t||null===(e=t.onError)||void 0===e||e.call(t,n),this.shouldReconnect&&this.scheduleReconnect()})}scheduleReconnect(){var e,t;if(!this.options)return;let n=null!==(e=this.options.maxReconnectAttempts)&&void 0!==e?e:1/0;if(this.retryCount>=n)return;this.reconnectTimer&&clearTimeout(this.reconnectTimer);let r=null!==(t=this.options.reconnectInterval)&&void 0!==t?t:3e3;this.reconnectTimer=setTimeout(()=>{this.retryCount++,this.establishConnection()},r)}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.updateState("disconnected")}getState(){return this.state}isConnected(){return"connected"===this.state}getLastError(){return this.lastError}getRetryCount(){return this.retryCount}reconnect(){this.retryCount++,this.shouldReconnect=!0,this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.establishConnection()}updateState(e){var t,n;this.state=e,null===(n=this.options)||void 0===n||null===(t=n.onStateChange)||void 0===t||t.call(n,e)}constructor(){this.eventSource=null,this.state="disconnected",this.retryCount=0,this.lastError=null,this.reconnectTimer=null,this.options=null,this.shouldReconnect=!0}}function a(e){let{url:t,onMessage:n,onError:a,reconnectInterval:l=3e3,maxReconnectAttempts:i=1/0,enabled:o=!0,withCredentials:c=!1}=e,[d,u]=(0,r.useState)(null),[x,p]=(0,r.useState)("disconnected"),[h,m]=(0,r.useState)(null),[y,f]=(0,r.useState)(0),v=(0,r.useRef)(null),g=(0,r.useCallback)(e=>{u(e),null==n||n(e)},[n]),b=(0,r.useCallback)(e=>{p(e),"connected"===e&&f(0)},[]),j=(0,r.useCallback)(e=>{m(e),"number"==typeof e.retryCount&&f(e.retryCount),null==a||a(e)},[a]),Z=(0,r.useCallback)(()=>{v.current&&(v.current.reconnect(),f(v.current.getRetryCount()))},[]),C=(0,r.useCallback)(()=>{v.current&&v.current.disconnect()},[]);return(0,r.useEffect)(()=>{if(!o){v.current&&(v.current.disconnect(),v.current=null);return}return v.current||(v.current=new s),v.current.connect({url:t,onMessage:g,onStateChange:b,onError:j,reconnectInterval:l,maxReconnectAttempts:i,withCredentials:c}),()=>{v.current&&(v.current.disconnect(),v.current=null)}},[t,o,l,i,c,g,b,j]),{data:d,isConnected:"connected"===x,state:x,error:h,retryCount:y,reconnect:Z,disconnect:C}}},163:function(e,t,n){"use strict";n.d(t,{Y:function(){return a}});var r=n(35106),s=n(93757);function a(e){let{serverName:t,maxLines:n=500,enabled:a=!0,reconnectInterval:l=3e3}=e,[i,o]=(0,r.useState)([]);(0,r.useEffect)(()=>{o([])},[t]);let c=(0,r.useCallback)(e=>{let t;"server-log"===e.type?t=e.data.log:"log"in e&&"string"==typeof e.log&&(t=e.log),t&&o(e=>{let r=[...e,t];return r.length>n?r.slice(r.length-n):r})},[n]),{isConnected:d,reconnect:u,retryCount:x}=(0,s.D)({url:"/api/sse/servers/".concat(encodeURIComponent(t),"/logs"),onMessage:c,enabled:a,reconnectInterval:l});return{logs:i,isConnected:d,clearLogs:(0,r.useCallback)(()=>{o([])},[]),reconnect:u,retryCount:x}}},82925:function(e,t,n){"use strict";n.d(t,{KK:function(){return i},Lu:function(){return r},Xn:function(){return l},n3:function(){return s},xg:function(){return a}});let r={"server.create":"success","server.delete":"error","server.start":"info","server.stop":"warning","server.restart":"secondary","player.whitelist.add":"success","player.whitelist.remove":"warning","player.ban":"error","player.unban":"success","player.op":"info","player.deop":"warning","player.kick":"error","audit.purge":"default"},s={"server.create":"Create","server.delete":"Delete","server.start":"Start","server.stop":"Stop","server.restart":"Restart","player.whitelist.add":"Whitelist Add","player.whitelist.remove":"Whitelist Remove","player.ban":"Ban","player.unban":"Unban","player.op":"Op","player.deop":"Deop","player.kick":"Kick","audit.purge":"Purge"},a=["server.create","server.delete","server.start","server.stop","server.restart","player.whitelist.add","player.whitelist.remove","player.ban","player.unban","player.op","player.deop","player.kick","audit.purge"],l=["server.create","server.delete","server.start","server.stop","server.restart"],i=["player.whitelist.add","player.whitelist.remove","player.ban","player.unban","player.op","player.deop","player.kick"]}},function(e){e.O(0,[8206,6812,9760,5004,7296,7436,1071,540,4416,2538,880,5511,55,2844,4219,8347,4841,7073,1658,9097,6727,1055,6650,9788,7730,5498,3669,2757,1744],function(){return e(e.s=59616)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[224],{49726:function(e,r,t){Promise.resolve().then(t.bind(t,7854))},7854:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return ea}});var s=t(94655),n=t(35106),a=t(31358),l=t(7281),i=t(30417),o=t(81071),c=t(93017),d=t(69899),x=t(31317),u=t(76492),m=t(32366),p=t(78067),h=t(84840),f=t(97436),g=t(52082),v=t(89923),j=t(10297),y=t(42431),Z=t(628),b=t(41565),S=t(25935),C=t(79983),k=t(25333),w=t(97511),I=t(5501),P=t(93315),T=t(27171),E=t(96292);let F=e=>{switch(e){case"running":return"success";case"stopped":case"exited":case"not_created":return"error";case"created":return"warning";default:return"default"}},R=e=>{switch(e){case"running":return"Running";case"stopped":case"exited":return"Stopped";case"not_created":return"Not Created";case"created":return"Created";default:return e||"Unknown"}};function W(e){let{server:r,statusOverride:t,onClick:n,onStart:a,onStop:i,loading:o=!1}=e,c=(null==t?void 0:t.status)||r.status,d=(e,t)=>{e.stopPropagation(),t(r.name)},u="running"===c,m="stopped"===c||"exited"===c||"not_created"===c;return(0,s.jsxs)(Z.Z,{role:"article",onClick:()=>{n&&n(r.name)},sx:{cursor:n?"pointer":"default",transition:"all 0.2s",height:{xs:"auto",sm:180},minHeight:{xs:140,sm:180},display:"flex",flexDirection:"column","&:hover":n?{transform:"translateY(-2px)",boxShadow:4}:{}},children:[(0,s.jsxs)(b.Z,{sx:{flex:1,pb:1},children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,s.jsx)(x.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:r.name}),(0,s.jsx)(k.Z,{label:R(c),size:"small",color:F(c),sx:{fontWeight:500,minWidth:70}})]}),(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,s.jsx)(E.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,s.jsx)(w.h,{hostname:r.hostname})]}),(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(T.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,s.jsx)(x.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.container})]})]}),(0,s.jsxs)(S.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[m&&a&&(0,s.jsx)(C.Z,{"aria-label":"Start server",color:"success",onClick:e=>d(e,a),disabled:o,size:"small",children:(0,s.jsx)(I.Z,{})}),u&&i&&(0,s.jsx)(C.Z,{"aria-label":"Stop server",color:"error",onClick:e=>d(e,i),disabled:o,size:"small",children:(0,s.jsx)(P.Z,{})}),!m&&!u&&(0,s.jsx)(l.Z,{sx:{height:34}})]})]})}function z(e){let{servers:r,statusMap:t={},onServerClick:a,onStart:o,onStop:c,onCreate:d,loadingServers:u=[]}=e,[p,Z]=(0,n.useState)(""),[b,S]=(0,n.useState)("all"),C=(0,n.useMemo)(()=>r.filter(e=>{if(p&&!e.name.toLowerCase().includes(p.toLowerCase()))return!1;let r=t[e.name],s=(null==r?void 0:r.status)||e.status;return("running"!==b||"running"===s)&&("stopped"!==b||"stopped"===s||"exited"===s||"not_created"===s)}),[r,t,p,b]);return 0===r.length?(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"400px",gap:2},children:[(0,s.jsx)(x.Z,{variant:"h6",color:"text.secondary",children:"No servers found"}),d&&(0,s.jsx)(i.Z,{variant:"contained",startIcon:(0,s.jsx)(m.Z,{}),onClick:d,children:"Create Server"})]}):(0,s.jsxs)(l.Z,{children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:2,mb:3,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,s.jsxs)(j.Z,{value:b,exclusive:!0,onChange:(e,r)=>{null!==r&&S(r)},size:"small",sx:{flexShrink:0},children:[(0,s.jsx)(v.Z,{value:"all",children:"All"}),(0,s.jsx)(v.Z,{value:"running",children:"Running"}),(0,s.jsx)(v.Z,{value:"stopped",children:"Stopped"})]}),(0,s.jsx)(f.Z,{size:"small",placeholder:"Search servers...",value:p,onChange:e=>Z(e.target.value),InputProps:{startAdornment:(0,s.jsx)(g.Z,{position:"start",children:(0,s.jsx)(y.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,s.jsxs)(x.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[C.length," ",1===C.length?"server":"servers"]}),0===C.length?(0,s.jsx)(l.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,s.jsx)(x.Z,{variant:"h6",color:"text.secondary",children:"No servers found"})}):(0,s.jsx)(h.ZP,{container:!0,spacing:2,children:C.map(e=>(0,s.jsx)(h.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,s.jsx)(W,{server:e,statusOverride:t[e.name],onClick:a,onStart:o,onStop:c,loading:u.includes(e.name)})},e.name))})]})}var M=t(83855),O=t(44059),A=t(99770),L=t(62508),D=t(5682),N=t(76678),G=t(7178),_=t(40064),V=t(45547),q=t(4405),H=t(73383),U=t(82285),$=t(13609),B=t(46207),J=t(43436),Y=t(87716),K=t(71185);let Q=["VANILLA","PAPER","FABRIC","FORGE","NEOFORGE"],X=["","forge","fabric","neoforge","quilt"],ee={name:"",type:"PAPER",version:"1.21.1",memory:"4G",autoStart:!1,sudoPassword:""},er=[{key:"initializing",label:"Initializing"},{key:"creating",label:"Creating"},{key:"configuring",label:"Configuring"},{key:"starting",label:"Starting"}];function et(e){let r,{open:t,onClose:a,onSubmit:d,loading:u=!1,status:m="idle",progress:p=0,message:h=""}=e,g=(0,M.Z)(),y=(0,O.Z)(g.breakpoints.down("sm")),[Z,b]=(0,n.useState)("standard"),[S,k]=(0,n.useState)(ee),[w,I]=(0,n.useState)({}),[P,T]=(0,n.useState)(!1),E=(0,n.useRef)(null),F=(0,n.useRef)(null),R=er.findIndex(e=>e.key===m),W="idle"!==m&&"completed"!==m&&"error"!==m;(0,n.useEffect)(()=>{t||(b("standard"),k(ee),I({}),T(!1))},[t]);let z=e=>e?/^[a-z0-9-]+$/.test(e)?null:"Only lowercase letters, numbers, and hyphens are allowed":"Server name is required",et=e=>e?null:"Modpack slug is required",es=e=>r=>{let t=r.target.value;k(r=>({...r,[e]:t})),"memory"===e&&T(!0),w[e]&&I(r=>({...r,[e]:""}))};return(0,s.jsx)(A.Z,{open:t,onClose:W?void 0:a,maxWidth:"sm",fullWidth:!0,fullScreen:y,children:(0,s.jsxs)("form",{onSubmit:e=>{e.preventDefault(),I({});let r=z(S.name);if(r){I({name:r});return}if("modpack"===Z){let e=et(S.modpack||"");if(e){I({modpack:e});return}}let t={name:S.name,memory:S.memory,autoStart:S.autoStart,sudoPassword:S.sudoPassword};"standard"===Z?(t.type=S.type,t.version=S.version):(t.type="MODRINTH",t.modpack=S.modpack,S.modpackVersion&&(t.modpackVersion=S.modpackVersion),S.modLoader&&(t.modLoader=S.modLoader)),d(t)},children:[(0,s.jsxs)(L.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:["completed"===m?(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(B.Z,{color:"success"}),"Server Created Successfully"]}):"error"===m?(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(J.Z,{color:"error"}),"Creation Failed"]}):"Create New Server",y&&!W&&(0,s.jsx)(C.Z,{onClick:a,"aria-label":"Close dialog",edge:"end",children:(0,s.jsx)(K.Z,{})})]}),(0,s.jsx)(D.Z,{children:W||"completed"===m||"error"===m?(0,s.jsxs)(l.Z,{sx:{py:2},children:[(0,s.jsx)(H.Z,{activeStep:R,alternativeLabel:!0,sx:{mb:3},children:er.map(e=>(0,s.jsx)(U.Z,{children:(0,s.jsx)($.Z,{children:e.label})},e.key))}),W&&(0,s.jsxs)(l.Z,{sx:{mb:3},children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,s.jsx)(x.Z,{variant:"body2",color:"text.secondary",children:h}),(0,s.jsxs)(x.Z,{variant:"body2",color:"text.secondary",children:[p,"%"]})]}),(0,s.jsx)(q.Z,{variant:"determinate",value:p})]}),"completed"===m&&(0,s.jsx)(x.Z,{color:"success.main",sx:{textAlign:"center"},children:h}),"error"===m&&(0,s.jsx)(x.Z,{color:"error.main",sx:{textAlign:"center"},children:h})]}):(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,s.jsx)(l.Z,{ref:F,role:"status","aria-live":"polite",sx:{position:"absolute",left:"-10000px",width:"1px",height:"1px",overflow:"hidden"}}),(0,s.jsx)(f.Z,{label:"Server Name",value:S.name,onChange:es("name"),error:!!w.name,helperText:w.name||"Only lowercase letters, numbers, and hyphens",fullWidth:!0,autoFocus:!0,disabled:W}),(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2},children:[(0,s.jsx)(x.Z,{variant:"subtitle2",color:"text.secondary",children:"Server Type"}),(0,s.jsxs)(j.Z,{value:Z,exclusive:!0,onChange:(e,r)=>{null!==r&&(b(r),F.current&&(F.current.textContent="".concat("standard"===r?"Standard Server":"Modpack"," category selected")),P||k(e=>({...e,memory:"standard"===r?"4G":"6G"})),setTimeout(()=>{"modpack"===r&&E.current&&E.current.focus()},300))},"aria-label":"Server category",fullWidth:!0,disabled:W,children:[(0,s.jsx)(v.Z,{value:"standard","aria-label":"Standard Server",children:"Standard Server"}),(0,s.jsx)(v.Z,{value:"modpack","aria-label":"Modpack",children:"Modpack"})]}),(0,s.jsx)(Y.Z,{in:"standard"===Z,unmountOnExit:!0,children:(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,mt:2},children:[(0,s.jsx)(f.Z,{label:"Server Type",select:!0,value:S.type,onChange:es("type"),fullWidth:!0,disabled:W,children:Q.map(e=>(0,s.jsx)(G.Z,{value:e,children:e},e))}),(0,s.jsx)(f.Z,{label:"Minecraft Version",value:S.version,onChange:es("version"),helperText:"e.g., 1.21.1, 1.20.4, latest",fullWidth:!0,disabled:W})]})}),(0,s.jsx)(Y.Z,{in:"modpack"===Z,unmountOnExit:!0,children:(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,mt:2},children:[(0,s.jsx)(o.Z,{severity:"info",children:"Minecraft version is automatically determined by the modpack"}),(0,s.jsx)(f.Z,{label:"Modpack Slug",value:S.modpack||"",onChange:es("modpack"),error:!!w.modpack,helperText:w.modpack||"e.g., cobblemon, adrenaserver (from modrinth.com/modpacks/SLUG)",fullWidth:!0,disabled:W,inputRef:E}),(0,s.jsxs)(f.Z,{label:"Mod Loader",select:!0,value:S.modLoader||"",onChange:es("modLoader"),helperText:"Leave empty to auto-detect from modpack",fullWidth:!0,disabled:W,children:[(0,s.jsx)(G.Z,{value:"",children:"Auto-detect"}),X.filter(e=>e).map(e=>(0,s.jsx)(G.Z,{value:e,children:e},e))]}),(0,s.jsx)(f.Z,{label:"Modpack Version",value:S.modpackVersion||"",onChange:es("modpackVersion"),helperText:"Leave empty for latest",fullWidth:!0,disabled:W})]})})]}),(0,s.jsx)(f.Z,{label:"Memory",value:S.memory,onChange:es("memory"),helperText:"e.g., 4G, 8G, 16G",fullWidth:!0,disabled:W}),(0,s.jsx)(f.Z,{label:"Sudo Password",type:"password",value:S.sudoPassword||"",onChange:es("sudoPassword"),helperText:"Required for mDNS hostname registration (avahi)",fullWidth:!0,disabled:W}),(0,s.jsx)(_.Z,{control:(0,s.jsx)(V.Z,{checked:S.autoStart||!1,onChange:(r="autoStart",e=>{k(t=>({...t,[r]:e.target.checked}))}),disabled:W}),label:"Auto-start after creation"})]})}),(0,s.jsx)(N.Z,{sx:{px:3,pb:2},children:"completed"===m||"error"===m?(0,s.jsx)(i.Z,{onClick:a,variant:"contained",fullWidth:!0,children:"Close"}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.Z,{onClick:a,disabled:W,children:"Cancel"}),(0,s.jsx)(i.Z,{type:"submit",variant:"contained",disabled:W,startIcon:W?(0,s.jsx)(c.Z,{size:16}):null,children:W?"Creating...":"Create"})]})})]})})}var es=t(92666),en=t(59104);function ea(){var e,r;let t=(0,a.x)(),[h,f]=(0,n.useState)(!1),[g,v]=(0,n.useState)([]),{data:j,isLoading:y,error:Z}=(0,es.x$)(),{statusMap:b}=(0,en.d)(),S=(0,es.jM)(),C=(0,es.Aw)(),k=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onSuccess:r,onError:t,onProgress:s}=e,[a,l]=(0,n.useState)("idle"),[i,o]=(0,n.useState)(0),[c,d]=(0,n.useState)(""),[x,u]=(0,n.useState)(null),m=(0,n.useRef)(null),p=(0,n.useRef)(""),h=(0,n.useCallback)(()=>{l("idle"),o(0),d(""),u(null),m.current&&(m.current.close(),m.current=null)},[]),f=(0,n.useCallback)((e,r,t)=>{l(e),d(r),o(t),null==s||s(e,r,t)},[s]),g=(0,n.useCallback)(async e=>{if("idle"===a||"completed"===a||"error"===a){u(null),f("initializing","Initializing server creation...",0),p.current=e.name,m.current&&m.current.close();try{let t=await fetch("/api/servers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.text();throw Error(e||"Server creation failed: ".concat(t.statusText))}await t.json(),f("creating","Creating server configuration...",25),await new Promise(e=>setTimeout(e,500)),f("configuring","Configuring Docker compose...",50),await new Promise(e=>setTimeout(e,500)),f("starting","Starting server container...",75),await new Promise(e=>setTimeout(e,500)),f("completed","Server created successfully!",100),null==r||r(e.name)}catch(r){let e=r instanceof Error?r.message:"Unknown error occurred";l("error"),u(e),d("Server creation failed"),null==t||t(e)}}},[a,f,r,t]);return(0,n.useEffect)(()=>()=>{m.current&&(m.current.close(),m.current=null)},[]),{status:a,progress:i,message:c,error:x,isCreating:"idle"!==a&&"completed"!==a&&"error"!==a,createServer:g,reset:h}}({onSuccess:()=>{f(!1)},onError:e=>{console.error("Failed to create server:",e)}}),w=async e=>{v(r=>[...r,e]);try{await S.mutateAsync(e)}catch(e){console.error("Failed to start server:",e)}finally{v(r=>r.filter(r=>r!==e))}},I=async e=>{v(r=>[...r,e]);try{await C.mutateAsync(e)}catch(e){console.error("Failed to stop server:",e)}finally{v(r=>r.filter(r=>r!==e))}};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(d.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,u.Fq)(e.palette.info.main,.1)," 0%, ").concat((0,u.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,u.Fq)(e.palette.info.main,.2)),display:"flex",flexDirection:{xs:"column",sm:"row"},justifyContent:"space-between",alignItems:{xs:"flex-start",sm:"center"},gap:2},children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,s.jsx)(l.Z,{sx:{display:{xs:"none",sm:"flex"},alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"info.main",color:"info.contrastText"},children:(0,s.jsx)(p.Z,{sx:{fontSize:32}})}),(0,s.jsxs)(l.Z,{children:[(0,s.jsx)(x.Z,{variant:"h4",component:"h1",fontWeight:"bold",sx:{fontSize:{xs:"1.5rem",sm:"2.125rem"}},children:"Servers"}),(0,s.jsx)(x.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft servers"})]})]}),(0,s.jsx)(i.Z,{variant:"contained",startIcon:(0,s.jsx)(m.Z,{}),onClick:()=>f(!0),size:"large",sx:{width:{xs:"100%",sm:"auto"}},children:"Create Server"})]}),Z&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to load servers: ",Z.message]}),k.error&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to create server: ",k.error]}),S.isError&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to start server: ",null===(e=S.error)||void 0===e?void 0:e.message]}),C.isError&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to stop server: ",null===(r=C.error)||void 0===r?void 0:r.message]}),y?(0,s.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,s.jsx)(c.Z,{})}):(0,s.jsx)(z,{servers:(null==j?void 0:j.servers)||[],statusMap:b,onServerClick:e=>{t.push("/servers/".concat(encodeURIComponent(e)))},onStart:w,onStop:I,onCreate:()=>f(!0),loadingServers:g}),(0,s.jsx)(et,{open:h,onClose:()=>{f(!1),k.reset()},onSubmit:e=>{k.createServer(e)},loading:k.isCreating,status:k.status,progress:k.progress,message:k.message})]})}}},function(e){e.O(0,[6812,9760,5004,7296,7436,1071,540,4416,2538,880,8738,1658,6909,6727,837,6646,2666,2701,3669,2757,1744],function(){return e(e.s=49726)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[224],{49726:function(e,r,t){Promise.resolve().then(t.bind(t,7854))},7854:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return ea}});var s=t(94655),n=t(35106),a=t(31358),l=t(7281),i=t(30417),o=t(81071),c=t(93017),d=t(69899),x=t(31317),u=t(76492),m=t(32366),p=t(78067),h=t(84840),f=t(97436),g=t(52082),v=t(89923),j=t(10297),y=t(42431),Z=t(628),b=t(41565),S=t(25935),C=t(79983),k=t(25333),w=t(97511),I=t(5501),P=t(93315),T=t(27171),E=t(96292);let F=e=>{switch(e){case"running":return"success";case"stopped":case"exited":case"not_created":return"error";case"created":return"warning";default:return"default"}},R=e=>{switch(e){case"running":return"Running";case"stopped":case"exited":return"Stopped";case"not_created":return"Not Created";case"created":return"Created";default:return e||"Unknown"}};function W(e){let{server:r,statusOverride:t,onClick:n,onStart:a,onStop:i,loading:o=!1}=e,c=(null==t?void 0:t.status)||r.status,d=(e,t)=>{e.stopPropagation(),t(r.name)},u="running"===c,m="stopped"===c||"exited"===c||"not_created"===c;return(0,s.jsxs)(Z.Z,{role:"article",onClick:()=>{n&&n(r.name)},sx:{cursor:n?"pointer":"default",transition:"all 0.2s",height:{xs:"auto",sm:180},minHeight:{xs:140,sm:180},display:"flex",flexDirection:"column","&:hover":n?{transform:"translateY(-2px)",boxShadow:4}:{}},children:[(0,s.jsxs)(b.Z,{sx:{flex:1,pb:1},children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,s.jsx)(x.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:r.name}),(0,s.jsx)(k.Z,{label:R(c),size:"small",color:F(c),sx:{fontWeight:500,minWidth:70}})]}),(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,s.jsx)(E.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,s.jsx)(w.h,{hostname:r.hostname})]}),(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(T.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,s.jsx)(x.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.container})]})]}),(0,s.jsxs)(S.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[m&&a&&(0,s.jsx)(C.Z,{"aria-label":"Start server",color:"success",onClick:e=>d(e,a),disabled:o,size:"small",children:(0,s.jsx)(I.Z,{})}),u&&i&&(0,s.jsx)(C.Z,{"aria-label":"Stop server",color:"error",onClick:e=>d(e,i),disabled:o,size:"small",children:(0,s.jsx)(P.Z,{})}),!m&&!u&&(0,s.jsx)(l.Z,{sx:{height:34}})]})]})}function z(e){let{servers:r,statusMap:t={},onServerClick:a,onStart:o,onStop:c,onCreate:d,loadingServers:u=[]}=e,[p,Z]=(0,n.useState)(""),[b,S]=(0,n.useState)("all"),C=(0,n.useMemo)(()=>r.filter(e=>{if(p&&!e.name.toLowerCase().includes(p.toLowerCase()))return!1;let r=t[e.name],s=(null==r?void 0:r.status)||e.status;return("running"!==b||"running"===s)&&("stopped"!==b||"stopped"===s||"exited"===s||"not_created"===s)}),[r,t,p,b]);return 0===r.length?(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"400px",gap:2},children:[(0,s.jsx)(x.Z,{variant:"h6",color:"text.secondary",children:"No servers found"}),d&&(0,s.jsx)(i.Z,{variant:"contained",startIcon:(0,s.jsx)(m.Z,{}),onClick:d,children:"Create Server"})]}):(0,s.jsxs)(l.Z,{children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:2,mb:3,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,s.jsxs)(j.Z,{value:b,exclusive:!0,onChange:(e,r)=>{null!==r&&S(r)},size:"small",sx:{flexShrink:0},children:[(0,s.jsx)(v.Z,{value:"all",children:"All"}),(0,s.jsx)(v.Z,{value:"running",children:"Running"}),(0,s.jsx)(v.Z,{value:"stopped",children:"Stopped"})]}),(0,s.jsx)(f.Z,{size:"small",placeholder:"Search servers...",value:p,onChange:e=>Z(e.target.value),InputProps:{startAdornment:(0,s.jsx)(g.Z,{position:"start",children:(0,s.jsx)(y.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,s.jsxs)(x.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[C.length," ",1===C.length?"server":"servers"]}),0===C.length?(0,s.jsx)(l.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,s.jsx)(x.Z,{variant:"h6",color:"text.secondary",children:"No servers found"})}):(0,s.jsx)(h.ZP,{container:!0,spacing:2,children:C.map(e=>(0,s.jsx)(h.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,s.jsx)(W,{server:e,statusOverride:t[e.name],onClick:a,onStart:o,onStop:c,loading:u.includes(e.name)})},e.name))})]})}var M=t(83855),O=t(44059),A=t(99770),L=t(62508),D=t(5682),N=t(76678),G=t(7178),_=t(40064),V=t(45547),q=t(4405),H=t(73383),U=t(82285),$=t(13609),B=t(46207),J=t(43436),Y=t(87716),K=t(71185);let Q=["VANILLA","PAPER","FABRIC","FORGE","NEOFORGE"],X=["","forge","fabric","neoforge","quilt"],ee={name:"",type:"PAPER",version:"1.21.1",memory:"4G",autoStart:!1,sudoPassword:""},er=[{key:"initializing",label:"Initializing"},{key:"creating",label:"Creating"},{key:"configuring",label:"Configuring"},{key:"starting",label:"Starting"}];function et(e){let r,{open:t,onClose:a,onSubmit:d,loading:u=!1,status:m="idle",progress:p=0,message:h=""}=e,g=(0,M.Z)(),y=(0,O.Z)(g.breakpoints.down("sm")),[Z,b]=(0,n.useState)("standard"),[S,k]=(0,n.useState)(ee),[w,I]=(0,n.useState)({}),[P,T]=(0,n.useState)(!1),E=(0,n.useRef)(null),F=(0,n.useRef)(null),R=er.findIndex(e=>e.key===m),W="idle"!==m&&"completed"!==m&&"error"!==m;(0,n.useEffect)(()=>{t||(b("standard"),k(ee),I({}),T(!1))},[t]);let z=e=>e?/^[a-z0-9-]+$/.test(e)?null:"Only lowercase letters, numbers, and hyphens are allowed":"Server name is required",et=e=>e?null:"Modpack slug is required",es=e=>r=>{let t=r.target.value;k(r=>({...r,[e]:t})),"memory"===e&&T(!0),w[e]&&I(r=>({...r,[e]:""}))};return(0,s.jsx)(A.Z,{open:t,onClose:W?void 0:a,maxWidth:"sm",fullWidth:!0,fullScreen:y,children:(0,s.jsxs)("form",{onSubmit:e=>{e.preventDefault(),I({});let r=z(S.name);if(r){I({name:r});return}if("modpack"===Z){let e=et(S.modpack||"");if(e){I({modpack:e});return}}let t={name:S.name,memory:S.memory,autoStart:S.autoStart,sudoPassword:S.sudoPassword};"standard"===Z?(t.type=S.type,t.version=S.version):(t.type="MODRINTH",t.modpack=S.modpack,S.modpackVersion&&(t.modpackVersion=S.modpackVersion),S.modLoader&&(t.modLoader=S.modLoader)),d(t)},children:[(0,s.jsxs)(L.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:["completed"===m?(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(B.Z,{color:"success"}),"Server Created Successfully"]}):"error"===m?(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(J.Z,{color:"error"}),"Creation Failed"]}):"Create New Server",y&&!W&&(0,s.jsx)(C.Z,{onClick:a,"aria-label":"Close dialog",edge:"end",children:(0,s.jsx)(K.Z,{})})]}),(0,s.jsx)(D.Z,{children:W||"completed"===m||"error"===m?(0,s.jsxs)(l.Z,{sx:{py:2},children:[(0,s.jsx)(H.Z,{activeStep:R,alternativeLabel:!0,sx:{mb:3},children:er.map(e=>(0,s.jsx)(U.Z,{children:(0,s.jsx)($.Z,{children:e.label})},e.key))}),W&&(0,s.jsxs)(l.Z,{sx:{mb:3},children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,s.jsx)(x.Z,{variant:"body2",color:"text.secondary",children:h}),(0,s.jsxs)(x.Z,{variant:"body2",color:"text.secondary",children:[p,"%"]})]}),(0,s.jsx)(q.Z,{variant:"determinate",value:p})]}),"completed"===m&&(0,s.jsx)(x.Z,{color:"success.main",sx:{textAlign:"center"},children:h}),"error"===m&&(0,s.jsx)(x.Z,{color:"error.main",sx:{textAlign:"center"},children:h})]}):(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,s.jsx)(l.Z,{ref:F,role:"status","aria-live":"polite",sx:{position:"absolute",left:"-10000px",width:"1px",height:"1px",overflow:"hidden"}}),(0,s.jsx)(f.Z,{label:"Server Name",value:S.name,onChange:es("name"),error:!!w.name,helperText:w.name||"Only lowercase letters, numbers, and hyphens",fullWidth:!0,autoFocus:!0,disabled:W}),(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2},children:[(0,s.jsx)(x.Z,{variant:"subtitle2",color:"text.secondary",children:"Server Type"}),(0,s.jsxs)(j.Z,{value:Z,exclusive:!0,onChange:(e,r)=>{null!==r&&(b(r),F.current&&(F.current.textContent="".concat("standard"===r?"Standard Server":"Modpack"," category selected")),P||k(e=>({...e,memory:"standard"===r?"4G":"6G"})),setTimeout(()=>{"modpack"===r&&E.current&&E.current.focus()},300))},"aria-label":"Server category",fullWidth:!0,disabled:W,children:[(0,s.jsx)(v.Z,{value:"standard","aria-label":"Standard Server",children:"Standard Server"}),(0,s.jsx)(v.Z,{value:"modpack","aria-label":"Modpack",children:"Modpack"})]}),(0,s.jsx)(Y.Z,{in:"standard"===Z,unmountOnExit:!0,children:(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,mt:2},children:[(0,s.jsx)(f.Z,{label:"Server Type",select:!0,value:S.type,onChange:es("type"),fullWidth:!0,disabled:W,children:Q.map(e=>(0,s.jsx)(G.Z,{value:e,children:e},e))}),(0,s.jsx)(f.Z,{label:"Minecraft Version",value:S.version,onChange:es("version"),helperText:"e.g., 1.21.1, 1.20.4, latest",fullWidth:!0,disabled:W})]})}),(0,s.jsx)(Y.Z,{in:"modpack"===Z,unmountOnExit:!0,children:(0,s.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,mt:2},children:[(0,s.jsx)(o.Z,{severity:"info",children:"Minecraft version is automatically determined by the modpack"}),(0,s.jsx)(f.Z,{label:"Modpack Slug",value:S.modpack||"",onChange:es("modpack"),error:!!w.modpack,helperText:w.modpack||"e.g., cobblemon, adrenaserver (from modrinth.com/modpacks/SLUG)",fullWidth:!0,disabled:W,inputRef:E}),(0,s.jsxs)(f.Z,{label:"Mod Loader",select:!0,value:S.modLoader||"",onChange:es("modLoader"),helperText:"Leave empty to auto-detect from modpack",fullWidth:!0,disabled:W,children:[(0,s.jsx)(G.Z,{value:"",children:"Auto-detect"}),X.filter(e=>e).map(e=>(0,s.jsx)(G.Z,{value:e,children:e},e))]}),(0,s.jsx)(f.Z,{label:"Modpack Version",value:S.modpackVersion||"",onChange:es("modpackVersion"),helperText:"Leave empty for latest",fullWidth:!0,disabled:W})]})})]}),(0,s.jsx)(f.Z,{label:"Memory",value:S.memory,onChange:es("memory"),helperText:"e.g., 4G, 8G, 16G",fullWidth:!0,disabled:W}),(0,s.jsx)(f.Z,{label:"Sudo Password",type:"password",value:S.sudoPassword||"",onChange:es("sudoPassword"),helperText:"Required for mDNS hostname registration (avahi)",fullWidth:!0,disabled:W}),(0,s.jsx)(_.Z,{control:(0,s.jsx)(V.Z,{checked:S.autoStart||!1,onChange:(r="autoStart",e=>{k(t=>({...t,[r]:e.target.checked}))}),disabled:W}),label:"Auto-start after creation"})]})}),(0,s.jsx)(N.Z,{sx:{px:3,pb:2},children:"completed"===m||"error"===m?(0,s.jsx)(i.Z,{onClick:a,variant:"contained",fullWidth:!0,children:"Close"}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.Z,{onClick:a,disabled:W,children:"Cancel"}),(0,s.jsx)(i.Z,{type:"submit",variant:"contained",disabled:W,startIcon:W?(0,s.jsx)(c.Z,{size:16}):null,children:W?"Creating...":"Create"})]})})]})})}var es=t(92666),en=t(59104);function ea(){var e,r;let t=(0,a.x)(),[h,f]=(0,n.useState)(!1),[g,v]=(0,n.useState)([]),{data:j,isLoading:y,error:Z}=(0,es.x$)(),{statusMap:b}=(0,en.d)(),S=(0,es.jM)(),C=(0,es.Aw)(),k=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onSuccess:r,onError:t,onProgress:s}=e,[a,l]=(0,n.useState)("idle"),[i,o]=(0,n.useState)(0),[c,d]=(0,n.useState)(""),[x,u]=(0,n.useState)(null),m=(0,n.useRef)(null),p=(0,n.useRef)(""),h=(0,n.useCallback)(()=>{l("idle"),o(0),d(""),u(null),m.current&&(m.current.close(),m.current=null)},[]),f=(0,n.useCallback)((e,r,t)=>{l(e),d(r),o(t),null==s||s(e,r,t)},[s]),g=(0,n.useCallback)(async e=>{if("idle"===a||"completed"===a||"error"===a){u(null),f("initializing","Initializing server creation...",0),p.current=e.name,m.current&&m.current.close();try{let t=await fetch("/api/servers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.text();throw Error(e||"Server creation failed: ".concat(t.statusText))}await t.json(),f("creating","Creating server configuration...",25),await new Promise(e=>setTimeout(e,500)),f("configuring","Configuring Docker compose...",50),await new Promise(e=>setTimeout(e,500)),f("starting","Starting server container...",75),await new Promise(e=>setTimeout(e,500)),f("completed","Server created successfully!",100),null==r||r(e.name)}catch(r){let e=r instanceof Error?r.message:"Unknown error occurred";l("error"),u(e),d("Server creation failed"),null==t||t(e)}}},[a,f,r,t]);return(0,n.useEffect)(()=>()=>{m.current&&(m.current.close(),m.current=null)},[]),{status:a,progress:i,message:c,error:x,isCreating:"idle"!==a&&"completed"!==a&&"error"!==a,createServer:g,reset:h}}({onSuccess:()=>{f(!1)},onError:e=>{console.error("Failed to create server:",e)}}),w=async e=>{v(r=>[...r,e]);try{await S.mutateAsync(e)}catch(e){console.error("Failed to start server:",e)}finally{v(r=>r.filter(r=>r!==e))}},I=async e=>{v(r=>[...r,e]);try{await C.mutateAsync(e)}catch(e){console.error("Failed to stop server:",e)}finally{v(r=>r.filter(r=>r!==e))}};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(d.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,u.Fq)(e.palette.info.main,.1)," 0%, ").concat((0,u.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,u.Fq)(e.palette.info.main,.2)),display:"flex",flexDirection:{xs:"column",sm:"row"},justifyContent:"space-between",alignItems:{xs:"flex-start",sm:"center"},gap:2},children:[(0,s.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,s.jsx)(l.Z,{sx:{display:{xs:"none",sm:"flex"},alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"info.main",color:"info.contrastText"},children:(0,s.jsx)(p.Z,{sx:{fontSize:32}})}),(0,s.jsxs)(l.Z,{children:[(0,s.jsx)(x.Z,{variant:"h4",component:"h1",fontWeight:"bold",sx:{fontSize:{xs:"1.5rem",sm:"2.125rem"}},children:"Servers"}),(0,s.jsx)(x.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft servers"})]})]}),(0,s.jsx)(i.Z,{variant:"contained",startIcon:(0,s.jsx)(m.Z,{}),onClick:()=>f(!0),size:"large",sx:{width:{xs:"100%",sm:"auto"}},children:"Create Server"})]}),Z&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to load servers: ",Z.message]}),k.error&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to create server: ",k.error]}),S.isError&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to start server: ",null===(e=S.error)||void 0===e?void 0:e.message]}),C.isError&&(0,s.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to stop server: ",null===(r=C.error)||void 0===r?void 0:r.message]}),y?(0,s.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,s.jsx)(c.Z,{})}):(0,s.jsx)(z,{servers:(null==j?void 0:j.servers)||[],statusMap:b,onServerClick:e=>{t.push("/servers/".concat(encodeURIComponent(e)))},onStart:w,onStop:I,onCreate:()=>f(!0),loadingServers:g}),(0,s.jsx)(et,{open:h,onClose:()=>{f(!1),k.reset()},onSubmit:e=>{k.createServer(e)},loading:k.isCreating,status:k.status,progress:k.progress,message:k.message})]})}}},function(e){e.O(0,[6812,9760,5004,7296,7436,1071,540,4416,2538,880,7073,1658,6727,140,7477,2666,2701,3669,2757,1744],function(){return e(e.s=49726)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4978],{70861:function(e,t,n){Promise.resolve().then(n.bind(n,32539))},76544:function(e,t,n){"use strict";var r=n(8091);t.Z=void 0;var i=r(n(66758)),s=n(94655);t.Z=(0,i.default)([(0,s.jsx)("path",{d:"m7.3 14.7 1.2-1.2c-1-1-1.5-2.3-1.5-3.5 0-1.3.5-2.6 1.5-3.5L7.3 5.3c-1.3 1.3-2 3-2 4.7s.7 3.4 2 4.7M19.1 2.9l-1.2 1.2c1.6 1.6 2.4 3.8 2.4 5.9 0 2.1-.8 4.3-2.4 5.9l1.2 1.2c2-2 2.9-4.5 2.9-7.1 0-2.6-1-5.1-2.9-7.1"},"0"),(0,s.jsx)("path",{d:"M6.1 4.1 4.9 2.9C3 4.9 2 7.4 2 10c0 2.6 1 5.1 2.9 7.1l1.2-1.2c-1.6-1.6-2.4-3.8-2.4-5.9 0-2.1.8-4.3 2.4-5.9m10.6 10.6c1.3-1.3 2-3 2-4.7-.1-1.7-.7-3.4-2-4.7l-1.2 1.2c1 1 1.5 2.3 1.5 3.5 0 1.3-.5 2.6-1.5 3.5zM14.5 10c0-1.38-1.12-2.5-2.5-2.5S9.5 8.62 9.5 10c0 .76.34 1.42.87 1.88L7 22h2l.67-2h4.67l.66 2h2l-3.37-10.12c.53-.46.87-1.12.87-1.88m-4.17 8L12 13l1.67 5z"},"1")],"CellTower")},23695:function(e,t,n){"use strict";var r=n(8091);t.Z=void 0;var i=r(n(66758)),s=n(94655);t.Z=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info")},21605:function(e,t,n){"use strict";var r=n(8091);t.Z=void 0;var i=r(n(66758)),s=n(94655);t.Z=(0,i.default)((0,s.jsx)("path",{d:"M15.9 5c-.17 0-.32.09-.41.23l-.07.15-5.18 11.65c-.16.29-.26.61-.26.96 0 1.11.9 2.01 2.01 2.01.96 0 1.77-.68 1.96-1.59l.01-.03L16.4 5.5c0-.28-.22-.5-.5-.5M1 9l2 2c2.88-2.88 6.79-4.08 10.53-3.62l1.19-2.68C9.89 3.84 4.74 5.27 1 9m20 2 2-2c-1.64-1.64-3.55-2.82-5.59-3.57l-.53 2.82c1.5.62 2.9 1.53 4.12 2.75m-4 4 2-2c-.8-.8-1.7-1.42-2.66-1.89l-.55 2.92c.42.27.83.59 1.21.97M5 13l2 2c1.13-1.13 2.56-1.79 4.03-2l1.28-2.88c-2.63-.08-5.3.87-7.31 2.88"}),"NetworkCheck")},29983:function(e,t,n){"use strict";var r=n(8091);t.Z=void 0;var i=r(n(66758)),s=n(94655);t.Z=(0,i.default)((0,s.jsx)("path",{d:"m20.2 5.9.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2s3 .6 4.2 1.7m-.9.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4l.8.8c.7-.7 1.6-1 2.5-1 .9 0 1.8.3 2.5 1zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2M8 18H6v-2h2zm3.5 0h-2v-2h2zm3.5 0h-2v-2h2z"}),"Router")},93315:function(e,t,n){"use strict";var r=n(8091);t.Z=void 0;var i=r(n(66758)),s=n(94655);t.Z=(0,i.default)((0,s.jsx)("path",{d:"M6 6h12v12H6z"}),"Stop")},52082:function(e,t,n){"use strict";n.d(t,{Z:function(){return E}});var r,i=n(32324),s=n(81500),o=n(35106),a=n(70316),c=n(65951),l=n(38762),d=n(31317),u=n(14406),h=n(85016),v=n(34519),p=n(11379),m=n(9049);function f(e){return(0,m.ZP)("MuiInputAdornment",e)}let Z=(0,p.Z)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var x=n(28057),j=n(94655);let g=["children","className","component","disablePointerEvents","disableTypography","position","variant"],b=e=>{let{classes:t,disablePointerEvents:n,hiddenLabel:r,position:i,size:s,variant:o}=e,a={root:["root",n&&"disablePointerEvents",i&&"position".concat((0,l.Z)(i)),o,r&&"hiddenLabel",s&&"size".concat((0,l.Z)(s))]};return(0,c.Z)(a,f,t)},z=(0,v.ZP)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t["position".concat((0,l.Z)(n.position))],!0===n.disablePointerEvents&&t.disablePointerEvents,t[n.variant]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,s.Z)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(t.vars||t).palette.action.active},"filled"===n.variant&&{["&.".concat(Z.positionStart,"&:not(.").concat(Z.hiddenLabel,")")]:{marginTop:16}},"start"===n.position&&{marginRight:8},"end"===n.position&&{marginLeft:8},!0===n.disablePointerEvents&&{pointerEvents:"none"})});var E=o.forwardRef(function(e,t){let n=(0,x.i)({props:e,name:"MuiInputAdornment"}),{children:c,className:l,component:v="div",disablePointerEvents:p=!1,disableTypography:m=!1,position:f,variant:Z}=n,E=(0,i.Z)(n,g),y=(0,h.Z)()||{},C=Z;Z&&y.variant,y&&!C&&(C=y.variant);let M=(0,s.Z)({},n,{hiddenLabel:y.hiddenLabel,size:y.size,disablePointerEvents:p,position:f,variant:C}),P=b(M);return(0,j.jsx)(u.Z.Provider,{value:null,children:(0,j.jsx)(z,(0,s.Z)({as:v,ownerState:M,className:(0,a.Z)(P.root,l),ref:t},E,{children:"string"!=typeof c||m?(0,j.jsxs)(o.Fragment,{children:["start"===f?r||(r=(0,j.jsx)("span",{className:"notranslate",children:"​"})):null,c]}):(0,j.jsx)(d.Z,{color:"text.secondary",children:c})}))})})},32539:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return h}});var r=n(94655),i=n(35106),s=n(7281),o=n(84840),a=n(31317),c=n(37530),l=n(81071),d=n(87739),u=n(57965);function h(){let[e,t]=(0,i.useState)({open:!1,message:"",severity:"success"}),n=e=>{t({open:!0,message:e,severity:"success"})},h=e=>{t({open:!0,message:e,severity:"error"})},v=()=>{t(e=>({...e,open:!1}))};return(0,r.jsxs)(s.Z,{children:[(0,r.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:4},children:[(0,r.jsx)(d.Z,{sx:{fontSize:32},color:"primary"}),(0,r.jsx)(a.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Settings"})]}),(0,r.jsxs)(o.ZP,{container:!0,spacing:3,children:[(0,r.jsx)(o.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(u.zd,{onSuccess:n,onError:h})}),(0,r.jsx)(o.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(u.eE,{})}),(0,r.jsx)(o.ZP,{item:!0,xs:12,children:(0,r.jsx)(u.ms,{onSuccess:n,onError:h})})]}),(0,r.jsx)(c.Z,{open:e.open,autoHideDuration:6e3,onClose:v,anchorOrigin:{vertical:"bottom",horizontal:"right"},children:(0,r.jsx)(l.Z,{onClose:v,severity:e.severity,variant:"filled",sx:{width:"100%"},children:e.message})})]})}},42936:function(e,t,n){"use strict";async function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={...t.headers};t.body&&(n["Content-Type"]="application/json");let r=await fetch(e,{...t,headers:n});if(!r.ok){let e=await r.json().catch(()=>({error:"UnknownError",message:r.statusText})),t=Error(e.message);throw t.statusCode=r.status,t.code=e.error,t}return r.json()}n.d(t,{SC:function(){return r}})}},function(e){e.O(0,[6812,9760,5004,7296,7436,1071,540,4416,2538,2542,5511,2844,4841,6650,7965,3669,2757,1744],function(){return e(e.s=70861)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7701],{6199:function(e,s,n){Promise.resolve().then(n.bind(n,36405))},33104:function(e,s,n){"use strict";var l=n(8091);s.Z=void 0;var r=l(n(66758)),t=n(94655);s.Z=(0,r.default)([(0,t.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"},"0"),(0,t.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"},"1")],"AccessTime")},21111:function(e,s,n){"use strict";var l=n(8091);s.Z=void 0;var r=l(n(66758)),t=n(94655);s.Z=(0,r.default)((0,t.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},97812:function(e,s,n){"use strict";var l=n(8091);s.Z=void 0;var r=l(n(66758)),t=n(94655);s.Z=(0,r.default)((0,t.jsx)("path",{d:"M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5m-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3z"}),"LinkOff")},84974:function(e,s,n){"use strict";var l=n(8091);s.Z=void 0;var r=l(n(66758)),t=n(94655);s.Z=(0,r.default)((0,t.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39"}),"Public")},36405:function(e,s,n){"use strict";n.r(s),n.d(s,{default:function(){return B}});var l=n(94655),r=n(35106),t=n(83855),i=n(44059),a=n(7281),o=n(30417),d=n(81071),c=n(93017),x=n(69899),h=n(31317),u=n(99770),m=n(62508),j=n(5682),f=n(76678),Z=n(97436),v=n(76492),p=n(32366),g=n(84974),b=n(84840),y=n(52082),w=n(89923),C=n(10297),S=n(42431),k=n(628),W=n(41565),z=n(25935),D=n(79983),L=n(25333),I=n(95511),A=n(96292),F=n(97812),M=n(21111),P=n(78067),H=n(33104);function E(e){let{world:s,onAssign:n,onRelease:r,onDelete:t,loading:i=!1}=e,o=(e,n)=>{e.stopPropagation(),n(s.name)};return(0,l.jsxs)(k.Z,{role:"article",sx:{transition:"all 0.2s",height:{xs:"auto",sm:200},minHeight:{xs:160,sm:200},display:"flex",flexDirection:"column","&:hover":{transform:"translateY(-2px)",boxShadow:4}},children:[(0,l.jsxs)(W.Z,{sx:{flex:1,pb:1},children:[(0,l.jsxs)(a.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,l.jsx)(h.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:s.name}),(0,l.jsx)(L.Z,{label:s.isLocked?"Locked":"Available",size:"small",color:s.isLocked?"warning":"success",sx:{fontWeight:500,minWidth:80}})]}),(0,l.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,l.jsx)(P.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,l.jsx)(h.Z,{variant:"body2",color:"text.secondary",children:s.size||"Unknown size"})]}),s.isLocked&&s.lockedBy&&(0,l.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,l.jsx)(A.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,l.jsx)(I.Z,{title:"Assigned to ".concat(s.lockedBy),arrow:!0,children:(0,l.jsx)(h.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.lockedBy})})]}),(0,l.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(H.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,l.jsx)(h.Z,{variant:"body2",color:"text.secondary",children:(e=>{if(!e)return"-";try{return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(s){return e}})(s.lastModified)})]})]}),(0,l.jsxs)(z.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[!s.isLocked&&n&&(0,l.jsx)(I.Z,{title:"Assign to server",arrow:!0,children:(0,l.jsx)(D.Z,{"aria-label":"Assign world",color:"primary",onClick:e=>o(e,n),disabled:i,size:"small",children:(0,l.jsx)(A.Z,{})})}),s.isLocked&&r&&(0,l.jsx)(I.Z,{title:"Release from server",arrow:!0,children:(0,l.jsx)(D.Z,{"aria-label":"Release world",color:"warning",onClick:e=>o(e,r),disabled:i,size:"small",children:(0,l.jsx)(F.Z,{})})}),t&&(0,l.jsx)(I.Z,{title:"Delete world",arrow:!0,children:(0,l.jsx)(D.Z,{"aria-label":"Delete world",color:"error",onClick:e=>o(e,t),disabled:i,size:"small",children:(0,l.jsx)(M.Z,{})})})]})]})}function N(e){let{worlds:s,onAssign:n,onRelease:t,onDelete:i,onCreate:d,loadingWorlds:c=[]}=e,[x,u]=(0,r.useState)(""),[m,j]=(0,r.useState)("all"),f=(0,r.useMemo)(()=>s.filter(e=>(!x||!!e.name.toLowerCase().includes(x.toLowerCase()))&&("available"!==m||!e.isLocked)&&("locked"!==m||!!e.isLocked)),[s,x,m]);return 0===s.length?(0,l.jsxs)(a.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"400px",gap:2},children:[(0,l.jsx)(h.Z,{variant:"h6",color:"text.secondary",children:"No worlds found"}),d&&(0,l.jsx)(o.Z,{variant:"contained",startIcon:(0,l.jsx)(p.Z,{}),onClick:d,children:"Create World"})]}):(0,l.jsxs)(a.Z,{children:[(0,l.jsxs)(a.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:2,mb:3,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,l.jsxs)(C.Z,{value:m,exclusive:!0,onChange:(e,s)=>{null!==s&&j(s)},size:"small",sx:{flexShrink:0},children:[(0,l.jsx)(w.Z,{value:"all",children:"All"}),(0,l.jsx)(w.Z,{value:"available",children:"Available"}),(0,l.jsx)(w.Z,{value:"locked",children:"Locked"})]}),(0,l.jsx)(Z.Z,{size:"small",placeholder:"Search worlds...",value:x,onChange:e=>u(e.target.value),InputProps:{startAdornment:(0,l.jsx)(y.Z,{position:"start",children:(0,l.jsx)(S.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,l.jsxs)(h.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[f.length," ",1===f.length?"world":"worlds"]}),0===f.length?(0,l.jsx)(a.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,l.jsx)(h.Z,{variant:"h6",color:"text.secondary",children:"No worlds found"})}):(0,l.jsx)(b.ZP,{container:!0,spacing:2,children:f.map(e=>(0,l.jsx)(b.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,l.jsx)(E,{world:e,onAssign:n,onRelease:t,onDelete:i,loading:c.includes(e.name)})},e.name))})]})}let T={name:"",seed:""};function O(e){let{open:s,onClose:n,onSubmit:t,loading:i=!1}=e,[d,x]=(0,r.useState)(T),[h,v]=(0,r.useState)({});(0,r.useEffect)(()=>{s||(x(T),v({}))},[s]);let p=e=>e?/^[a-z0-9-]+$/.test(e)?null:"Only lowercase letters, numbers, and hyphens are allowed":"World name is required",g=e=>s=>{let n=s.target.value;x(s=>({...s,[e]:n})),h[e]&&v(s=>({...s,[e]:""}))};return(0,l.jsx)(u.Z,{open:s,onClose:i?void 0:n,maxWidth:"sm",fullWidth:!0,children:(0,l.jsxs)("form",{onSubmit:e=>{e.preventDefault(),v({});let s=p(d.name);if(s){v({name:s});return}t({name:d.name,...d.seed?{seed:d.seed}:{}})},children:[(0,l.jsx)(m.Z,{children:"Create New World"}),(0,l.jsx)(j.Z,{children:(0,l.jsxs)(a.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,l.jsx)(Z.Z,{label:"World Name",value:d.name,onChange:g("name"),error:!!h.name,helperText:h.name||"Only lowercase letters, numbers, and hyphens",fullWidth:!0,autoFocus:!0,disabled:i}),(0,l.jsx)(Z.Z,{label:"Seed (optional)",value:d.seed||"",onChange:g("seed"),helperText:"Leave empty for a random seed",fullWidth:!0,disabled:i})]})}),(0,l.jsxs)(f.Z,{sx:{px:3,pb:2},children:[(0,l.jsx)(o.Z,{onClick:n,disabled:i,children:"Cancel"}),(0,l.jsx)(o.Z,{type:"submit",variant:"contained",disabled:i,startIcon:i?(0,l.jsx)(c.Z,{size:16}):null,children:i?"Creating...":"Create"})]})]})})}var R=n(7178),_=n(92666);function q(e){let{open:s,worldName:n,onClose:t,onSubmit:i,loading:x=!1}=e,[v,p]=(0,r.useState)(""),{data:g,isLoading:b}=(0,_.x$)();(0,r.useEffect)(()=>{s||p("")},[s]);let y=(null==g?void 0:g.servers)||[],w=y.filter(e=>"running"!==e.status),C=y.filter(e=>"running"===e.status);return(0,l.jsx)(u.Z,{open:s,onClose:x?void 0:t,maxWidth:"sm",fullWidth:!0,children:(0,l.jsxs)("form",{onSubmit:e=>{e.preventDefault(),v&&i(n,v)},children:[(0,l.jsxs)(m.Z,{children:["Assign World: ",n]}),(0,l.jsx)(j.Z,{children:(0,l.jsx)(a.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:b?(0,l.jsx)(a.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,l.jsx)(c.Z,{})}):0===y.length?(0,l.jsx)(h.Z,{color:"text.secondary",children:"No servers available. Create a server first."}):(0,l.jsxs)(l.Fragment,{children:[0===w.length&&C.length>0&&(0,l.jsx)(d.Z,{severity:"warning",children:"All servers are currently running. It is recommended to assign worlds to stopped servers."}),(0,l.jsxs)(Z.Z,{label:"Select Server",select:!0,value:v,onChange:e=>p(e.target.value),fullWidth:!0,disabled:x,helperText:"Select a server to assign this world to",children:[w.length>0&&(0,l.jsx)(R.Z,{disabled:!0,children:(0,l.jsx)(h.Z,{variant:"caption",color:"text.secondary",children:"Available Servers"})}),w.map(e=>(0,l.jsx)(R.Z,{value:e.name,children:e.name},e.name)),C.length>0&&(0,l.jsx)(R.Z,{disabled:!0,children:(0,l.jsx)(h.Z,{variant:"caption",color:"text.secondary",children:"Running Servers (not recommended)"})}),C.map(e=>(0,l.jsx)(R.Z,{value:e.name,children:e.name},e.name))]})]})})}),(0,l.jsxs)(f.Z,{sx:{px:3,pb:2},children:[(0,l.jsx)(o.Z,{onClick:t,disabled:x,children:"Cancel"}),(0,l.jsx)(o.Z,{type:"submit",variant:"contained",disabled:x||!v||b,startIcon:x?(0,l.jsx)(c.Z,{size:16}):null,children:x?"Assigning...":"Assign"})]})]})})}function B(){var e,s,n,b;let y=(0,t.Z)(),w=(0,i.Z)(y.breakpoints.down("sm")),[C,S]=(0,r.useState)(!1),[k,W]=(0,r.useState)(null),[z,D]=(0,r.useState)(null),[L,I]=(0,r.useState)(""),[A,F]=(0,r.useState)([]),{data:M,isLoading:P,error:H}=(0,_.Sr)(),E=(0,_.hy)(),T=(0,_.nq)(),R=(0,_.g2)(),B=(0,_.Fv)(),V=async e=>{F(s=>[...s,e]);try{await R.mutateAsync({worldName:e})}catch(e){console.error("Failed to release world:",e)}finally{F(s=>s.filter(s=>s!==e))}};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(x.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,v.Fq)(e.palette.success.main,.1)," 0%, ").concat((0,v.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,v.Fq)(e.palette.success.main,.2)),display:"flex",flexDirection:{xs:"column",sm:"row"},justifyContent:"space-between",alignItems:{xs:"flex-start",sm:"center"},gap:2},children:[(0,l.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,l.jsx)(a.Z,{sx:{display:{xs:"none",sm:"flex"},alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"success.main",color:"success.contrastText"},children:(0,l.jsx)(g.Z,{sx:{fontSize:32}})}),(0,l.jsxs)(a.Z,{children:[(0,l.jsx)(h.Z,{variant:"h4",component:"h1",fontWeight:"bold",sx:{fontSize:{xs:"1.5rem",sm:"2.125rem"}},children:"Worlds"}),(0,l.jsx)(h.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft worlds"})]})]}),(0,l.jsx)(o.Z,{variant:"contained",startIcon:(0,l.jsx)(p.Z,{}),onClick:()=>S(!0),size:"large",sx:{width:{xs:"100%",sm:"auto"}},children:"Create World"})]}),H&&(0,l.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to load worlds: ",H.message]}),E.isError&&(0,l.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to create world: ",null===(e=E.error)||void 0===e?void 0:e.message]}),T.isError&&(0,l.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to assign world: ",null===(s=T.error)||void 0===s?void 0:s.message]}),R.isError&&(0,l.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to release world: ",null===(n=R.error)||void 0===n?void 0:n.message]}),B.isError&&(0,l.jsxs)(d.Z,{severity:"error",sx:{mb:3},children:["Failed to delete world: ",null===(b=B.error)||void 0===b?void 0:b.message]}),P?(0,l.jsx)(a.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,l.jsx)(c.Z,{})}):(0,l.jsx)(N,{worlds:(null==M?void 0:M.worlds)||[],onAssign:e=>W(e),onRelease:V,onDelete:e=>{D(e),I("")},onCreate:()=>S(!0),loadingWorlds:A}),(0,l.jsx)(O,{open:C,onClose:()=>{S(!1),E.reset()},onSubmit:e=>{E.mutate(e,{onSuccess:()=>{S(!1)}})},loading:E.isPending}),(0,l.jsx)(q,{open:!!k,worldName:k||"",onClose:()=>W(null),onSubmit:(e,s)=>{F(s=>[...s,e]),T.mutate({worldName:e,serverName:s},{onSuccess:()=>{W(null)},onSettled:()=>{F(s=>s.filter(s=>s!==e))}})},loading:T.isPending}),(0,l.jsxs)(u.Z,{open:!!z,onClose:()=>{D(null),I("")},maxWidth:"sm",fullWidth:!0,fullScreen:w,children:[(0,l.jsx)(m.Z,{children:"Delete World"}),(0,l.jsxs)(j.Z,{children:[(0,l.jsxs)(h.Z,{sx:{mb:2},children:["This action cannot be undone. Type ",(0,l.jsx)("strong",{children:z})," to confirm deletion."]}),(0,l.jsx)(Z.Z,{label:"World name",value:L,onChange:e=>I(e.target.value),fullWidth:!0,autoFocus:!0})]}),(0,l.jsxs)(f.Z,{sx:{px:3,pb:2},children:[(0,l.jsx)(o.Z,{onClick:()=>{D(null),I("")},children:"Cancel"}),(0,l.jsx)(o.Z,{variant:"contained",color:"error",onClick:()=>{z&&L===z&&(F(e=>[...e,z]),B.mutate({name:z,force:!0},{onSuccess:()=>{D(null),I("")},onSettled:()=>{F(e=>e.filter(e=>e!==z))}}))},disabled:L!==z||B.isPending,startIcon:B.isPending?(0,l.jsx)(c.Z,{size:16}):null,children:B.isPending?"Deleting...":"Delete"})]})]})]})}}},function(e){e.O(0,[6812,9760,5004,7296,7436,1071,540,4416,2538,880,5511,7073,140,2666,3669,2757,1744],function(){return e(e.s=6199)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3185],{14595:function(e,r,n){Promise.resolve().then(n.bind(n,89083)),Promise.resolve().then(n.t.bind(n,46639,23)),Promise.resolve().then(n.bind(n,3454)),Promise.resolve().then(n.bind(n,22237)),Promise.resolve().then(n.bind(n,88904)),Promise.resolve().then(n.bind(n,48283))},3454:function(e,r,n){"use strict";n.d(r,{LoadingProvider:function(){return c},startLoading:function(){return d},stopLoading:function(){return u}});var o=n(94655),t=n(35106),i=n(74228),a=n(31477),s=n.n(a);function c(e){let{children:r}=e,n=(0,i.usePathname)(),a=(0,i.useSearchParams)();return(0,t.useEffect)(()=>{s().done()},[n,a]),(0,o.jsx)(o.Fragment,{children:r})}function d(){s().start()}function u(){s().done()}s().configure({showSpinner:!1,speed:300,minimum:.1})},22237:function(e,r,n){"use strict";let o;n.d(r,{QueryProvider:function(){return s}});var t=n(94655),i=n(63145),a=n(58919);function s(e){let{children:r}=e,n=(o||(o=new i.S({defaultOptions:{queries:{staleTime:6e4,refetchOnWindowFocus:!1}}})),o);return(0,t.jsx)(a.aH,{client:n,children:r})}},48283:function(e,r,n){"use strict";n.d(r,{ThemeProvider:function(){return s}});var o=n(94655),t=n(93150),i=n(75416),a=n(88904);function s(e){let{children:r}=e;return(0,o.jsxs)(t.Z,{theme:a.darkTheme,children:[(0,o.jsx)(i.ZP,{}),r]})}},88904:function(e,r,n){"use strict";n.d(r,{darkTheme:function(){return d}});var o=n(61789);let t="#16181c",i="#1a1d22",a="#26282e",s="#313338",c="#2e3035",d=(0,o.Z)({palette:{mode:"dark",primary:{main:"#1bd96a",light:"#4de38a",dark:"#15a852"},secondary:{main:"#7c3aed",light:"#9f67f0",dark:"#5b21b6"},background:{default:t,paper:i},success:{main:"#22c55e"},error:{main:"#ef4444"},warning:{main:"#f59e0b"},text:{primary:"#ffffff",secondary:"#9a9a9a"},divider:c,action:{hover:a,selected:a}},typography:{},components:{MuiCard:{styleOverrides:{root:{backgroundColor:i,borderRadius:"12px",border:"1px solid ".concat(c)}}},MuiPaper:{styleOverrides:{root:{backgroundImage:"none"}}},MuiButton:{styleOverrides:{root:{borderRadius:"8px",textTransform:"none"}}},MuiAppBar:{styleOverrides:{root:{backgroundColor:i,borderBottom:"1px solid ".concat(c)}}},MuiDrawer:{styleOverrides:{paper:{backgroundColor:i,borderRight:"1px solid ".concat(c)}}},MuiCssBaseline:{styleOverrides:{body:{scrollbarColor:"".concat(s," ").concat(t),"&::-webkit-scrollbar, & *::-webkit-scrollbar":{backgroundColor:t,width:8},"&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb":{borderRadius:8,backgroundColor:s,minHeight:24},"&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover":{backgroundColor:a}}}}}})},46639:function(){}},function(e){e.O(0,[7348,6812,540,7087,3669,2757,1744],function(){return e(e.s=14595)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2626],{40527:function(e,t,r){Promise.resolve().then(r.bind(r,10672))},25169:function(e,t,r){"use strict";var n=r(61626),i=r(94655);t.Z=(0,n.Z)((0,i.jsx)("path",{d:"M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3m-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3m0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5m8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5"}),"Group")},78319:function(e,t,r){"use strict";var n=r(61626),i=r(94655);t.Z=(0,n.Z)((0,i.jsx)("path",{d:"m17 7-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4z"}),"Logout")},41094:function(e,t,r){"use strict";var n=r(61626),i=r(94655);t.Z=(0,n.Z)((0,i.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")},554:function(e,t,r){"use strict";var n=r(61626),i=r(94655);t.Z=(0,n.Z)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},36848:function(e,t,r){"use strict";var n=r(61626),i=r(94655);t.Z=(0,n.Z)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},628:function(e,t,r){"use strict";r.d(t,{Z:function(){return g}});var n=r(81500),i=r(32324),s=r(35106),a=r(70316),o=r(65951),l=r(34519),d=r(28057),u=r(69899),c=r(11379),x=r(9049);function h(e){return(0,x.ZP)("MuiCard",e)}(0,c.Z)("MuiCard",["root"]);var m=r(94655);let p=["className","raised"],f=e=>{let{classes:t}=e;return(0,o.Z)({root:["root"]},h,t)},Z=(0,l.ZP)(u.Z,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})(()=>({overflow:"hidden"}));var g=s.forwardRef(function(e,t){let r=(0,d.i)({props:e,name:"MuiCard"}),{className:s,raised:o=!1}=r,l=(0,i.Z)(r,p),u=(0,n.Z)({},r,{raised:o}),c=f(u);return(0,m.jsx)(Z,(0,n.Z)({className:(0,a.Z)(c.root,s),elevation:o?8:void 0,ref:t,ownerState:u},l))})},41565:function(e,t,r){"use strict";r.d(t,{Z:function(){return Z}});var n=r(81500),i=r(32324),s=r(35106),a=r(70316),o=r(65951),l=r(34519),d=r(28057),u=r(11379),c=r(9049);function x(e){return(0,c.ZP)("MuiCardContent",e)}(0,u.Z)("MuiCardContent",["root"]);var h=r(94655);let m=["className","component"],p=e=>{let{classes:t}=e;return(0,o.Z)({root:["root"]},x,t)},f=(0,l.ZP)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}}));var Z=s.forwardRef(function(e,t){let r=(0,d.i)({props:e,name:"MuiCardContent"}),{className:s,component:o="div"}=r,l=(0,i.Z)(r,m),u=(0,n.Z)({},r,{component:o}),c=p(u);return(0,h.jsx)(f,(0,n.Z)({as:o,className:(0,a.Z)(c.root,s),ownerState:u,ref:t},l))})},67337:function(e,t,r){"use strict";r.d(t,{Z:function(){return y}});var n=r(32324),i=r(81500),s=r(35106),a=r(70316),o=r(9049),l=r(65951),d=r(6014),u=r(14189),c=r(48442),x=r(8557),h=r(94655);let m=["className","component","disableGutters","fixed","maxWidth","classes"],p=(0,x.Z)(),f=(0,c.Z)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t[`maxWidth${(0,d.Z)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),Z=e=>(0,u.Z)({props:e,name:"MuiContainer",defaultTheme:p}),g=(e,t)=>{let{classes:r,fixed:n,disableGutters:i,maxWidth:s}=e,a={root:["root",s&&`maxWidth${(0,d.Z)(String(s))}`,n&&"fixed",i&&"disableGutters"]};return(0,l.Z)(a,e=>(0,o.ZP)(t,e),r)};var v=r(38762),j=r(34519),b=r(28057),y=function(e={}){let{createStyledComponent:t=f,useThemeProps:r=Z,componentName:o="MuiContainer"}=e,l=t(({theme:e,ownerState:t})=>(0,i.Z)({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",display:"block"},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}),({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce((t,r)=>{let n=e.breakpoints.values[r];return 0!==n&&(t[e.breakpoints.up(r)]={maxWidth:`${n}${e.breakpoints.unit}`}),t},{}),({theme:e,ownerState:t})=>(0,i.Z)({},"xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}));return s.forwardRef(function(e,t){let s=r(e),{className:d,component:u="div",disableGutters:c=!1,fixed:x=!1,maxWidth:p="lg"}=s,f=(0,n.Z)(s,m),Z=(0,i.Z)({},s,{component:u,disableGutters:c,fixed:x,maxWidth:p}),v=g(Z,o);return(0,h.jsx)(l,(0,i.Z)({as:u,ownerState:Z,className:(0,a.Z)(v.root,d),ref:t},f))})}({createStyledComponent:(0,j.ZP)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t["maxWidth".concat((0,v.Z)(String(r.maxWidth)))],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,b.i)({props:e,name:"MuiContainer"})})},10672:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return h}});var n=r(94655),i=r(74228),s=r(67337),a=r(7281),o=r(628),l=r(41565),d=r(31317),u=r(41261),c=r(85480),x=r(46725);function h(){let e=(0,i.useRouter)();return(0,n.jsx)(s.Z,{maxWidth:"sm",children:(0,n.jsx)(a.Z,{sx:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",py:4},children:(0,n.jsx)(o.Z,{sx:{width:"100%",maxWidth:500},children:(0,n.jsxs)(l.Z,{sx:{p:4},children:[(0,n.jsx)(d.Z,{variant:"h4",component:"h1",gutterBottom:!0,sx:{fontWeight:600,textAlign:"center",mb:3},children:"Welcome Back"}),(0,n.jsx)(d.Z,{variant:"body2",color:"text.secondary",sx:{textAlign:"center",mb:4},children:"Sign in to manage your Minecraft servers"}),(0,n.jsx)(c.U0,{onSuccess:()=>{e.push("/dashboard")}}),(0,n.jsx)(a.Z,{sx:{mt:3,textAlign:"center"},children:(0,n.jsxs)(d.Z,{variant:"body2",color:"text.secondary",children:["Don't have an account?"," ",(0,n.jsx)(u.Z,{component:x.default,href:"/signup",underline:"hover",children:"Sign up"})]})})]})})})})}},85480:function(e,t,r){"use strict";r.d(t,{U0:function(){return m},WS:function(){return p},Ie:function(){return M}});var n=r(94655),i=r(35106),s=r(7281),a=r(81071),o=r(97436),l=r(52082),d=r(79983),u=r(30417),c=r(36848),x=r(554),h=r(6986);function m(e){let{onSuccess:t}=e,[r,m]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[Z,g]=(0,i.useState)(!1),[v,j]=(0,i.useState)({}),[b,y]=(0,i.useState)(null),[C,w]=(0,i.useState)(!1),S=()=>{let e={};return r?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)||(e.email="Invalid email address"):e.email="Email is required",p||(e.password="Password is required"),j(e),0===Object.keys(e).length},k=async e=>{if(e.preventDefault(),y(null),S()){w(!0);try{let e=await h.cg.email({email:r,password:p});if(e.error){y(e.error.message||"Invalid credentials"),w(!1);return}t&&t()}catch(e){y("An unexpected error occurred. Please try again."),w(!1)}}};return(0,n.jsxs)(s.Z,{component:"form",onSubmit:k,sx:{display:"flex",flexDirection:"column",gap:2},children:[b&&(0,n.jsx)(a.Z,{severity:"error",onClose:()=>y(null),children:b}),(0,n.jsx)(o.Z,{label:"Email",type:"email",value:r,onChange:e=>m(e.target.value),error:!!v.email,helperText:v.email,disabled:C,fullWidth:!0,required:!0}),(0,n.jsx)(o.Z,{label:"Password",type:Z?"text":"password",value:p,onChange:e=>f(e.target.value),error:!!v.password,helperText:v.password,disabled:C,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(l.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{g(!Z)},edge:"end",children:Z?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:C,fullWidth:!0,size:"large",children:C?"Signing in...":"Sign In"})]})}function p(e){let{onSuccess:t}=e,[r,m]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[Z,g]=(0,i.useState)(""),[v,j]=(0,i.useState)(""),[b,y]=(0,i.useState)(!1),[C,w]=(0,i.useState)(!1),[S,k]=(0,i.useState)({}),[W,P]=(0,i.useState)(null),[M,R]=(0,i.useState)(!1),z=()=>{let e={};return r||(e.name="Name is required"),p?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(p)||(e.email="Invalid email address"):e.email="Email is required",Z?Z.length<8&&(e.password="Password must be at least 8 characters"):e.password="Password is required",v?Z!==v&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",k(e),0===Object.keys(e).length},N=async e=>{if(e.preventDefault(),P(null),z()){R(!0);try{let e=await h.y1.email({email:p,password:Z,name:r});if(e.error){P(e.error.message||"Registration failed"),R(!1);return}t&&t()}catch(e){P("An unexpected error occurred. Please try again."),R(!1)}}};return(0,n.jsxs)(s.Z,{component:"form",onSubmit:N,sx:{display:"flex",flexDirection:"column",gap:2},children:[W&&(0,n.jsx)(a.Z,{severity:"error",onClose:()=>P(null),children:W}),(0,n.jsx)(o.Z,{label:"Name",type:"text",value:r,onChange:e=>m(e.target.value),error:!!S.name,helperText:S.name,disabled:M,fullWidth:!0,required:!0}),(0,n.jsx)(o.Z,{label:"Email",type:"email",value:p,onChange:e=>f(e.target.value),error:!!S.email,helperText:S.email,disabled:M,fullWidth:!0,required:!0}),(0,n.jsx)(o.Z,{label:"Password",type:b?"text":"password",value:Z,onChange:e=>g(e.target.value),error:!!S.password,helperText:S.password,disabled:M,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(l.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{y(!b)},edge:"end",children:b?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(o.Z,{label:"Confirm Password",type:C?"text":"password",value:v,onChange:e=>j(e.target.value),error:!!S.confirmPassword,helperText:S.confirmPassword,disabled:M,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(l.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{w(!C)},edge:"end",children:C?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:M,fullWidth:!0,size:"large",children:M?"Creating account...":"Sign Up"})]})}var f=r(74228),Z=r(93017),g=r(86702),v=r(88812),j=r(31317),b=r(25333),y=r(69123),C=r(7178),w=r(17820),S=r(73424),k=r(25169),W=r(41094),P=r(78319);function M(){let e=(0,f.useRouter)(),{data:t,isPending:r}=(0,h.kP)(),[a,o]=(0,i.useState)(null),l=()=>{o(null)},c=async()=>{l(),await (0,h.w7)(),e.push("/login")};if(r)return(0,n.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(Z.Z,{size:24})});if(!(null==t?void 0:t.user))return(0,n.jsx)(u.Z,{variant:"contained",color:"primary",onClick:()=>{e.push("/login")},children:"Sign In"});let{user:x}=t,m=((e,t)=>{if(e){let t=e.split(" ");return t.length>=2?"".concat(t[0][0]).concat(t[1][0]).toUpperCase():e.substring(0,2).toUpperCase()}return t?t[0].toUpperCase():"?"})(x.name,x.email);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.Z,{onClick:e=>{o(e.currentTarget)},"aria-label":"user menu",children:(0,n.jsx)(g.Z,{sx:{bgcolor:"primary.main"},children:m})}),(0,n.jsxs)(v.Z,{anchorEl:a,open:!!a,onClose:l,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},sx:{mt:1},children:[(0,n.jsxs)(s.Z,{sx:{px:2,py:1.5,minWidth:200},children:[(0,n.jsx)(j.Z,{variant:"subtitle1",fontWeight:"600",children:x.name||"User"}),(0,n.jsx)(j.Z,{variant:"body2",color:"text.secondary",children:x.email}),"admin"===x.role&&(0,n.jsx)(b.Z,{label:"Admin",size:"small",color:"primary",sx:{mt:1}})]}),(0,n.jsx)(y.Z,{}),"admin"===x.role&&(0,n.jsxs)(C.Z,{onClick:()=>{l(),e.push("/admin/users")},children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(k.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Users"})]}),(0,n.jsxs)(C.Z,{onClick:()=>{l(),e.push("/settings")},children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(W.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Settings"})]}),(0,n.jsxs)(C.Z,{onClick:c,children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(P.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Logout"})]})]})]})}},6986:function(e,t,r){"use strict";r.d(t,{Cp:function(){return x},Nq:function(){return c},cg:function(){return o},kP:function(){return u},w7:function(){return l},y1:function(){return d},zB:function(){return h}});var n=r(77054),i=r(61648),s=r(35016);let a=(0,n.X)({baseURL:s.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,i.zB)()]}),{signIn:o,signOut:l,signUp:d,useSession:u,updateUser:c,changePassword:x}=a,h=a.admin}},function(e){e.O(0,[6812,9760,5004,7296,7436,1071,2542,55,4219,9097,3669,2757,1744],function(){return e(e.s=40527)}),_N_E=e.O()}]);