9remote 2.5.5 → 3.0.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 (597) hide show
  1. package/README.md +91 -172
  2. package/dist/assets/trayIcon.ico +0 -0
  3. package/dist/cli.cjs +102 -101
  4. package/dist/ptyDaemon.cjs +10 -9
  5. package/dist/server.cjs +307 -138
  6. package/dist/ui/agents/codex.svg +1 -1
  7. package/dist/ui/assets/index-CAvf0VPf.css +1 -0
  8. package/dist/ui/assets/index-EXcI2V_p.js +8 -0
  9. package/dist/ui/favicon.ico +0 -0
  10. package/dist/ui/index.html +12 -4
  11. package/dist/vendor/scrcpy-server-v3.1 +0 -0
  12. package/dist/web/404.html +1 -0
  13. package/dist/web/__next.__PAGE__.txt +9 -0
  14. package/dist/web/__next._full.txt +25 -0
  15. package/dist/web/__next._head.txt +6 -0
  16. package/dist/web/__next._index.txt +10 -0
  17. package/dist/web/__next._tree.txt +5 -0
  18. package/dist/web/_next/static/AUHtJgkYALYyNwHop9pgT/_buildManifest.js +1 -0
  19. package/dist/web/_next/static/AUHtJgkYALYyNwHop9pgT/_ssgManifest.js +1 -0
  20. package/dist/web/_next/static/chunks/0a7753a9.4cb02a98e2e453b9.js +1 -0
  21. package/dist/web/_next/static/chunks/1222.aa4f7f7f397533e9.js +1 -0
  22. package/dist/web/_next/static/chunks/1228.d291278320bca9ca.js +1 -0
  23. package/dist/web/_next/static/chunks/1243.f35c2e6494079e05.js +1 -0
  24. package/dist/web/_next/static/chunks/1311.8c6b8930e22ceea0.js +1 -0
  25. package/dist/web/_next/static/chunks/132.6032826021079bce.js +1 -0
  26. package/dist/web/_next/static/chunks/133.1106654a28b5afda.js +1 -0
  27. package/dist/web/_next/static/chunks/1385.086b560acb0d7a68.js +115 -0
  28. package/dist/web/_next/static/chunks/1642.cac26d30ac331cb4.js +1 -0
  29. package/dist/web/_next/static/chunks/1733.f06c240b3ef8a428.js +77 -0
  30. package/dist/web/_next/static/chunks/1750.f7ba3332b56a8e68.js +1 -0
  31. package/dist/web/_next/static/chunks/1763.28beedca593b5e19.js +138 -0
  32. package/dist/web/_next/static/chunks/179.b9e8f385bd414d1c.js +62 -0
  33. package/dist/web/_next/static/chunks/1838.7c8990f903e3524a.js +215 -0
  34. package/dist/web/_next/static/chunks/20154aaa.868648f838e03bf1.js +1 -0
  35. package/dist/web/_next/static/chunks/2038.640b672702093b24.js +1 -0
  36. package/dist/web/_next/static/chunks/2112.d72eefbdf81659b3.js +23 -0
  37. package/dist/web/_next/static/chunks/2125.61c6e4a3541e30ad.js +1 -0
  38. package/dist/web/_next/static/chunks/2129.61afb2f4ff59e46a.js +24 -0
  39. package/dist/web/_next/static/chunks/213.68ce1361aee3281a.js +1 -0
  40. package/dist/web/_next/static/chunks/2179.3f55be0b79e3cca7.js +1 -0
  41. package/dist/web/_next/static/chunks/2180.e6bad8186f52ff89.js +1 -0
  42. package/dist/web/_next/static/chunks/2264.0fc1474d26067a01.js +1 -0
  43. package/dist/web/_next/static/chunks/2376.ed6302a91a9de1ae.js +36 -0
  44. package/dist/web/_next/static/chunks/2545.3ff192a933baf11e.js +1 -0
  45. package/dist/web/_next/static/chunks/2620.d17f4fac0eec88a5.js +1 -0
  46. package/dist/web/_next/static/chunks/2847.d3124853ca727b78.js +1 -0
  47. package/dist/web/_next/static/chunks/2849.f2bcad51c68e44b5.js +1 -0
  48. package/dist/web/_next/static/chunks/3189.64c6546d621eec0b.js +1 -0
  49. package/dist/web/_next/static/chunks/3348-9ef29f9cedf6c0df.js +1 -0
  50. package/dist/web/_next/static/chunks/3429.436b229808b33e81.js +1 -0
  51. package/dist/web/_next/static/chunks/3514.9643e815d690f2fb.js +1 -0
  52. package/dist/web/_next/static/chunks/3552.8dd9a3d2c3bcef65.js +86 -0
  53. package/dist/web/_next/static/chunks/3606.b59e695fd05b4eb3.js +74 -0
  54. package/dist/web/_next/static/chunks/3692.8c6b8930e22ceea0.js +1 -0
  55. package/dist/web/_next/static/chunks/3736.4a5662ceeecc6acb.js +94 -0
  56. package/dist/web/_next/static/chunks/392.842b338137824bb8.js +1 -0
  57. package/dist/web/_next/static/chunks/3973-9b18bcd9afc0bcb4.js +1 -0
  58. package/dist/web/_next/static/chunks/3977.8cfd8dec4cb8e893.js +1 -0
  59. package/dist/web/_next/static/chunks/4090.441fa61655da9b38.js +1 -0
  60. package/dist/web/_next/static/chunks/4303.54c4aa0b89834fc6.js +1 -0
  61. package/dist/web/_next/static/chunks/4314.6bbd89507909cad1.js +1 -0
  62. package/dist/web/_next/static/chunks/4551.d0d6723cacfb90b9.js +226 -0
  63. package/dist/web/_next/static/chunks/4566.d8e009823b8647d1.js +90 -0
  64. package/dist/web/_next/static/chunks/4643.dbb152682d076617.js +1 -0
  65. package/dist/web/_next/static/chunks/4732-76a574510722b2c3.js +11 -0
  66. package/dist/web/_next/static/chunks/4924.3f5c77a103ac69a9.js +8 -0
  67. package/dist/web/_next/static/chunks/4930.42e564644c94a93b.js +1 -0
  68. package/dist/web/_next/static/chunks/5155.d7e8db52ab4c95e0.js +27 -0
  69. package/dist/web/_next/static/chunks/5158-267908d069475cdc.js +32 -0
  70. package/dist/web/_next/static/chunks/543.5636e97aa68eb9c8.js +41 -0
  71. package/dist/web/_next/static/chunks/5506.98304a1821200439.js +1 -0
  72. package/dist/web/_next/static/chunks/5622.5ead5e748ecedbd1.js +1 -0
  73. package/dist/web/_next/static/chunks/565f33a6-fd3410bd29f39fdf.js +1 -0
  74. package/dist/web/_next/static/chunks/5708.22b4531ceebf3eca.js +1 -0
  75. package/dist/web/_next/static/chunks/5804.ff72a927135eb74c.js +93 -0
  76. package/dist/web/_next/static/chunks/588.78e2528ff24df85c.js +287 -0
  77. package/dist/web/_next/static/chunks/6001.e5bcb28bb9ce6571.js +1 -0
  78. package/dist/web/_next/static/chunks/6075.a6b8434732056526.js +1 -0
  79. package/dist/web/_next/static/chunks/6180.82fa683aa16f21df.js +1 -0
  80. package/dist/web/_next/static/chunks/6274.a3795ca6dacb3d62.js +32 -0
  81. package/dist/web/_next/static/chunks/635-d6ae421935055337.js +1 -0
  82. package/dist/web/_next/static/chunks/6419.842467d9a877e770.js +1 -0
  83. package/dist/web/_next/static/chunks/6420.bfa7bc86d03dcefc.js +1 -0
  84. package/dist/web/_next/static/chunks/6552-145e634541b5b66c.js +1 -0
  85. package/dist/web/_next/static/chunks/6647.740ec32a32201eab.js +64 -0
  86. package/dist/web/_next/static/chunks/6730.88fc6f2ccc49496c.js +1 -0
  87. package/dist/web/_next/static/chunks/6739.82570eba0a02cb26.js +1 -0
  88. package/dist/web/_next/static/chunks/674.2b5ffad0676aedbe.js +1 -0
  89. package/dist/web/_next/static/chunks/6742.8e137138a5d1c9e1.js +1 -0
  90. package/dist/web/_next/static/chunks/6987.743a63813c6288ce.js +79 -0
  91. package/dist/web/_next/static/chunks/7202.dad90ce4a1d78f67.js +1 -0
  92. package/dist/web/_next/static/chunks/7233.0f252f6c1cce8058.js +1 -0
  93. package/dist/web/_next/static/chunks/7248.d89bf328a0dc1b4c.js +1 -0
  94. package/dist/web/_next/static/chunks/7263.6f224c3924155294.js +1 -0
  95. package/dist/web/_next/static/chunks/7341.6958eac888a96823.js +34 -0
  96. package/dist/web/_next/static/chunks/7424.c8c9f85c8ea65885.js +1 -0
  97. package/dist/web/_next/static/chunks/7507.1204ae29f46e3f01.js +1 -0
  98. package/dist/web/_next/static/chunks/7629-16de8d4154923623.js +1 -0
  99. package/dist/web/_next/static/chunks/7811.19082afa63eb73ba.js +1 -0
  100. package/dist/web/_next/static/chunks/7853.d01982fa0afc1ee2.js +24 -0
  101. package/dist/web/_next/static/chunks/7908.432ab9feeb9ae756.js +1 -0
  102. package/dist/web/_next/static/chunks/7960.3b1c77b882ba4bb1.js +1 -0
  103. package/dist/web/_next/static/chunks/7967.6c62be01fad1603c.js +1 -0
  104. package/dist/web/_next/static/chunks/7c89255b.f727562586fa21cc.js +153 -0
  105. package/dist/web/_next/static/chunks/8044.5f87392585c9f3e4.js +38 -0
  106. package/dist/web/_next/static/chunks/8054.feeb01b8acdb31d4.js +1 -0
  107. package/dist/web/_next/static/chunks/8115.68d46fb961c724e0.js +172 -0
  108. package/dist/web/_next/static/chunks/817.cd0f4d221eca4c8b.js +104 -0
  109. package/dist/web/_next/static/chunks/8334-0e9493cfa1547244.js +1 -0
  110. package/dist/web/_next/static/chunks/8467.f34d938a32d40325.js +1 -0
  111. package/dist/web/_next/static/chunks/8495.d6cea1be03635fa8.js +148 -0
  112. package/dist/web/_next/static/chunks/8516-b3694c9156666b12.js +152 -0
  113. package/dist/web/_next/static/chunks/8638.03c6480d4aaeb5b3.js +1 -0
  114. package/dist/web/_next/static/chunks/8716.1ad6febb58e8560e.js +1 -0
  115. package/dist/web/_next/static/chunks/8839.1ad64faf06fb4a33.js +1 -0
  116. package/dist/web/_next/static/chunks/8922-a9cee4a104876005.js +1 -0
  117. package/dist/web/_next/static/chunks/910.43be9c3be85c7fa0.js +21 -0
  118. package/dist/web/_next/static/chunks/925.7ef504ee39f11840.js +1 -0
  119. package/dist/web/_next/static/chunks/9259.f4337cbb56e2e0b6.js +1 -0
  120. package/dist/web/_next/static/chunks/9299.af2a95f6ece07482.js +1 -0
  121. package/dist/web/_next/static/chunks/9387.96263a2d1602a078.js +1 -0
  122. package/dist/web/_next/static/chunks/9568-0bfadca4fcb105aa.js +1 -0
  123. package/dist/web/_next/static/chunks/9641.f6f2982fc4b4735f.js +1 -0
  124. package/dist/web/_next/static/chunks/9675.be4a175f92aa2f26.js +1 -0
  125. package/dist/web/_next/static/chunks/9860.05fa134ae44699e0.js +1 -0
  126. package/dist/web/_next/static/chunks/9b87412a.d2cfae4121762dec.js +122 -0
  127. package/dist/web/_next/static/chunks/a012e9f0.7dbb2fe05ec0b816.js +82 -0
  128. package/dist/web/_next/static/chunks/a096f98a-5a93977f5f5de413.js +1 -0
  129. package/dist/web/_next/static/chunks/ab1da478.d051e56375dab6d8.js +1 -0
  130. package/dist/web/_next/static/chunks/adcd17ec-9a2791632136b67b.js +18 -0
  131. package/dist/web/_next/static/chunks/app/_global-error/page-5bd6526483106080.js +1 -0
  132. package/dist/web/_next/static/chunks/app/_not-found/page-877523282abd5a7c.js +1 -0
  133. package/dist/web/_next/static/chunks/app/admin/admins/page-0f20b93a1fbe900c.js +1 -0
  134. package/dist/web/_next/static/chunks/app/admin/login/page-dbcfb21ebbd0bb00.js +1 -0
  135. package/dist/web/_next/static/chunks/app/admin/modes/page-8f292692166b56fc.js +1 -0
  136. package/dist/web/_next/static/chunks/app/admin/ota/page-c9fe76f24ac08288.js +1 -0
  137. package/dist/web/_next/static/chunks/app/admin/page-622381f5dac39ddb.js +1 -0
  138. package/dist/web/_next/static/chunks/app/admin/turn/page-8f6b835a319f3fe3.js +1 -0
  139. package/dist/web/_next/static/chunks/app/dev/question/page-5fd80ae293617365.js +1 -0
  140. package/dist/web/_next/static/chunks/app/layout-341400810c81f67e.js +1 -0
  141. package/dist/web/_next/static/chunks/app/login/page-31786ee656da76b1.js +1 -0
  142. package/dist/web/_next/static/chunks/app/page-1cf39061b48db156.js +22 -0
  143. package/dist/web/_next/static/chunks/app/workspace/browse/page-5bd6526483106080.js +1 -0
  144. package/dist/web/_next/static/chunks/app/workspace/editor/page-5bd6526483106080.js +1 -0
  145. package/dist/web/_next/static/chunks/app/workspace/files/page-5bd6526483106080.js +1 -0
  146. package/dist/web/_next/static/chunks/app/workspace/git/page-5bd6526483106080.js +1 -0
  147. package/dist/web/_next/static/chunks/app/workspace/layout-5e8f95fbc4ebaa6b.js +14 -0
  148. package/dist/web/_next/static/chunks/app/workspace/mobile/page-5bd6526483106080.js +1 -0
  149. package/dist/web/_next/static/chunks/app/workspace/page-5bd6526483106080.js +1 -0
  150. package/dist/web/_next/static/chunks/app/workspace/remote/page-5bd6526483106080.js +1 -0
  151. package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-5bd6526483106080.js +1 -0
  152. package/dist/web/_next/static/chunks/app/workspace/workspaces/page-5bd6526483106080.js +1 -0
  153. package/dist/web/_next/static/chunks/bbfbfb6c.069db3c4cc981ed3.js +1 -0
  154. package/dist/web/_next/static/chunks/c7879cf7-0d16fce1674078f9.js +1 -0
  155. package/dist/web/_next/static/chunks/c7ea4e13.6153499d4c2fb1f2.js +1 -0
  156. package/dist/web/_next/static/chunks/cdcce140.7a440644c3dd52b8.js +1 -0
  157. package/dist/web/_next/static/chunks/da9a53d6.df25e193f1f5bcae.js +62 -0
  158. package/dist/web/_next/static/chunks/framework-42053c69543a55f9.js +1 -0
  159. package/dist/web/_next/static/chunks/main-255c95c36766ce86.js +5 -0
  160. package/dist/web/_next/static/chunks/main-app-1831d4f902c3fcb9.js +1 -0
  161. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-5bd6526483106080.js +1 -0
  162. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-5bd6526483106080.js +1 -0
  163. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-76800531999827bd.js +1 -0
  164. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-5bd6526483106080.js +1 -0
  165. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-5bd6526483106080.js +1 -0
  166. package/dist/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  167. package/dist/web/_next/static/chunks/webpack-c971919003362f96.js +1 -0
  168. package/dist/web/_next/static/css/56adcd4d72bf2d84.css +1 -0
  169. package/dist/web/_next/static/css/5c40e58137a11306.css +1 -0
  170. package/dist/web/_next/static/css/b496025c9cd768cc.css +1 -0
  171. package/dist/web/_next/static/media/013b72fa676f92e0-s.woff2 +0 -0
  172. package/dist/web/_next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
  173. package/dist/web/_next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
  174. package/dist/web/_next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
  175. package/dist/web/_next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
  176. package/dist/web/_next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
  177. package/dist/web/_next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
  178. package/dist/web/_next/static/media/b66cf8e69499582a-s.woff2 +0 -0
  179. package/dist/web/_next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
  180. package/dist/web/_next/static/media/e038a29029a234f2-s.woff2 +0 -0
  181. package/dist/web/_next/static/media/f639721981034f88-s.woff2 +0 -0
  182. package/dist/web/_not-found/__next._full.txt +23 -0
  183. package/dist/web/_not-found/__next._head.txt +6 -0
  184. package/dist/web/_not-found/__next._index.txt +10 -0
  185. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +5 -0
  186. package/dist/web/_not-found/__next._not-found.txt +5 -0
  187. package/dist/web/_not-found/__next._tree.txt +5 -0
  188. package/dist/web/_not-found.html +1 -0
  189. package/dist/web/_not-found.txt +23 -0
  190. package/dist/web/admin/__next._full.txt +27 -0
  191. package/dist/web/admin/__next._head.txt +6 -0
  192. package/dist/web/admin/__next._index.txt +10 -0
  193. package/dist/web/admin/__next._tree.txt +5 -0
  194. package/dist/web/admin/__next.admin.__PAGE__.txt +9 -0
  195. package/dist/web/admin/__next.admin.txt +5 -0
  196. package/dist/web/admin/admins/__next._full.txt +27 -0
  197. package/dist/web/admin/admins/__next._head.txt +6 -0
  198. package/dist/web/admin/admins/__next._index.txt +10 -0
  199. package/dist/web/admin/admins/__next._tree.txt +5 -0
  200. package/dist/web/admin/admins/__next.admin.admins.__PAGE__.txt +9 -0
  201. package/dist/web/admin/admins/__next.admin.admins.txt +5 -0
  202. package/dist/web/admin/admins/__next.admin.txt +5 -0
  203. package/dist/web/admin/admins.html +1 -0
  204. package/dist/web/admin/admins.txt +27 -0
  205. package/dist/web/admin/login/__next._full.txt +27 -0
  206. package/dist/web/admin/login/__next._head.txt +6 -0
  207. package/dist/web/admin/login/__next._index.txt +10 -0
  208. package/dist/web/admin/login/__next._tree.txt +5 -0
  209. package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +9 -0
  210. package/dist/web/admin/login/__next.admin.login.txt +5 -0
  211. package/dist/web/admin/login/__next.admin.txt +5 -0
  212. package/dist/web/admin/login.html +1 -0
  213. package/dist/web/admin/login.txt +27 -0
  214. package/dist/web/admin/modes/__next._full.txt +27 -0
  215. package/dist/web/admin/modes/__next._head.txt +6 -0
  216. package/dist/web/admin/modes/__next._index.txt +10 -0
  217. package/dist/web/admin/modes/__next._tree.txt +5 -0
  218. package/dist/web/admin/modes/__next.admin.modes.__PAGE__.txt +9 -0
  219. package/dist/web/admin/modes/__next.admin.modes.txt +5 -0
  220. package/dist/web/admin/modes/__next.admin.txt +5 -0
  221. package/dist/web/admin/modes.html +1 -0
  222. package/dist/web/admin/modes.txt +27 -0
  223. package/dist/web/admin/ota/__next._full.txt +27 -0
  224. package/dist/web/admin/ota/__next._head.txt +6 -0
  225. package/dist/web/admin/ota/__next._index.txt +10 -0
  226. package/dist/web/admin/ota/__next._tree.txt +5 -0
  227. package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +9 -0
  228. package/dist/web/admin/ota/__next.admin.ota.txt +5 -0
  229. package/dist/web/admin/ota/__next.admin.txt +5 -0
  230. package/dist/web/admin/ota.html +1 -0
  231. package/dist/web/admin/ota.txt +27 -0
  232. package/dist/web/admin/turn/__next._full.txt +27 -0
  233. package/dist/web/admin/turn/__next._head.txt +6 -0
  234. package/dist/web/admin/turn/__next._index.txt +10 -0
  235. package/dist/web/admin/turn/__next._tree.txt +5 -0
  236. package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +9 -0
  237. package/dist/web/admin/turn/__next.admin.turn.txt +5 -0
  238. package/dist/web/admin/turn/__next.admin.txt +5 -0
  239. package/dist/web/admin/turn.html +1 -0
  240. package/dist/web/admin/turn.txt +27 -0
  241. package/dist/web/admin.html +1 -0
  242. package/dist/web/admin.txt +27 -0
  243. package/dist/web/agent-icons/aider.svg +1 -0
  244. package/dist/web/agent-icons/amp.png +0 -0
  245. package/dist/web/agent-icons/ante.png +0 -0
  246. package/dist/web/agent-icons/antigravity.png +0 -0
  247. package/dist/web/agent-icons/auggie.png +0 -0
  248. package/dist/web/agent-icons/autohand.png +0 -0
  249. package/dist/web/agent-icons/claude-ui.png +0 -0
  250. package/dist/web/agent-icons/claude.svg +1 -0
  251. package/dist/web/agent-icons/cline.png +0 -0
  252. package/dist/web/agent-icons/codebuff.png +0 -0
  253. package/dist/web/agent-icons/codex-ui.png +0 -0
  254. package/dist/web/agent-icons/codex.svg +1 -0
  255. package/dist/web/agent-icons/command-code.png +0 -0
  256. package/dist/web/agent-icons/continue.png +0 -0
  257. package/dist/web/agent-icons/copilot.png +0 -0
  258. package/dist/web/agent-icons/crush.png +0 -0
  259. package/dist/web/agent-icons/cursor.png +0 -0
  260. package/dist/web/agent-icons/devin.png +0 -0
  261. package/dist/web/agent-icons/droid.png +0 -0
  262. package/dist/web/agent-icons/gemini.png +0 -0
  263. package/dist/web/agent-icons/goose.png +0 -0
  264. package/dist/web/agent-icons/grok.png +0 -0
  265. package/dist/web/agent-icons/hermes.png +0 -0
  266. package/dist/web/agent-icons/kilo.png +0 -0
  267. package/dist/web/agent-icons/kimi.png +0 -0
  268. package/dist/web/agent-icons/kiro.png +0 -0
  269. package/dist/web/agent-icons/mimo-code.png +0 -0
  270. package/dist/web/agent-icons/mistral-vibe.png +0 -0
  271. package/dist/web/agent-icons/omp.svg +1 -0
  272. package/dist/web/agent-icons/openclaude.png +0 -0
  273. package/dist/web/agent-icons/openclaw.png +0 -0
  274. package/dist/web/agent-icons/opencode.png +0 -0
  275. package/dist/web/agent-icons/pi.svg +1 -0
  276. package/dist/web/agent-icons/prime-agent.png +0 -0
  277. package/dist/web/agent-icons/qwen-code.png +0 -0
  278. package/dist/web/agent-icons/rovo.png +0 -0
  279. package/dist/web/agent-icons/trae.png +0 -0
  280. package/dist/web/agents/claude.svg +1 -0
  281. package/dist/web/agents/codex.svg +1 -0
  282. package/dist/web/agents/gemini.svg +1 -0
  283. package/dist/web/agents/opencode.svg +1 -0
  284. package/dist/web/backgrounds/bg10.jpg +0 -0
  285. package/dist/web/backgrounds/bg11.jpg +0 -0
  286. package/dist/web/backgrounds/bg12.jpg +0 -0
  287. package/dist/web/backgrounds/bg13.jpg +0 -0
  288. package/dist/web/backgrounds/bg2.jpg +0 -0
  289. package/dist/web/backgrounds/bg3.jpg +0 -0
  290. package/dist/web/backgrounds/bg4.jpg +0 -0
  291. package/dist/web/backgrounds/bg5.jpg +0 -0
  292. package/dist/web/backgrounds/bg6.jpg +0 -0
  293. package/dist/web/backgrounds/bg7.jpg +0 -0
  294. package/dist/web/backgrounds/bg8.jpg +0 -0
  295. package/dist/web/backgrounds/bg9.jpg +0 -0
  296. package/dist/web/dev/question/__next._full.txt +27 -0
  297. package/dist/web/dev/question/__next._head.txt +6 -0
  298. package/dist/web/dev/question/__next._index.txt +10 -0
  299. package/dist/web/dev/question/__next._tree.txt +5 -0
  300. package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +9 -0
  301. package/dist/web/dev/question/__next.dev.question.txt +5 -0
  302. package/dist/web/dev/question/__next.dev.txt +5 -0
  303. package/dist/web/dev/question.html +1 -0
  304. package/dist/web/dev/question.txt +27 -0
  305. package/dist/web/favicon.ico +0 -0
  306. package/dist/web/file.svg +1 -0
  307. package/dist/web/globe.svg +1 -0
  308. package/dist/web/icon-192.png +0 -0
  309. package/dist/web/icon-192.svg +3 -0
  310. package/dist/web/icon-512.png +0 -0
  311. package/dist/web/icon-512.svg +3 -0
  312. package/dist/web/icons/file-types/astro.svg +1 -0
  313. package/dist/web/icons/file-types/audio.svg +1 -0
  314. package/dist/web/icons/file-types/avif.svg +1 -0
  315. package/dist/web/icons/file-types/bat.svg +1 -0
  316. package/dist/web/icons/file-types/c.svg +1 -0
  317. package/dist/web/icons/file-types/cheader.svg +1 -0
  318. package/dist/web/icons/file-types/clojure.svg +1 -0
  319. package/dist/web/icons/file-types/clojurescript.svg +1 -0
  320. package/dist/web/icons/file-types/cloudfoundry.svg +1 -0
  321. package/dist/web/icons/file-types/cpp.svg +1 -0
  322. package/dist/web/icons/file-types/cppheader.svg +1 -0
  323. package/dist/web/icons/file-types/csharp.svg +1 -0
  324. package/dist/web/icons/file-types/css.svg +1 -0
  325. package/dist/web/icons/file-types/dartlang.svg +1 -0
  326. package/dist/web/icons/file-types/datadog.svg +1 -0
  327. package/dist/web/icons/file-types/default.svg +1 -0
  328. package/dist/web/icons/file-types/diff.svg +1 -0
  329. package/dist/web/icons/file-types/django.svg +1 -0
  330. package/dist/web/icons/file-types/docker.svg +1 -0
  331. package/dist/web/icons/file-types/dotenv.svg +1 -0
  332. package/dist/web/icons/file-types/editorconfig.svg +1 -0
  333. package/dist/web/icons/file-types/elixir.svg +1 -0
  334. package/dist/web/icons/file-types/erlang.svg +1 -0
  335. package/dist/web/icons/file-types/esphome.svg +1 -0
  336. package/dist/web/icons/file-types/font.svg +1 -0
  337. package/dist/web/icons/file-types/git.svg +1 -0
  338. package/dist/web/icons/file-types/gnu.svg +1 -0
  339. package/dist/web/icons/file-types/go.svg +1 -0
  340. package/dist/web/icons/file-types/graphql.svg +1 -0
  341. package/dist/web/icons/file-types/haskell.svg +1 -0
  342. package/dist/web/icons/file-types/html.svg +1 -0
  343. package/dist/web/icons/file-types/image.svg +1 -0
  344. package/dist/web/icons/file-types/ini.svg +1 -0
  345. package/dist/web/icons/file-types/janet.svg +1 -0
  346. package/dist/web/icons/file-types/jar.svg +1 -0
  347. package/dist/web/icons/file-types/java.svg +1 -0
  348. package/dist/web/icons/file-types/js.svg +1 -0
  349. package/dist/web/icons/file-types/json.svg +1 -0
  350. package/dist/web/icons/file-types/json5.svg +1 -0
  351. package/dist/web/icons/file-types/kotlin.svg +1 -0
  352. package/dist/web/icons/file-types/less.svg +1 -0
  353. package/dist/web/icons/file-types/license.svg +1 -0
  354. package/dist/web/icons/file-types/locale.svg +1 -0
  355. package/dist/web/icons/file-types/log.svg +1 -0
  356. package/dist/web/icons/file-types/lua.svg +1 -0
  357. package/dist/web/icons/file-types/markdown.svg +1 -0
  358. package/dist/web/icons/file-types/mdx.svg +1 -0
  359. package/dist/web/icons/file-types/npm.svg +1 -0
  360. package/dist/web/icons/file-types/objectivec.svg +1 -0
  361. package/dist/web/icons/file-types/ocaml.svg +1 -0
  362. package/dist/web/icons/file-types/parcel.svg +1 -0
  363. package/dist/web/icons/file-types/pddl_happenings.svg +1 -0
  364. package/dist/web/icons/file-types/pdf.svg +1 -0
  365. package/dist/web/icons/file-types/php.svg +1 -0
  366. package/dist/web/icons/file-types/powershell.svg +1 -0
  367. package/dist/web/icons/file-types/protobuf.svg +1 -0
  368. package/dist/web/icons/file-types/python.svg +1 -0
  369. package/dist/web/icons/file-types/r.svg +1 -0
  370. package/dist/web/icons/file-types/reactjs.svg +1 -0
  371. package/dist/web/icons/file-types/reactts.svg +1 -0
  372. package/dist/web/icons/file-types/ruby.svg +1 -0
  373. package/dist/web/icons/file-types/rust.svg +1 -0
  374. package/dist/web/icons/file-types/sass.svg +1 -0
  375. package/dist/web/icons/file-types/scala.svg +1 -0
  376. package/dist/web/icons/file-types/scss.svg +1 -0
  377. package/dist/web/icons/file-types/shell.svg +1 -0
  378. package/dist/web/icons/file-types/sql.svg +1 -0
  379. package/dist/web/icons/file-types/sqlite.svg +1 -0
  380. package/dist/web/icons/file-types/stylus.svg +1 -0
  381. package/dist/web/icons/file-types/svelte.svg +1 -0
  382. package/dist/web/icons/file-types/svg.svg +1 -0
  383. package/dist/web/icons/file-types/swift.svg +1 -0
  384. package/dist/web/icons/file-types/text.svg +1 -0
  385. package/dist/web/icons/file-types/toml.svg +1 -0
  386. package/dist/web/icons/file-types/typescript.svg +1 -0
  387. package/dist/web/icons/file-types/video.svg +1 -0
  388. package/dist/web/icons/file-types/vue.svg +1 -0
  389. package/dist/web/icons/file-types/xml.svg +1 -0
  390. package/dist/web/icons/file-types/yaml.svg +1 -0
  391. package/dist/web/icons/file-types/zip.svg +1 -0
  392. package/dist/web/icons/folder-types/android-open.svg +1 -0
  393. package/dist/web/icons/folder-types/android.svg +1 -0
  394. package/dist/web/icons/folder-types/api-open.svg +1 -0
  395. package/dist/web/icons/folder-types/api.svg +1 -0
  396. package/dist/web/icons/folder-types/app-open.svg +1 -0
  397. package/dist/web/icons/folder-types/app.svg +1 -0
  398. package/dist/web/icons/folder-types/asset-open.svg +1 -0
  399. package/dist/web/icons/folder-types/asset.svg +1 -0
  400. package/dist/web/icons/folder-types/azurepipelines-open.svg +1 -0
  401. package/dist/web/icons/folder-types/azurepipelines.svg +1 -0
  402. package/dist/web/icons/folder-types/blueprint-open.svg +1 -0
  403. package/dist/web/icons/folder-types/blueprint.svg +1 -0
  404. package/dist/web/icons/folder-types/bower-open.svg +1 -0
  405. package/dist/web/icons/folder-types/bower.svg +1 -0
  406. package/dist/web/icons/folder-types/component-open.svg +1 -0
  407. package/dist/web/icons/folder-types/component.svg +1 -0
  408. package/dist/web/icons/folder-types/config-open.svg +1 -0
  409. package/dist/web/icons/folder-types/config.svg +1 -0
  410. package/dist/web/icons/folder-types/controller-open.svg +1 -0
  411. package/dist/web/icons/folder-types/controller.svg +1 -0
  412. package/dist/web/icons/folder-types/css-open.svg +1 -0
  413. package/dist/web/icons/folder-types/css.svg +1 -0
  414. package/dist/web/icons/folder-types/db-open.svg +1 -0
  415. package/dist/web/icons/folder-types/db.svg +1 -0
  416. package/dist/web/icons/folder-types/default-open.svg +1 -0
  417. package/dist/web/icons/folder-types/default.svg +1 -0
  418. package/dist/web/icons/folder-types/dist-open.svg +1 -0
  419. package/dist/web/icons/folder-types/dist.svg +1 -0
  420. package/dist/web/icons/folder-types/docs-open.svg +1 -0
  421. package/dist/web/icons/folder-types/docs.svg +1 -0
  422. package/dist/web/icons/folder-types/fonts-open.svg +1 -0
  423. package/dist/web/icons/folder-types/fonts.svg +1 -0
  424. package/dist/web/icons/folder-types/git-open.svg +1 -0
  425. package/dist/web/icons/folder-types/git.svg +1 -0
  426. package/dist/web/icons/folder-types/github-open.svg +1 -0
  427. package/dist/web/icons/folder-types/github.svg +1 -0
  428. package/dist/web/icons/folder-types/helper-open.svg +1 -0
  429. package/dist/web/icons/folder-types/helper.svg +1 -0
  430. package/dist/web/icons/folder-types/hook-open.svg +1 -0
  431. package/dist/web/icons/folder-types/hook.svg +1 -0
  432. package/dist/web/icons/folder-types/husky-open.svg +1 -0
  433. package/dist/web/icons/folder-types/husky.svg +1 -0
  434. package/dist/web/icons/folder-types/idea-open.svg +1 -0
  435. package/dist/web/icons/folder-types/idea.svg +1 -0
  436. package/dist/web/icons/folder-types/images-open.svg +1 -0
  437. package/dist/web/icons/folder-types/images.svg +1 -0
  438. package/dist/web/icons/folder-types/interfaces-open.svg +1 -0
  439. package/dist/web/icons/folder-types/interfaces.svg +1 -0
  440. package/dist/web/icons/folder-types/ios-open.svg +1 -0
  441. package/dist/web/icons/folder-types/ios.svg +1 -0
  442. package/dist/web/icons/folder-types/library-open.svg +1 -0
  443. package/dist/web/icons/folder-types/library.svg +1 -0
  444. package/dist/web/icons/folder-types/locale-open.svg +1 -0
  445. package/dist/web/icons/folder-types/locale.svg +1 -0
  446. package/dist/web/icons/folder-types/middleware-open.svg +1 -0
  447. package/dist/web/icons/folder-types/middleware.svg +1 -0
  448. package/dist/web/icons/folder-types/model-open.svg +1 -0
  449. package/dist/web/icons/folder-types/model.svg +1 -0
  450. package/dist/web/icons/folder-types/node-open.svg +1 -0
  451. package/dist/web/icons/folder-types/node.svg +1 -0
  452. package/dist/web/icons/folder-types/public-open.svg +1 -0
  453. package/dist/web/icons/folder-types/public.svg +1 -0
  454. package/dist/web/icons/folder-types/redux-open.svg +1 -0
  455. package/dist/web/icons/folder-types/redux.svg +1 -0
  456. package/dist/web/icons/folder-types/route-open.svg +1 -0
  457. package/dist/web/icons/folder-types/route.svg +1 -0
  458. package/dist/web/icons/folder-types/script-open.svg +1 -0
  459. package/dist/web/icons/folder-types/script.svg +1 -0
  460. package/dist/web/icons/folder-types/seedkit-open.svg +1 -0
  461. package/dist/web/icons/folder-types/seedkit.svg +1 -0
  462. package/dist/web/icons/folder-types/server-open.svg +1 -0
  463. package/dist/web/icons/folder-types/server.svg +1 -0
  464. package/dist/web/icons/folder-types/services-open.svg +1 -0
  465. package/dist/web/icons/folder-types/services.svg +1 -0
  466. package/dist/web/icons/folder-types/src-open.svg +1 -0
  467. package/dist/web/icons/folder-types/src.svg +1 -0
  468. package/dist/web/icons/folder-types/story-open.svg +1 -0
  469. package/dist/web/icons/folder-types/story.svg +1 -0
  470. package/dist/web/icons/folder-types/style-open.svg +1 -0
  471. package/dist/web/icons/folder-types/style.svg +1 -0
  472. package/dist/web/icons/folder-types/template-open.svg +1 -0
  473. package/dist/web/icons/folder-types/template.svg +1 -0
  474. package/dist/web/icons/folder-types/test-open.svg +1 -0
  475. package/dist/web/icons/folder-types/test.svg +1 -0
  476. package/dist/web/icons/folder-types/theme-open.svg +1 -0
  477. package/dist/web/icons/folder-types/theme.svg +1 -0
  478. package/dist/web/icons/folder-types/tools-open.svg +1 -0
  479. package/dist/web/icons/folder-types/tools.svg +1 -0
  480. package/dist/web/icons/folder-types/typescript-open.svg +1 -0
  481. package/dist/web/icons/folder-types/typescript.svg +1 -0
  482. package/dist/web/icons/folder-types/typings-open.svg +1 -0
  483. package/dist/web/icons/folder-types/typings.svg +1 -0
  484. package/dist/web/icons/folder-types/view-open.svg +1 -0
  485. package/dist/web/icons/folder-types/view.svg +1 -0
  486. package/dist/web/icons/folder-types/vscode-open.svg +1 -0
  487. package/dist/web/icons/folder-types/vscode.svg +1 -0
  488. package/dist/web/index.html +1 -0
  489. package/dist/web/index.txt +25 -0
  490. package/dist/web/login/__next._full.txt +27 -0
  491. package/dist/web/login/__next._head.txt +6 -0
  492. package/dist/web/login/__next._index.txt +10 -0
  493. package/dist/web/login/__next._tree.txt +5 -0
  494. package/dist/web/login/__next.login.__PAGE__.txt +9 -0
  495. package/dist/web/login/__next.login.txt +5 -0
  496. package/dist/web/login.html +1 -0
  497. package/dist/web/login.txt +27 -0
  498. package/dist/web/manifest.json +53 -0
  499. package/dist/web/maskable-192.png +0 -0
  500. package/dist/web/maskable-512.png +0 -0
  501. package/dist/web/next.svg +1 -0
  502. package/dist/web/proxy.html +179 -0
  503. package/dist/web/screenshot-desktop.png +0 -0
  504. package/dist/web/screenshot-mobile.png +0 -0
  505. package/dist/web/screenshots/desktop-ide.webp +0 -0
  506. package/dist/web/screenshots/mobile-1.webp +0 -0
  507. package/dist/web/screenshots/mobile-2.webp +0 -0
  508. package/dist/web/screenshots/mobile-3.webp +0 -0
  509. package/dist/web/sw-site.js +283 -0
  510. package/dist/web/sw.js +88 -0
  511. package/dist/web/swBridgeClaim.js +57 -0
  512. package/dist/web/vercel.svg +1 -0
  513. package/dist/web/window.svg +1 -0
  514. package/dist/web/workspace/__next._full.txt +25 -0
  515. package/dist/web/workspace/__next._head.txt +6 -0
  516. package/dist/web/workspace/__next._index.txt +10 -0
  517. package/dist/web/workspace/__next._tree.txt +6 -0
  518. package/dist/web/workspace/__next.workspace.__PAGE__.txt +5 -0
  519. package/dist/web/workspace/__next.workspace.txt +8 -0
  520. package/dist/web/workspace/browse/__next._full.txt +27 -0
  521. package/dist/web/workspace/browse/__next._head.txt +6 -0
  522. package/dist/web/workspace/browse/__next._index.txt +10 -0
  523. package/dist/web/workspace/browse/__next._tree.txt +6 -0
  524. package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +5 -0
  525. package/dist/web/workspace/browse/__next.workspace.browse.txt +5 -0
  526. package/dist/web/workspace/browse/__next.workspace.txt +8 -0
  527. package/dist/web/workspace/browse.html +1 -0
  528. package/dist/web/workspace/browse.txt +27 -0
  529. package/dist/web/workspace/editor/__next._full.txt +27 -0
  530. package/dist/web/workspace/editor/__next._head.txt +6 -0
  531. package/dist/web/workspace/editor/__next._index.txt +10 -0
  532. package/dist/web/workspace/editor/__next._tree.txt +6 -0
  533. package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +5 -0
  534. package/dist/web/workspace/editor/__next.workspace.editor.txt +5 -0
  535. package/dist/web/workspace/editor/__next.workspace.txt +8 -0
  536. package/dist/web/workspace/editor.html +1 -0
  537. package/dist/web/workspace/editor.txt +27 -0
  538. package/dist/web/workspace/files/__next._full.txt +27 -0
  539. package/dist/web/workspace/files/__next._head.txt +6 -0
  540. package/dist/web/workspace/files/__next._index.txt +10 -0
  541. package/dist/web/workspace/files/__next._tree.txt +6 -0
  542. package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +5 -0
  543. package/dist/web/workspace/files/__next.workspace.files.txt +5 -0
  544. package/dist/web/workspace/files/__next.workspace.txt +8 -0
  545. package/dist/web/workspace/files.html +1 -0
  546. package/dist/web/workspace/files.txt +27 -0
  547. package/dist/web/workspace/git/__next._full.txt +27 -0
  548. package/dist/web/workspace/git/__next._head.txt +6 -0
  549. package/dist/web/workspace/git/__next._index.txt +10 -0
  550. package/dist/web/workspace/git/__next._tree.txt +6 -0
  551. package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +5 -0
  552. package/dist/web/workspace/git/__next.workspace.git.txt +5 -0
  553. package/dist/web/workspace/git/__next.workspace.txt +8 -0
  554. package/dist/web/workspace/git.html +1 -0
  555. package/dist/web/workspace/git.txt +27 -0
  556. package/dist/web/workspace/mobile/__next._full.txt +27 -0
  557. package/dist/web/workspace/mobile/__next._head.txt +6 -0
  558. package/dist/web/workspace/mobile/__next._index.txt +10 -0
  559. package/dist/web/workspace/mobile/__next._tree.txt +6 -0
  560. package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +5 -0
  561. package/dist/web/workspace/mobile/__next.workspace.mobile.txt +5 -0
  562. package/dist/web/workspace/mobile/__next.workspace.txt +8 -0
  563. package/dist/web/workspace/mobile.html +1 -0
  564. package/dist/web/workspace/mobile.txt +27 -0
  565. package/dist/web/workspace/remote/__next._full.txt +27 -0
  566. package/dist/web/workspace/remote/__next._head.txt +6 -0
  567. package/dist/web/workspace/remote/__next._index.txt +10 -0
  568. package/dist/web/workspace/remote/__next._tree.txt +6 -0
  569. package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +5 -0
  570. package/dist/web/workspace/remote/__next.workspace.remote.txt +5 -0
  571. package/dist/web/workspace/remote/__next.workspace.txt +8 -0
  572. package/dist/web/workspace/remote.html +1 -0
  573. package/dist/web/workspace/remote.txt +27 -0
  574. package/dist/web/workspace/terminal/default/__next._full.txt +27 -0
  575. package/dist/web/workspace/terminal/default/__next._head.txt +6 -0
  576. package/dist/web/workspace/terminal/default/__next._index.txt +10 -0
  577. package/dist/web/workspace/terminal/default/__next._tree.txt +6 -0
  578. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +5 -0
  579. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +5 -0
  580. package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +5 -0
  581. package/dist/web/workspace/terminal/default/__next.workspace.txt +8 -0
  582. package/dist/web/workspace/terminal/default.html +1 -0
  583. package/dist/web/workspace/terminal/default.txt +27 -0
  584. package/dist/web/workspace/workspaces/__next._full.txt +27 -0
  585. package/dist/web/workspace/workspaces/__next._head.txt +6 -0
  586. package/dist/web/workspace/workspaces/__next._index.txt +10 -0
  587. package/dist/web/workspace/workspaces/__next._tree.txt +6 -0
  588. package/dist/web/workspace/workspaces/__next.workspace.txt +8 -0
  589. package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +5 -0
  590. package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +5 -0
  591. package/dist/web/workspace/workspaces.html +1 -0
  592. package/dist/web/workspace/workspaces.txt +27 -0
  593. package/dist/web/workspace.html +1 -0
  594. package/dist/web/workspace.txt +25 -0
  595. package/package.json +4 -4
  596. package/dist/ui/assets/index-CLABbREo.css +0 -1
  597. package/dist/ui/assets/index-MX08IV5-.js +0 -58
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3429],{43429:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});let o={common:{statusIdle:"Idle",statusWorking:"Working",statusBlocked:"Needs input",statusDone:"Your turn",loading:"加载中...",cancel:"取消",confirm:"确认",save:"保存",delete:"删除",close:"关闭",back:"返回",edit:"编辑",rename:"重命名",remove:"移除",open:"打开",yes:"是",no:"否",ok:"确定",error:"错误",success:"成功",failed:"失败",retry:"重试",refresh:"刷新",clipboard:"Clipboard",clipboardCopy:"Copy",clipboardEmpty:"Clipboard is empty",search:"搜索",create:"创建",new:"新建",add:"添加",copy:"复制",copied:"已复制",download:"下载",upload:"上传",enabled:"已启用",disabled:"已禁用",on:"开",off:"关",minute:"分钟",hour:"小时",day:"天",minutesAgo:"{n} 分钟前",hoursAgo:"{n} 小时前",daysAgo:"{n} 天前"},login:{tagline:"随时随地访问您的终端",heroLine1:"Any machine.",heroLine2:"One terminal.",heroLine3:"In your pocket.",featureTerminal:"Terminal",featureDesktop:"Desktop",featureFiles:"Files",termConnected:"agent connected",termTunnel:"tunnel established",termReady:"ready",accessKey:"访问密钥",placeholder:"sk-xxx... 或一次性密钥 (ABC123)",rememberKey:"记住此密钥",connect:"连接",connecting:"连接中...",authenticating:"正在使用令牌进行身份验证...",invalidKeyTail:"Wrong access key — check the last characters and try again.",scanQr:"Scan QR to login",qrScanTitle:"Scan QR Code",qrHint:"Point the camera at the QR code shown on the machine running 9Remote.",qrDetected:"QR Code detected!",qrAuthenticating:"Authenticating...",qrPleaseWait:"Please wait...",qrLibFail:"Failed to load the QR scanner library.",qrInitFail:"Could not start the scanner.",qrCamDenied:"Camera permission denied. Allow camera access and try again.",qrNoCamera:"No camera found on this device.",qrCamBusy:"Camera is in use by another app.",qrCamError:"Could not open the camera.",savedKeys:"已保存的密钥",login:"登录",lastLogin:"上次登录",namePlaceholder:"Name this key (optional)",rename:"Rename",deleteKeyTitle:"Delete key",deleteKeyConfirm:'Are you sure you want to delete "{name}"?',justNow:"刚刚",minutesAgo:"{n} 分钟前",hoursAgo:"{n} 小时前",daysAgo:"{n} 天前",tapToScan:"点击扫描",orEnterManually:"或手动输入密钥",addKey:"Add Key",secureTitle:"Secure & Encrypted",secureDesc:"All connections are end-to-end encrypted and secure.",featAccessTitle:"Access Anywhere",featAccessDesc:"Connect from any device, anywhere.",featSecureTitle:"Secure Connection",featSecureDesc:"End-to-end encryption keeps you safe.",featFastTitle:"Fast & Reliable",featFastDesc:"Low latency and high performance.",featSessionsTitle:"Multiple Sessions",featSessionsDesc:"Manage and switch between sessions.",home:"首页",docs:"文档"},menu:{reloadRestart:"Reload & Restart",restartHost:"Restart 9remote host",restartConfirmTitle:"Restart 9remote host?",restartConfirmMessage:"This restarts the agent process (no reinstall). Terminal sessions are preserved. It takes a few seconds.",restartStarting:"Restarting host…",restartRestarting:"Restarting 9remote…",restartDone:"Restarted! Reconnecting…",restartTimeout:"Restart is taking too long",restartTimeoutHint:"Reconnect manually if it doesn't recover.",title:"菜单",language:"语言",theme:"主题",notifications:"通知",webgl:"GPU Render (Faster)",webglHint:"如果文字显示异常请关闭",notificationsHint:"Notify when agent finishes",files:"File Explorer",downloading:"Downloading",copying:"Copying",conflictTitle:"File already exists",conflictMessage:"{name} already exists. Replace or skip?",skip:"Skip",skipAll:"Skip all",replace:"Replace",replaceAll:"Replace all",sites:"站点",commandNotes:"命令笔记",community:"社区",installApp:"安装应用",codespace:"Codespace",logout:"退出登录",settingsGeneral:"General",settingsAppearance:"Appearance",settingsTerminalTab:"Terminal",settingsMcp:"Plugins",mcpIntro:"Extra abilities you can give your AI coding tools.",mcpTools:"Allow",mcpRestartHint:"Turning it off applies at once. Turning it on needs the AI tool restarted.",mcpUnavailable:"Update this host to use MCP.",artifactFormats:"Formats it can show",mcpClients:"Works with",settingsWorkspace:"Workspace",settingsApplication:"Application",settingsAccount:"Account",themeLight:"Light",themeDark:"Dark",reload:"重新加载应用",remoteDesktop:"远程桌面",settings:"设置",enablePush:"启用推送通知",disablePush:"禁用推送通知",pushHint:"启用推送通知,以便在 AI 完成任务时收到提醒",pushActiveHint:"Push notifications are on for this device. You'll be alerted when AI completes tasks.",versionMismatch:"Agent {version} 已过时",versionMismatchHint:"部分功能可能无法使用。请运行:",updateNow:"Update now",updating:"Updating… reconnecting",webReloadTitle:"New web version available",webReloadHint:"Reload to get the latest interface.",reloadWeb:"Reload",updateAvailableTitle:"9Remote host update available",updateStarting:"Starting update…",updateInstalling:"Installing new version…",updateTimeout:"Update is taking too long",updateTimeoutHint:"Reload manually if it doesn't recover.",updateRestarting:"Restarting agent…",updateReconnecting:"Reconnecting…",updateDone:"Updated! Reloading…",version:"版本"},workspace:{loading:"加载中...",logoutTitle:"退出登录",logoutMessage:"您确定要退出登录吗?",failedCreateSession:"创建会话失败:{error}",failedRenameSession:"重命名会话失败:{error}"},sessions:{headerTitle:"9remote.cc",connected:"已连接",disconnected:"已断开",codespaceStopped:"Codespace 已停止",placeholder:"终端名称(可选)",newButton:"+ 新建",empty:"没有活动会话",emptyHint:"创建一个新会话以开始",created:"创建于 {time}",deleteTitle:"删除会话",deleteMessage:'您确定要删除 "{name}" 吗?',editName:"编辑名称",newTerminal:"新建终端",options:"Options"},workspaces:{title:"Groups",newWorkspace:"Group",newWorkspacePrompt:"Group name",defaultName:"New Group",ungrouped:"Ungrouped",addTerminal:"Add terminal to group",moveToWorkspace:"Move to group",rename:"Rename group",delete:"Delete group",emptyWorkspace:"No terminals in this group",deleteTitle:"Delete Group",deleteMessage:'Delete group "{name}"? Terminals move to Ungrouped.'},terminal:{quotaNoData:"No quota data",quotaUsageTitle:"usage",back:"返回",menu:"菜单",newTerminal:"新建终端",remoteDesktop:"远程桌面",defaultName:"终端"},files:{selectWorkspace:"选择工作区",recentWorkspaces:"最近的工作区",home:"主目录",root:"根目录",drive:"驱动器 {letter}",codespaces:"Codespaces",removeRecent:"从最近移除",removeTitle:"移除工作区",removeMessage:'从最近的工作区中移除 "{name}"?',setAsWorkspace:"设为工作区",openFolder:"打开文件夹",newFile:"新建文件",newFolder:"新建文件夹",rename:"重命名",delete:"删除",deleteFile:"删除文件",deleteFolder:"删除文件夹",deleteFileMessage:'删除 "{name}"?',deleteFolderMessage:'删除文件夹 "{name}" 及其所有内容?',emptyFolder:"空文件夹",git:"Git",parent:"上级文件夹",workspace:"工作区",failedLoad:"加载失败:{error}",failedDelete:"删除失败:{error}",failedCreate:"创建失败:{error}",failedRename:"重命名失败:{error}",enterName:"输入名称",confirmRename:"重命名为:",setWorkspace:"设置工作区",setAsWorkspaceTitle:"设为工作区",switchWorkspace:"切换工作区",searchFiles:"搜索文件",toggleHidden:"切换隐藏文件",searchPlaceholder:"搜索文件...",searching:"搜索中...",noFilesFound:"未找到文件",noGitRepo:"没有 Git 仓库",cannotOpenBinary:"无法打开二进制文件",createNew:"新建",file:"文件",folder:"文件夹",placeholderFile:"filename.js",placeholderFolder:"folder-name",pickFile:"Choose files",pickFolder:"Choose folder",copyPath:"复制路径",copyRelPath:"Copy Relative Path",copyName:"Copy Filename",delete:"删除",rename:"重命名",deleteConfirmTitle:"删除",deleteConfirmMessage:'删除 "{name}"?'},editor:{save:"保存",saving:"保存中...",saved:"已保存",unsaved:"未保存的更改",close:"关闭",discard:"放弃",discardTitle:"放弃更改",discardMessage:"您有未保存的更改。要放弃吗?",unsavedTitle:"Save changes to {name}?",unsavedBody:"Your changes will be lost if you don't save them.",failedLoad:"加载文件失败:{error}",failedSave:"保存失败:{error}",openFull:"Open in full editor",artifact:"Artifact",readOnly:"只读",line:"行",column:"列",gitDiff:"Git 差异",typeText:"输入文本并插入...",insert:"插入",statusModified:"已修改",statusAdded:"已添加",statusUntracked:"未跟踪"},git:{title:"Git",branch:"分支",changes:"更改",staged:"已暂存",unstaged:"未暂存",untracked:"未跟踪",commit:"提交",commitAndPush:"Commit & Push",commitSuccess:"Commit successful",pushSuccess:"Push successful",stageFailed:"Failed to stage changes",commitFailed:"Commit failed",pushFailed:"Push failed",pullSuccess:"Pull successful",pullFailed:"Pull failed",stageAllConfirmTitle:"Stage All & Commit",stageAllConfirmMessage:"No changes are staged. Stage all changes and commit?",stageAndCommit:"Stage & Commit",gitActions:"Git actions",commitPlaceholder:"Commit message…",stageAllNote:"Stage all \xb7 {count}",upToDate:"Everything up-to-date",commitMessage:"提交信息",push:"推送",pull:"拉取",fetch:"获取",stage:"暂存",stageAll:"全部暂存",unstage:"取消暂存",discard:"放弃",discardChanges:"放弃更改",discardMessage:'放弃对 "{name}" 的更改?',noChanges:"无更改",diff:"差异",pushing:"推送中...",pulling:"拉取中...",committing:"提交中...",failedCommit:"提交失败:{error}",failedPush:"推送失败:{error}",failedPull:"拉取失败:{error}",status:"状态",diffTab:"差异",modified:"已修改",added:"已添加",deleted:"已删除",untrackedTitle:"未跟踪",openFile:"打开文件",discardChangesTitle:"放弃更改",discardConfirmTitle:"放弃更改",discardConfirmDelete:'您确定要删除 "{name}" 吗?此操作无法撤销。',discardConfirmDiscard:'您确定要放弃 "{name}" 中的更改吗?此操作无法撤销。'},remote:{title:"远程桌面",connecting:"连接中...",disconnected:"已断开",fullscreen:"全屏",exitFullscreen:"退出全屏",receivingImage:"Receiving screen…",keyboard:"键盘",mouse:"鼠标",quality:"质量",fps:"FPS",debug:"调试",help:"帮助",close:"关闭",sendKey:"发送按键",helpTitle:"远程桌面帮助",notAvailable:"远程桌面不可用",customizeKeys:"自定义按键",back:"返回",resetZoom:"重置缩放",refresh:"刷新",rectangleSelection:"矩形选择",handMode:"手型模式",toggleKeyboard:"切换原生键盘",hideControls:"Hide controls",showControls:"Show controls",textBatchInput:"文本批量输入",extraKeys:"额外按键",customizeRemoteKeys:"自定义远程按键",exitRemote:"退出远程桌面",debugTitle:"调试统计",minimize:"最小化",transport:"传输",latency:"延迟",tilesPerSec:"瓦片/秒",bandwidth:"带宽",clearStats:"清除统计",lockTitle:"Windows 已锁定",lockGrantDesc:'请先在此电脑的 9remote host 中开启"远程解锁"。',lockDesc:"输入此电脑的 Windows PIN 或密码",lockPlaceholder:"Windows PIN 或密码",unlock:"解锁",unlocking:"正在解锁…",unlockFailed:"解锁失败 — 请检查 PIN/密码后重试。"},remoteHelp:{modePc:"PC / 鼠标",modeTrackpad:"触摸 \xb7 Trackpad",modeDirect:"触摸 \xb7 直接",mouseTitle:"鼠标",keyboardTitle:"键盘",gesturesTrackpadTitle:"手势 (Trackpad ✋)",gesturesDirectTitle:"手势 (直接)",toolbarTitle:"工具栏",mouseClickKey:"点击 / 拖动",mouseClickDesc:"左键点击,拖动以选择/移动",mouseRightKey:"右键点击",mouseRightDesc:"在远程上显示右键菜单",mouseWheelKey:"滚轮",mouseWheelDesc:"滚动远程画面(Shift + 滚轮 = 水平滚动)",mouseDoubleKey:"双击",mouseDoubleDesc:"在远程上双击",keyPhysicalKey:"物理按键",keyPhysicalDesc:"直接发送(Tab、F 键等会被捕获)",keyModifierKey:"Ctrl / Alt / Shift / ⌘",keyModifierDesc:"粘性修饰键 — 与下一个按键组合",trackpadSwipeKey:"单指滑动",trackpadSwipeDesc:"移动虚拟光标",trackpadTapKey:"单指点按",trackpadTapDesc:"在光标位置左键点击",trackpad2TapKey:"双指点按",trackpad2TapDesc:"在光标位置右键点击",trackpad2SwipeKey:"双指滑动",trackpad2SwipeDesc:"在光标位置滚动",trackpadPinchKey:"双指捏合",trackpadPinchDesc:"缩放画布",trackpadScrollLockKey:"长按 + 拖动",trackpadScrollLockDesc:"长按锁定滚动,可向任意方向拖动",directTapKey:"单指点按",directTapDesc:"在点按位置点击",directLongKey:"单指长按",directLongDesc:"右键点击",directDoubleKey:"单指双击",directDoubleDesc:"双击",directScrollKey:"双指滑动",directScrollDesc:"滚动远程画面",directPinchKey:"双指捏合",directPinchDesc:"缩放画布",directPanKey:"单指拖动(缩放>1)",directPanDesc:"平移画布",toolbarHandDesc:"按住左键(拖动模式)— 再次点击释放",toolbarMouseDirectDesc:"切换到直接模式",toolbarMouseTrackpadDesc:"切换到 Trackpad(虚拟光标)",toolbarKeyboardDesc:"原生键盘 / 文本批量输入",toolbarRectDesc:"矩形选择模式"},remoteControls:{enterToSend:"Tab / Ctrl+数字 切换标签页",typeToSend:"输入要发送的文本...",send:"发送",trackpadMode:"Trackpad 模式",directMode:"直接模式",bottomRow:"底部行",extraPanel:"额外面板",exitConfirmMessage:"您确定要退出当前的远程桌面会话吗?"},connection:{retrying:"重新连接中...",waitingApproval:"等待批准",approvalDescription:"在您连接之前,9Remote host 需要批准此设备。",approvalHint:"请检查您计算机上的终端。",rejectedTitle:"设备被拒绝",rejectedDescription:"此设备未被 9Remote host 批准。",backToLogin:"返回登录",failed:"连接失败",failedDescription:"尝试 {n} 次后无法连接",attemptOf:"第 {n} 次,共 {total} 次",exit:"退出",cancel:"取消",retry:"立即重试"},notifications:{claudeCode:"Claude Code",codex:"Codex",geminiCli:"Gemini CLI",openCode:"OpenCode",needsInput:"needs input",badgeTitle:"{blocked} needs input, {done} your turn",replied:"replied",agent:"Agent"},sites:{title:"站点",localSites:"本地站点",selectSitePreview:"选择一个站点进行预览",browserNewTab:"New tab",browserAddressPlaceholder:"localhost:3000 or /path",browserNotConnected:"Connect to your agent first",portPlaceholder:"端口",loadingSites:"加载站点中...",notConnected:"Not connected to the agent",noSitesFound:"未找到站点",startServerHint:"启动本地开发服务器以在此处查看",siteNamePlaceholder:"站点名称",saveTitle:"保存",editNameTitle:"编辑名称",removeTitle:"移除",removePortTitle:"移除端口",removePortMessage:"从已保存列表中移除端口 {port}?",popupBlocked:"弹窗被拦截!请允许此站点的弹窗。",startProxyFailed:"无法为 {name} 启动代理会话",foundCount:"找到 {n} 个站点{suffix}",focusOpenedTab:"聚焦已打开的标签页",openInNewTab:"在新标签页中打开",goBack:"后退",goForward:"前进",loadingSite:"加载中...",empty:"没有活动站点",emptyHint:"运行本地服务器以在此处查看",open:"打开",refresh:"刷新"},commandNotes:{title:"命令笔记",noSavedCommands:"没有已保存的命令",addFirstBelow:"在下方添加您的第一条命令",clickToCopy:"点击复制",copiedBang:"已复制!",copy:"复制",edit:"编辑",delete:"删除",editCommandPlaceholder:"编辑命令...",addCommandPlaceholder:"添加命令...",update:"更新",add:"添加",empty:"暂无笔记",emptyHint:"保存命令以便快速访问",add:"添加笔记",edit:"编辑笔记",delete:"删除笔记",deleteMessage:"删除此笔记?",name:"名称",command:"命令",save:"保存",placeholderName:"例如:启动开发服务器",placeholderCommand:"例如:npm run dev"},mobileKeyboard:{pasteHere:"在此粘贴 (Cmd+V)",enterToSend:"Tab / Ctrl+数字 切换标签页",typeCommand:"输入命令并发送...",send:"发送",toggleExtraKeys:"切换额外按键",toggleTextInput:"切换文本输入",customizeTerminalKeys:"自定义终端按键",mainBar:"主栏",extraPanel:"额外面板",fileTooLarge:"文件过大(最大 5MB)",readFileFailed:"读取文件失败",uploadFailed:"上传文件失败:{error}"},terminalPane:{scrollToBottom:"滚动到底部",changedFiles:"Changed files",pasteOrType:"在此粘贴或输入",paste:"粘贴"},pwaGuide:{copyYourKey:"复制您的密钥",copyKeyHint:"点击下方密钥进行复制 — 安装后您将需要它来登录",tapToCopyApiKey:"点击复制 API 密钥",copiedBang:"已复制!",copy:"复制",tapShareButton:"点击分享按钮",tapShareHint:"点击 iOS Safari 底部的分享按钮",addToHome:"添加到主屏幕",addToHomeHint:'向下滚动并点击 "添加到主屏幕"',openAppPasteKey:"打开应用并粘贴密钥",openAppPasteKeyHint:"打开已安装的应用并粘贴您的密钥进行登录",openMenu:"打开菜单",openMenuHint:"点击 Android Chrome 中的菜单按钮(三个点)",installApp:"安装应用",installAppHint:'点击 "安装应用" 或 "添加到主屏幕"',lookInstallIcon:"查找安装图标",lookInstallIconHint:"在地址栏中查找安装图标",clickInstallPaste:"点击安装并粘贴密钥",installNow:"Install Now",installNowHint:"Install 9Remote as an app for quick access",installing:"Installing...",clickInstallPasteHint:"点击安装,打开应用,然后粘贴您的密钥进行登录",alternativeHint:'或者:打开浏览器菜单 → "安装 9Remote" 或 "创建快捷方式"',loadingPlatform:"正在加载平台检测...",iosPlatform:"iOS (iPhone/iPad)",androidPlatform:"Android",macosPlatform:"macOS",windowsPlatform:"Windows",desktopPlatform:"桌面",alreadyInstalled:"已安装!",alreadyInstalledHint:"您已经在使用已安装的 9Remote 应用",installationGuide:"安装指南",installationSteps:"安装步骤:"},community:{title:"社区",description:"加入 9Remote 社区"},pwa:{title:"安装为应用",description:"在您的设备上安装 9Remote 以获得最佳体验",iosTitle:"iOS Safari",androidTitle:"Android Chrome",desktopTitle:"桌面"},codespace:{title:"Codespace",name:"名称",status:"状态",running:"运行中",autoStart:"自动启动 9Remote",autoStartHint:"Codespace 打开时启动 9Remote",stop:"停止 Codespace",stopHint:"停止以节省用量",restartHint:"如需重新启动,请前往 GitHub",unknown:"未知"}}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3514],{83514:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n});let n={common:{statusIdle:"Idle",statusWorking:"Working",statusBlocked:"Needs input",statusDone:"Your turn",loading:"Laddar...",cancel:"Avbryt",confirm:"Bekr\xe4fta",save:"Spara",delete:"Radera",close:"St\xe4ng",back:"Tillbaka",edit:"Redigera",rename:"Byt namn",remove:"Ta bort",open:"\xd6ppna",yes:"Ja",no:"Nej",ok:"OK",error:"Fel",success:"Lyckades",failed:"Misslyckades",retry:"F\xf6rs\xf6k igen",refresh:"Uppdatera",clipboard:"Clipboard",clipboardCopy:"Copy",clipboardEmpty:"Clipboard is empty",search:"S\xf6k",create:"Skapa",new:"Ny",add:"L\xe4gg till",copy:"Kopiera",copied:"Kopierad",download:"Ladda ner",upload:"Ladda upp",enabled:"Aktiverad",disabled:"Inaktiverad",on:"p\xe5",off:"av",minute:"min",hour:"tim",day:"d",minutesAgo:"{n} min sedan",hoursAgo:"{n} timmar sedan",daysAgo:"{n} dagar sedan"},login:{tagline:"F\xe5 \xe5tkomst till din terminal var som helst",heroLine1:"Any machine.",heroLine2:"One terminal.",heroLine3:"In your pocket.",featureTerminal:"Terminal",featureDesktop:"Desktop",featureFiles:"Files",termConnected:"agent connected",termTunnel:"tunnel established",termReady:"ready",accessKey:"\xc5tkomstnyckel",placeholder:"sk-xxx... eller eng\xe5ngsnyckel (ABC123)",rememberKey:"Kom ih\xe5g den h\xe4r nyckeln",connect:"Anslut",connecting:"Ansluter...",authenticating:"Autentiserar med token...",invalidKeyTail:"Wrong access key — check the last characters and try again.",scanQr:"Scan QR to login",qrScanTitle:"Scan QR Code",qrHint:"Point the camera at the QR code shown on the machine running 9Remote.",qrDetected:"QR Code detected!",qrAuthenticating:"Authenticating...",qrPleaseWait:"Please wait...",qrLibFail:"Failed to load the QR scanner library.",qrInitFail:"Could not start the scanner.",qrCamDenied:"Camera permission denied. Allow camera access and try again.",qrNoCamera:"No camera found on this device.",qrCamBusy:"Camera is in use by another app.",qrCamError:"Could not open the camera.",savedKeys:"Sparade nycklar",login:"Logga in",lastLogin:"Senast inloggad",namePlaceholder:"Name this key (optional)",rename:"Rename",deleteKeyTitle:"Delete key",deleteKeyConfirm:'Are you sure you want to delete "{name}"?',justNow:"Just nu",minutesAgo:"{n}m sedan",hoursAgo:"{n}t sedan",daysAgo:"{n}d sedan",tapToScan:"Tryck f\xf6r att skanna",orEnterManually:"eller ange nyckel manuellt",addKey:"Add Key",secureTitle:"Secure & Encrypted",secureDesc:"All connections are end-to-end encrypted and secure.",featAccessTitle:"Access Anywhere",featAccessDesc:"Connect from any device, anywhere.",featSecureTitle:"Secure Connection",featSecureDesc:"End-to-end encryption keeps you safe.",featFastTitle:"Fast & Reliable",featFastDesc:"Low latency and high performance.",featSessionsTitle:"Multiple Sessions",featSessionsDesc:"Manage and switch between sessions.",home:"Hem",docs:"Dokumentation"},menu:{reloadRestart:"Reload & Restart",restartHost:"Restart 9remote host",restartConfirmTitle:"Restart 9remote host?",restartConfirmMessage:"This restarts the agent process (no reinstall). Terminal sessions are preserved. It takes a few seconds.",restartStarting:"Restarting host…",restartRestarting:"Restarting 9remote…",restartDone:"Restarted! Reconnecting…",restartTimeout:"Restart is taking too long",restartTimeoutHint:"Reconnect manually if it doesn't recover.",title:"Meny",language:"Spr\xe5k",theme:"Tema",notifications:"Aviseringar",webgl:"GPU Render (Faster)",webglHint:"St\xe4ng av om texten ser fel ut",notificationsHint:"Notify when agent finishes",files:"File Explorer",downloading:"Downloading",copying:"Copying",conflictTitle:"File already exists",conflictMessage:"{name} already exists. Replace or skip?",skip:"Skip",skipAll:"Skip all",replace:"Replace",replaceAll:"Replace all",sites:"Webbplatser",commandNotes:"Kommandoanteckningar",community:"Gemenskap",installApp:"Installera app",codespace:"Codespace",logout:"Logga ut",settingsGeneral:"General",settingsAppearance:"Appearance",settingsTerminalTab:"Terminal",settingsMcp:"Plugins",mcpIntro:"Extra abilities you can give your AI coding tools.",mcpTools:"Allow",mcpRestartHint:"Turning it off applies at once. Turning it on needs the AI tool restarted.",mcpUnavailable:"Update this host to use MCP.",artifactFormats:"Formats it can show",mcpClients:"Works with",settingsWorkspace:"Workspace",settingsApplication:"Application",settingsAccount:"Account",themeLight:"Light",themeDark:"Dark",reload:"Ladda om appen",remoteDesktop:"Fj\xe4rrskrivbord",settings:"Inst\xe4llningar",enablePush:"Aktivera push-aviseringar",disablePush:"Inaktivera push-aviseringar",pushHint:"Aktivera push-aviseringar f\xf6r att f\xe5 meddelanden n\xe4r AI slutf\xf6r uppgifter",pushActiveHint:"Push notifications are on for this device. You'll be alerted when AI completes tasks.",versionMismatch:"Agent {version} \xe4r f\xf6r\xe5ldrad",versionMismatchHint:"Vissa funktioner kanske inte fungerar. K\xf6r:",updateNow:"Update now",updating:"Updating… reconnecting",webReloadTitle:"New web version available",webReloadHint:"Reload to get the latest interface.",reloadWeb:"Reload",updateAvailableTitle:"9Remote host update available",updateStarting:"Starting update…",updateInstalling:"Installing new version…",updateTimeout:"Update is taking too long",updateTimeoutHint:"Reload manually if it doesn't recover.",updateRestarting:"Restarting agent…",updateReconnecting:"Reconnecting…",updateDone:"Updated! Reloading…",version:"Version"},workspace:{loading:"Laddar...",logoutTitle:"Logga ut",logoutMessage:"\xc4r du s\xe4ker p\xe5 att du vill logga ut?",failedCreateSession:"Det gick inte att skapa session: {error}",failedRenameSession:"Det gick inte att byta namn p\xe5 sessionen: {error}"},sessions:{headerTitle:"9remote.cc",connected:"Ansluten",disconnected:"Fr\xe5nkopplad",codespaceStopped:"Codespace stoppad",placeholder:"Terminalnamn (valfritt)",newButton:"+ Ny",empty:"Inga aktiva sessioner",emptyHint:"Skapa en ny session f\xf6r att komma ig\xe5ng",created:"Skapad {time}",deleteTitle:"Radera session",deleteMessage:'\xc4r du s\xe4ker p\xe5 att du vill radera "{name}"?',editName:"Redigera namn",newTerminal:"Ny terminal",options:"Options"},workspaces:{title:"Groups",newWorkspace:"Group",newWorkspacePrompt:"Group name",defaultName:"New Group",ungrouped:"Ungrouped",addTerminal:"Add terminal to group",moveToWorkspace:"Move to group",rename:"Rename group",delete:"Delete group",emptyWorkspace:"No terminals in this group",deleteTitle:"Delete Group",deleteMessage:'Delete group "{name}"? Terminals move to Ungrouped.'},terminal:{quotaNoData:"No quota data",quotaUsageTitle:"usage",back:"Tillbaka",menu:"Meny",newTerminal:"Ny terminal",remoteDesktop:"Fj\xe4rrskrivbord",defaultName:"Term"},files:{selectWorkspace:"V\xe4lj arbetsyta",recentWorkspaces:"Senaste arbetsytor",home:"Hem",root:"Rot",drive:"Enhet {letter}",codespaces:"Codespaces",removeRecent:"Ta bort fr\xe5n senaste",removeTitle:"Ta bort arbetsyta",removeMessage:'Ta bort "{name}" fr\xe5n senaste arbetsytor?',setAsWorkspace:"Ange som arbetsyta",openFolder:"\xd6ppna mapp",newFile:"Ny fil",newFolder:"Ny mapp",rename:"Byt namn",delete:"Radera",deleteFile:"Radera fil",deleteFolder:"Radera mapp",deleteFileMessage:'Radera "{name}"?',deleteFolderMessage:'Radera mappen "{name}" och allt dess inneh\xe5ll?',emptyFolder:"Tom mapp",git:"Git",parent:"\xd6verordnad mapp",workspace:"Arbetsyta",failedLoad:"Det gick inte att l\xe4sa in: {error}",failedDelete:"Det gick inte att radera: {error}",failedCreate:"Det gick inte att skapa: {error}",failedRename:"Det gick inte att byta namn: {error}",enterName:"Ange namn",confirmRename:"Byt namn till:",setWorkspace:"Ange arbetsyta",setAsWorkspaceTitle:"Ange som arbetsyta",switchWorkspace:"Byt arbetsyta",searchFiles:"S\xf6k filer",toggleHidden:"V\xe4xla dolda filer",searchPlaceholder:"S\xf6k filer...",searching:"S\xf6ker...",noFilesFound:"Inga filer hittades",noGitRepo:"Inget Git-arkiv",cannotOpenBinary:"Kan inte \xf6ppna bin\xe4rfil",createNew:"Skapa ny",file:"Fil",folder:"Mapp",placeholderFile:"filnamn.js",placeholderFolder:"mappnamn",pickFile:"Choose files",pickFolder:"Choose folder",copyPath:"Kopiera s\xf6kv\xe4g",copyRelPath:"Copy Relative Path",copyName:"Copy Filename",delete:"Radera",rename:"Byt namn",deleteConfirmTitle:"Radera",deleteConfirmMessage:'Radera "{name}"?'},editor:{save:"Spara",saving:"Sparar...",saved:"Sparad",unsaved:"Osparade \xe4ndringar",close:"St\xe4ng",discard:"F\xf6rkasta",discardTitle:"F\xf6rkasta \xe4ndringar",discardMessage:"Du har osparade \xe4ndringar. F\xf6rkasta dem?",unsavedTitle:"Save changes to {name}?",unsavedBody:"Your changes will be lost if you don't save them.",failedLoad:"Det gick inte att l\xe4sa in filen: {error}",failedSave:"Det gick inte att spara: {error}",openFull:"Open in full editor",artifact:"Artifact",readOnly:"Endast l\xe4sning",line:"Rad",column:"Kolumn",gitDiff:"Git Diff",typeText:"Skriv text och infoga...",insert:"Infoga",statusModified:"Modifierad",statusAdded:"Tillagd",statusUntracked:"Osp\xe5rad"},git:{title:"Git",branch:"Gren",changes:"\xc4ndringar",staged:"Stagead",unstaged:"Ostagead",untracked:"Osp\xe5rad",commit:"Commit",commitAndPush:"Commit & Push",commitSuccess:"Commit successful",pushSuccess:"Push successful",stageFailed:"Failed to stage changes",commitFailed:"Commit failed",pushFailed:"Push failed",pullSuccess:"Pull successful",pullFailed:"Pull failed",stageAllConfirmTitle:"Stage All & Commit",stageAllConfirmMessage:"No changes are staged. Stage all changes and commit?",stageAndCommit:"Stage & Commit",gitActions:"Git actions",commitPlaceholder:"Commit message…",stageAllNote:"Stage all \xb7 {count}",upToDate:"Everything up-to-date",commitMessage:"Commit-meddelande",push:"Push",pull:"Pull",fetch:"Fetch",stage:"Stagea",stageAll:"Stagea alla",unstage:"Avstagea",discard:"F\xf6rkasta",discardChanges:"F\xf6rkasta \xe4ndringar",discardMessage:'F\xf6rkasta \xe4ndringar i "{name}"?',noChanges:"Inga \xe4ndringar",diff:"Diff",pushing:"Pushar...",pulling:"Pullar...",committing:"Committar...",failedCommit:"Det gick inte att committa: {error}",failedPush:"Det gick inte att pusha: {error}",failedPull:"Det gick inte att pulla: {error}",status:"Status",diffTab:"Diff",modified:"Modifierad",added:"Tillagd",deleted:"Raderad",untrackedTitle:"Osp\xe5rad",openFile:"\xd6ppna fil",discardChangesTitle:"F\xf6rkasta \xe4ndringar",discardConfirmTitle:"F\xf6rkasta \xe4ndringar",discardConfirmDelete:'\xc4r du s\xe4ker p\xe5 att du vill radera "{name}"? Detta kan inte \xe5ngras.',discardConfirmDiscard:'\xc4r du s\xe4ker p\xe5 att du vill f\xf6rkasta \xe4ndringar i "{name}"? Detta kan inte \xe5ngras.'},remote:{title:"Fj\xe4rrskrivbord",connecting:"Ansluter...",disconnected:"Fr\xe5nkopplad",fullscreen:"Helsk\xe4rm",exitFullscreen:"Avsluta helsk\xe4rm",receivingImage:"Receiving screen…",keyboard:"Tangentbord",mouse:"Mus",quality:"Kvalitet",fps:"FPS",debug:"Fels\xf6kning",help:"Hj\xe4lp",close:"St\xe4ng",sendKey:"Skicka tangent",helpTitle:"Hj\xe4lp f\xf6r fj\xe4rrskrivbord",notAvailable:"Fj\xe4rrskrivbord \xe4r inte tillg\xe4ngligt",customizeKeys:"Anpassa tangenter",back:"Tillbaka",resetZoom:"\xc5terst\xe4ll zoom",refresh:"Uppdatera",rectangleSelection:"Rektangelmarkering",handMode:"Handl\xe4ge",toggleKeyboard:"V\xe4xla inbyggt tangentbord",hideControls:"Hide controls",showControls:"Show controls",textBatchInput:"Textbatchinmatning",extraKeys:"Extra tangenter",customizeRemoteKeys:"Anpassa fj\xe4rrtangenter",exitRemote:"Avsluta fj\xe4rrskrivbord",debugTitle:"Fels\xf6kningsstatistik",minimize:"Minimera",transport:"Transport",latency:"Latens",tilesPerSec:"Tiles/sek",bandwidth:"Bandbredd",clearStats:"Rensa statistik",lockTitle:"Windows \xe4r l\xe5st",lockGrantDesc:'Aktivera "L\xe5s upp PC fj\xe4rrstyrt" i 9remote host p\xe5 denna PC.',lockDesc:"Ange Windows PIN-kod eller l\xf6senord f\xf6r denna dator",lockPlaceholder:"Windows PIN-kod eller l\xf6senord",unlock:"L\xe5s upp",unlocking:"L\xe5ser upp…",unlockFailed:"Uppl\xe5sning misslyckades — kontrollera din PIN-kod/l\xf6senord och f\xf6rs\xf6k igen."},remoteHelp:{modePc:"PC / Mus",modeTrackpad:"Peksk\xe4rm \xb7 Trackpad",modeDirect:"Peksk\xe4rm \xb7 Direkt",mouseTitle:"Mus",keyboardTitle:"Tangentbord",gesturesTrackpadTitle:"Gester (Trackpad ✋)",gesturesDirectTitle:"Gester (Direkt)",toolbarTitle:"Verktygsf\xe4lt",mouseClickKey:"Klicka / Dra",mouseClickDesc:"V\xe4nsterklicka, dra f\xf6r att markera/flytta",mouseRightKey:"H\xf6gerklick",mouseRightDesc:"Snabbmeny p\xe5 fj\xe4rr",mouseWheelKey:"Hjul",mouseWheelDesc:"Rulla fj\xe4rr (Shift + hjul = horisontellt)",mouseDoubleKey:"Dubbelklick",mouseDoubleDesc:"Dubbelklicka p\xe5 fj\xe4rr",keyPhysicalKey:"Fysiska tangenter",keyPhysicalDesc:"Skickas direkt (Tab, F-tangenter, etc. f\xe5ngas)",keyModifierKey:"Ctrl / Alt / Shift / ⌘",keyModifierDesc:"Klistrig modifierare — kombinera med n\xe4sta tangent",trackpadSwipeKey:"1 finger svep",trackpadSwipeDesc:"Flytta virtuell mark\xf6r",trackpadTapKey:"1 finger tryck",trackpadTapDesc:"V\xe4nsterklick vid mark\xf6r",trackpad2TapKey:"2 fingrar tryck",trackpad2TapDesc:"H\xf6gerklick vid mark\xf6r",trackpad2SwipeKey:"2 fingrar svep",trackpad2SwipeDesc:"Rulla vid mark\xf6rens position",trackpadPinchKey:"2 fingrar nyp",trackpadPinchDesc:"Zooma duk",trackpadScrollLockKey:"H\xe5ll + dra",trackpadScrollLockDesc:"H\xe5ll f\xf6r att l\xe5sa scroll, dra i valfri riktning",directTapKey:"1 finger tryck",directTapDesc:"Klicka vid tryckposition",directLongKey:"1 finger l\xe5ngtryck",directLongDesc:"H\xf6gerklick",directDoubleKey:"1 finger dubbeltryck",directDoubleDesc:"Dubbelklick",directScrollKey:"2 fingrar svep",directScrollDesc:"Rulla fj\xe4rr",directPinchKey:"2 fingrar nyp",directPinchDesc:"Zooma duk",directPanKey:"1 finger drag (zoom>1)",directPanDesc:"Panorera duk",toolbarHandDesc:"H\xe5ll v\xe4nsterklick (dragl\xe4ge) — tryck igen f\xf6r att sl\xe4ppa",toolbarMouseDirectDesc:"V\xe4xla till direktl\xe4ge",toolbarMouseTrackpadDesc:"V\xe4xla till Trackpad (virtuell mark\xf6r)",toolbarKeyboardDesc:"Inbyggt tangentbord / textbatchinmatning",toolbarRectDesc:"Rektangelmarkeringsl\xe4ge"},remoteControls:{enterToSend:"Tab / Ctrl+Num f\xf6r att byta flik",typeToSend:"Skriv text f\xf6r att skicka...",send:"Skicka",trackpadMode:"Trackpad-l\xe4ge",directMode:"Direktl\xe4ge",bottomRow:"Nedre rad",extraPanel:"Extra panel",exitConfirmMessage:"\xc4r du s\xe4ker p\xe5 att du vill avsluta den aktuella fj\xe4rrskrivbordssessionen?"},connection:{retrying:"\xc5teransluter...",waitingApproval:"V\xe4ntar p\xe5 godk\xe4nnande",approvalDescription:"9Remote host m\xe5ste godk\xe4nna den h\xe4r enheten innan du kan ansluta.",approvalHint:"Kontrollera terminalen p\xe5 din maskin.",rejectedTitle:"Enhet avvisad",rejectedDescription:"Den h\xe4r enheten godk\xe4ndes inte av 9Remote host.",backToLogin:"Tillbaka till inloggning",failed:"Anslutning misslyckades",failedDescription:"Det gick inte att ansluta efter {n} f\xf6rs\xf6k",attemptOf:"F\xf6rs\xf6k {n} av {total}",exit:"Avsluta",cancel:"Avbryt",retry:"F\xf6rs\xf6k igen nu"},notifications:{claudeCode:"Claude Code",codex:"Codex",geminiCli:"Gemini CLI",openCode:"OpenCode",needsInput:"needs input",badgeTitle:"{blocked} needs input, {done} your turn",replied:"replied",agent:"Agent"},sites:{title:"Webbplatser",localSites:"Lokala webbplatser",selectSitePreview:"V\xe4lj en webbplats att f\xf6rhandsgranska",browserNewTab:"New tab",browserAddressPlaceholder:"localhost:3000 or /path",browserNotConnected:"Connect to your agent first",portPlaceholder:"port",loadingSites:"Laddar webbplatser...",notConnected:"Not connected to the agent",noSitesFound:"Inga webbplatser hittades",startServerHint:"Starta en lokal utvecklingsserver f\xf6r att se den h\xe4r",siteNamePlaceholder:"Webbplatsnamn",saveTitle:"Spara",editNameTitle:"Redigera namn",removeTitle:"Ta bort",removePortTitle:"Ta bort port",removePortMessage:"Ta bort port {port} fr\xe5n sparad lista?",popupBlocked:"Popup blockerad! Till\xe5t popup-f\xf6nster f\xf6r den h\xe4r webbplatsen.",startProxyFailed:"Det gick inte att starta proxy-session f\xf6r {name}",foundCount:"{n} webbplats{suffix} hittades",focusOpenedTab:"Fokusera \xf6ppnad flik",openInNewTab:"\xd6ppna i ny flik",goBack:"G\xe5 tillbaka",goForward:"G\xe5 fram\xe5t",loadingSite:"Laddar...",empty:"Inga aktiva webbplatser",emptyHint:"K\xf6r en lokal server f\xf6r att se den h\xe4r",open:"\xd6ppna",refresh:"Uppdatera"},commandNotes:{title:"Kommandoanteckningar",noSavedCommands:"Inga sparade kommandon",addFirstBelow:"L\xe4gg till ditt f\xf6rsta kommando nedan",clickToCopy:"Klicka f\xf6r att kopiera",copiedBang:"Kopierad!",copy:"Kopiera",edit:"Redigera",delete:"Radera",editCommandPlaceholder:"Redigera kommando...",addCommandPlaceholder:"L\xe4gg till kommando...",update:"Uppdatera",add:"L\xe4gg till",empty:"Inga anteckningar \xe4n",emptyHint:"Spara kommandon f\xf6r snabb \xe5tkomst",add:"L\xe4gg till anteckning",edit:"Redigera anteckning",delete:"Radera anteckning",deleteMessage:"Radera den h\xe4r anteckningen?",name:"Namn",command:"Kommando",save:"Spara",placeholderName:"t.ex. Starta utvecklingsserver",placeholderCommand:"t.ex. npm run dev"},mobileKeyboard:{pasteHere:"Klistra in h\xe4r (Cmd+V)",enterToSend:"Tab / Ctrl+Num f\xf6r att byta flik",typeCommand:"Skriv kommando och skicka...",send:"Skicka",toggleExtraKeys:"V\xe4xla extra tangenter",toggleTextInput:"V\xe4xla textinmatning",customizeTerminalKeys:"Anpassa terminaltangenter",mainBar:"Huvudf\xe4lt",extraPanel:"Extra panel",fileTooLarge:"Filen \xe4r f\xf6r stor (max 5 MB)",readFileFailed:"Det gick inte att l\xe4sa filen",uploadFailed:"Det gick inte att ladda upp filen: {error}"},terminalPane:{scrollToBottom:"Rulla till botten",changedFiles:"Changed files",pasteOrType:"Klistra in eller skriv h\xe4r",paste:"Klistra in"},pwaGuide:{copyYourKey:"Kopiera din nyckel",copyKeyHint:"Tryck p\xe5 nyckeln nedan f\xf6r att kopiera — du beh\xf6ver den f\xf6r att logga in efter installation",tapToCopyApiKey:"Tryck f\xf6r att kopiera API-nyckel",copiedBang:"Kopierad!",copy:"Kopiera",tapShareButton:"Tryck p\xe5 dela-knappen",tapShareHint:"Tryck p\xe5 dela-knappen l\xe4ngst ner i Safari",addToHome:"L\xe4gg till p\xe5 hemsk\xe4rmen",addToHomeHint:'Rulla ner och tryck p\xe5 "L\xe4gg till p\xe5 hemsk\xe4rmen"',openAppPasteKey:"\xd6ppna app & klistra in nyckel",openAppPasteKeyHint:"\xd6ppna den installerade appen och klistra in din nyckel f\xf6r att logga in",openMenu:"\xd6ppna meny",openMenuHint:"Tryck p\xe5 menyknappen (tre prickar) i Chrome",installApp:"Installera app",installAppHint:'Tryck p\xe5 "Installera app" eller "L\xe4gg till p\xe5 hemsk\xe4rmen"',lookInstallIcon:"Leta efter installationsikon",lookInstallIconHint:"Leta efter installationsikonen i adressf\xe4ltet",clickInstallPaste:"Klicka installera & klistra in nyckel",installNow:"Install Now",installNowHint:"Install 9Remote as an app for quick access",installing:"Installing...",clickInstallPasteHint:"Klicka installera, \xf6ppna appen och klistra in din nyckel f\xf6r att logga in",alternativeHint:'Alternativ: \xd6ppna webbl\xe4sarmenyn → "Installera 9Remote" eller "Skapa genv\xe4g"',loadingPlatform:"Laddar plattformsdetektering...",iosPlatform:"iOS (iPhone/iPad)",androidPlatform:"Android",macosPlatform:"macOS",windowsPlatform:"Windows",desktopPlatform:"Skrivbord",alreadyInstalled:"Redan installerad!",alreadyInstalledHint:"Du anv\xe4nder redan 9Remote som en installerad app",installationGuide:"Installationsguide",installationSteps:"Installationssteg:"},community:{title:"Gemenskap",description:"G\xe5 med i 9Remote-gemenskapen"},pwa:{title:"Installera som app",description:"Installera 9Remote p\xe5 din enhet f\xf6r b\xe4sta upplevelse",iosTitle:"iOS Safari",androidTitle:"Android Chrome",desktopTitle:"Skrivbord"},codespace:{title:"Codespace",name:"Namn",status:"Status",running:"K\xf6rs",autoStart:"Starta 9Remote automatiskt",autoStartHint:"Starta 9Remote n\xe4r codespace \xf6ppnas",stop:"Stoppa Codespace",stopHint:"Stoppa f\xf6r att spara anv\xe4ndning",restartHint:"F\xf6r att starta om, g\xe5 till GitHub",unknown:"Ok\xe4nd"}}}}]);
@@ -0,0 +1,86 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3552],{77731:(e,t,r)=>{r.d(t,{$:()=>O,U:()=>j,db:()=>S});var i=r(58609),a=r(84187),n=r(14561),o=r(68567),l="",s="",d="",m=[],c=new Map,h=(0,o.K)(e=>(0,a.jZ)(e,(0,a.D7)()),"sanitizeText"),p=(0,o.K)(e=>{switch(e.type){case"terminal":return{...e,value:h(e.value)};case"nonterminal":return{...e,name:h(e.name)};case"sequence":return{...e,elements:e.elements.map(p)};case"choice":return{...e,alternatives:e.alternatives.map(p)};case"optional":return{...e,element:p(e.element)};case"repetition":return{...e,element:p(e.element),separator:e.separator?p(e.separator):void 0};case"special":return{...e,text:h(e.text)}}},"sanitizeAstNode"),u=(0,o.K)(()=>{l="",s="",d="",m.length=0,c.clear(),(0,a.IU)(),n.R.debug("[Railroad] Database cleared")},"clear"),g=(0,o.K)(e=>{l=h(e),n.R.debug("[Railroad] Title set:",e)},"setTitle"),T=(0,o.K)(()=>l,"getTitle"),f=(0,o.K)(e=>{let t={...e,name:h(e.name),definition:p(e.definition),comment:e.comment?h(e.comment):void 0};n.R.debug("[Railroad] Adding rule:",t.name),c.has(t.name)&&n.R.warn(`[Railroad] Rule '${t.name}' is already defined. Overwriting.`),m.push(t),c.set(t.name,t)},"addRule"),x=(0,o.K)(()=>m,"getRules"),w=(0,o.K)(e=>c.get(e),"getRule"),k=(0,o.K)(e=>{s=h(e).replace(/^\s+/g,""),n.R.debug("[Railroad] Accessibility title set:",e)},"setAccTitle"),C=(0,o.K)(()=>s,"getAccTitle"),$=(0,o.K)(e=>{d=h(e).replace(/\n\s+/g,"\n"),n.R.debug("[Railroad] Accessibility description set:",e)},"setAccDescription"),S={clear:u,setTitle:g,getTitle:T,addRule:f,getRules:x,getRule:w,setAccTitle:k,getAccTitle:C,setAccDescription:$,getAccDescription:(0,o.K)(()=>d,"getAccDescription"),setDiagramTitle:g,getDiagramTitle:T},F={compactMode:!1,padding:10,verticalSeparation:8,horizontalSeparation:10,arcRadius:10,fontSize:14,fontFamily:"monospace",terminalFill:"#FFFFC0",terminalStroke:"#000000",terminalTextColor:"#000000",nonTerminalFill:"#FFFFFF",nonTerminalStroke:"#000000",nonTerminalTextColor:"#000000",lineColor:"#000000",strokeWidth:2,markerFill:"#000000",commentFill:"#E8E8E8",commentStroke:"#888888",commentTextColor:"#666666",specialFill:"#F0E0FF",specialStroke:"#8800CC",ruleNameColor:"#000066",showMarkers:!0,markerRadius:5},y=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$|^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([\d\s%+,./-]+\)$|^[a-z]+$/i,R=/^[\w "',.-]+$/,b=new Set(["compactMode","padding","verticalSeparation","horizontalSeparation","arcRadius","fontSize","fontFamily","terminalFill","terminalStroke","terminalTextColor","nonTerminalFill","nonTerminalStroke","nonTerminalTextColor","lineColor","strokeWidth","markerFill","commentFill","commentStroke","commentTextColor","specialFill","specialStroke","ruleNameColor","showMarkers","markerRadius"]),v=(0,o.K)(e=>!!e&&Object.keys(e).every(e=>"railroad"===e||b.has(e)),"isRailroadStyleOptions"),z=(0,o.K)(e=>e?"railroad"in e&&e.railroad?e.railroad:v(e)?e:{}:{},"extractRailroadOverrides"),K=(0,o.K)(e=>{if(!e||v(e))return{};let{railroad:t,svgId:r,theme:i,look:a,...n}=e;return n},"extractThemeOverrides"),N=(0,o.K)((e,t)=>{if("string"!=typeof e)return t;let r=e.trim();return y.test(r)?r:t},"sanitizeColorValue"),M=(0,o.K)((e,t)=>{if("string"!=typeof e)return t;let r=e.trim();return R.test(r)?r:t},"sanitizeFontFamilyValue"),A=(0,o.K)((e,t)=>{let r="number"==typeof e?e:"string"==typeof e?Number.parseFloat(e):NaN;return Number.isFinite(r)&&r>=0?r:t},"sanitizeNumberValue"),D=(0,o.K)(e=>{let t="number"==typeof e?e:"string"==typeof e?Number.parseFloat(e):NaN;return Number.isFinite(t)&&t>0?t:void 0},"parseThemeFontSize"),E=(0,o.K)(e=>{let t=M(e.fontFamily,F.fontFamily),r=D(e.fontSize)??F.fontSize;return{...F,fontFamily:t,fontSize:r,terminalFill:N(e.secondBkg??e.secondaryColor,F.terminalFill),terminalStroke:N(e.secondaryBorderColor??e.lineColor,F.terminalStroke),terminalTextColor:N(e.secondaryTextColor??e.textColor,F.terminalTextColor),nonTerminalFill:N(e.mainBkg??e.background,F.nonTerminalFill),nonTerminalStroke:N(e.primaryBorderColor??e.lineColor,F.nonTerminalStroke),nonTerminalTextColor:N(e.primaryTextColor??e.textColor,F.nonTerminalTextColor),lineColor:N(e.lineColor,F.lineColor),markerFill:N(e.lineColor,F.markerFill),commentFill:N(e.labelBackground??e.tertiaryColor,F.commentFill),commentStroke:N(e.tertiaryBorderColor??e.lineColor,F.commentStroke),commentTextColor:N(e.tertiaryTextColor??e.textColor,F.commentTextColor),specialFill:N(e.tertiaryColor??e.secondaryColor,F.specialFill),specialStroke:N(e.tertiaryBorderColor??e.secondaryBorderColor,F.specialStroke),ruleNameColor:N(e.titleColor??e.textColor,F.ruleNameColor)}},"buildThemeDefaults"),B=(0,o.K)(e=>{let t=(0,a.zj)(),r=E({...(0,a.P$)(),...t.themeVariables??{},...K(e)}),i={...t.railroad??{},...z(e)};return{compactMode:i.compactMode??r.compactMode,padding:A(i.padding,r.padding),verticalSeparation:A(i.verticalSeparation,r.verticalSeparation),horizontalSeparation:A(i.horizontalSeparation,r.horizontalSeparation),arcRadius:A(i.arcRadius,r.arcRadius),fontSize:A(i.fontSize,r.fontSize),fontFamily:M(i.fontFamily,r.fontFamily),terminalFill:N(i.terminalFill,r.terminalFill),terminalStroke:N(i.terminalStroke,r.terminalStroke),terminalTextColor:N(i.terminalTextColor,r.terminalTextColor),nonTerminalFill:N(i.nonTerminalFill,r.nonTerminalFill),nonTerminalStroke:N(i.nonTerminalStroke,r.nonTerminalStroke),nonTerminalTextColor:N(i.nonTerminalTextColor,r.nonTerminalTextColor),lineColor:N(i.lineColor,r.lineColor),strokeWidth:A(i.strokeWidth,r.strokeWidth),markerFill:N(i.markerFill,r.markerFill),commentFill:N(i.commentFill,r.commentFill),commentStroke:N(i.commentStroke,r.commentStroke),commentTextColor:N(i.commentTextColor,r.commentTextColor),specialFill:N(i.specialFill,r.specialFill),specialStroke:N(i.specialStroke,r.specialStroke),ruleNameColor:N(i.ruleNameColor,r.ruleNameColor),showMarkers:i.showMarkers??r.showMarkers,markerRadius:A(i.markerRadius,r.markerRadius)}},"buildRailroadStyleOptions"),O=(0,o.K)(e=>{let{fontFamily:t,fontSize:r,terminalFill:i,terminalStroke:a,terminalTextColor:n,nonTerminalFill:o,nonTerminalStroke:l,nonTerminalTextColor:s,lineColor:d,strokeWidth:m,markerFill:c,commentFill:h,commentStroke:p,commentTextColor:u,specialFill:g,specialStroke:T,ruleNameColor:f}=B(e);return`
2
+ .railroad-diagram {
3
+ font-family: ${t};
4
+ font-size: ${r}px;
5
+ }
6
+
7
+ .railroad-terminal rect {
8
+ fill: ${i};
9
+ stroke: ${a};
10
+ stroke-width: ${m}px;
11
+ }
12
+
13
+ .railroad-terminal text {
14
+ fill: ${n};
15
+ font-family: ${t};
16
+ font-size: ${r}px;
17
+ text-anchor: middle;
18
+ dominant-baseline: middle;
19
+ }
20
+
21
+ .railroad-nonterminal rect {
22
+ fill: ${o};
23
+ stroke: ${l};
24
+ stroke-width: ${m}px;
25
+ }
26
+
27
+ .railroad-nonterminal text {
28
+ fill: ${s};
29
+ font-family: ${t};
30
+ font-size: ${r}px;
31
+ text-anchor: middle;
32
+ dominant-baseline: middle;
33
+ }
34
+
35
+ .railroad-line {
36
+ stroke: ${d};
37
+ stroke-width: ${m}px;
38
+ fill: none;
39
+ }
40
+
41
+ .railroad-start circle,
42
+ .railroad-end circle {
43
+ fill: ${c};
44
+ }
45
+
46
+ .railroad-comment ellipse {
47
+ fill: ${h};
48
+ stroke: ${p};
49
+ stroke-width: ${m}px;
50
+ }
51
+
52
+ .railroad-comment text {
53
+ fill: ${u};
54
+ font-style: italic;
55
+ font-family: ${t};
56
+ font-size: ${r}px;
57
+ text-anchor: middle;
58
+ dominant-baseline: middle;
59
+ }
60
+
61
+ .railroad-special rect {
62
+ fill: ${g};
63
+ stroke: ${T};
64
+ stroke-width: ${m}px;
65
+ stroke-dasharray: 5,3;
66
+ }
67
+
68
+ .railroad-special text {
69
+ fill: ${s};
70
+ font-family: ${t};
71
+ font-size: ${r}px;
72
+ text-anchor: middle;
73
+ dominant-baseline: middle;
74
+ }
75
+
76
+ .railroad-rule-name {
77
+ font-weight: bold;
78
+ fill: ${f};
79
+ font-family: ${t};
80
+ font-size: ${r}px;
81
+ }
82
+
83
+ .railroad-group {
84
+ /* Grouping container, no specific styles */
85
+ }
86
+ `},"getStyles"),W=class{constructor(){this.d=""}static{(0,o.K)(this,"PathBuilder")}moveTo(e,t){return this.d+=`M ${e} ${t} `,this}lineTo(e,t){return this.d+=`L ${e} ${t} `,this}horizontalTo(e){return this.d+=`H ${e} `,this}verticalTo(e){return this.d+=`V ${e} `,this}arcTo(e,t,r,i,a,n,o){return this.d+=`A ${e} ${t} ${r} ${+!!i} ${+!!a} ${n} ${o} `,this}build(){return this.d.trim()}},q=class{constructor(e,t=B()){this.textCache=new Map,this.svg=e,this.config=t}static{(0,o.K)(this,"RailroadRenderer")}measureText(e){if(this.textCache.has(e))return this.textCache.get(e);let t=this.svg.append("text").attr("font-family",this.config.fontFamily).attr("font-size",this.config.fontSize).text(e),r=t.node().getBBox(),i={width:r.width,height:r.height};return t.remove(),this.textCache.set(e,i),i}renderTerminal(e,t){let r=this.measureText(t),i=r.width+2*this.config.padding,a=r.height+2*this.config.padding,n=e.append("g").attr("class","railroad-terminal");return n.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a).attr("rx",10).attr("ry",10),n.append("text").attr("x",i/2).attr("y",a/2).text(t),{element:n.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderNonTerminal(e,t){let r=this.measureText(t),i=r.width+2*this.config.padding,a=r.height+2*this.config.padding,n=e.append("g").attr("class","railroad-nonterminal");return n.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),n.append("text").attr("x",i/2).attr("y",a/2).text(t),{element:n.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderSequence(e,t){let r=t.map(t=>this.renderExpression(e,t)),i=0,a=0,n=0;for(let e of r)i+=e.dimensions.width,a=Math.max(a,e.dimensions.up),n=Math.max(n,e.dimensions.down);i+=(r.length-1)*this.config.horizontalSeparation;let o=e.append("g").attr("class","railroad-sequence"),l=0;for(let e=0;e<r.length;e++){let t=r[e],i=a-t.dimensions.up;if(o.node().appendChild(t.element).setAttribute("transform",`translate(${l}, ${i})`),e<r.length-1){let e=l+t.dimensions.width,r=e+this.config.horizontalSeparation,i=a;o.append("path").attr("class","railroad-line").attr("d",new W().moveTo(e,i).lineTo(r,i).build())}l+=t.dimensions.width+this.config.horizontalSeparation}return{element:o.node(),dimensions:{width:i,height:a+n,up:a,down:n}}}renderChoice(e,t){let r=t.map(t=>this.renderExpression(e,t)),i=0,a=0;for(let e of r)i=Math.max(i,e.dimensions.width),a+=e.dimensions.height;a+=(r.length-1)*this.config.verticalSeparation;let n=this.config.arcRadius,o=i+4*n,l=e.append("g").attr("class","railroad-choice"),s=0,d=a/2;for(let e of r){let t=s,r=t+e.dimensions.up,a=2*n+(i-e.dimensions.width)/2;l.node().appendChild(e.element).setAttribute("transform",`translate(${a}, ${t})`);let m=new W,c=r>d;r===d?m.moveTo(0,d).lineTo(a,r):m.moveTo(0,d).arcTo(n,n,0,!1,c,n,d+(c?n:-n)).lineTo(n,r-(c?n:-n)).arcTo(n,n,0,!1,!c,2*n,r).lineTo(a,r),l.append("path").attr("class","railroad-line").attr("d",m.build());let h=new W,p=a+e.dimensions.width,u=o-2*n;r===d?h.moveTo(p,r).lineTo(o,d):h.moveTo(p,r).lineTo(u,r).arcTo(n,n,0,!1,!c,o-n,r+(c?-n:n)).lineTo(o-n,d+(c?n:-n)).arcTo(n,n,0,!1,c,o,d),l.append("path").attr("class","railroad-line").attr("d",h.build()),s+=e.dimensions.height+this.config.verticalSeparation}return{element:l.node(),dimensions:{width:o,height:a,up:d,down:a-d}}}renderOptional(e,t){let r=this.renderExpression(e,t),i=this.config.arcRadius,a=2*i,n=r.dimensions.width+4*i,o=r.dimensions.height+a,l=e.append("g").attr("class","railroad-optional"),s=2*i;l.node().appendChild(r.element).setAttribute("transform",`translate(${s}, ${a})`);let d=a+r.dimensions.up,m=new W().moveTo(0,d).lineTo(2*i,d);l.append("path").attr("class","railroad-line").attr("d",m.build());let c=new W().moveTo(s+r.dimensions.width,d).lineTo(n,d);l.append("path").attr("class","railroad-line").attr("d",c.build());let h=new W().moveTo(0,d).arcTo(i,i,0,!1,!1,i,d-i).lineTo(i,i).arcTo(i,i,0,!1,!0,2*i,0).lineTo(n-2*i,0).arcTo(i,i,0,!1,!0,n-i,i).lineTo(n-i,d-i).arcTo(i,i,0,!1,!1,n,d);return l.append("path").attr("class","railroad-line").attr("d",h.build()),{element:l.node(),dimensions:{width:n,height:o,up:d,down:o-d}}}renderRepetition(e,t,r){let i=this.renderExpression(e,t),a=this.config.arcRadius,n=2*a,o=i.dimensions.width+4*a,l=0===r,s=i.dimensions.height+n+(l?n:0),d=e.append("g").attr("class","railroad-repetition"),m=2*a,c=l?n:0;d.node().appendChild(i.element).setAttribute("transform",`translate(${m}, ${c})`);let h=c+i.dimensions.up;d.append("path").attr("class","railroad-line").attr("d",new W().moveTo(0,h).lineTo(2*a,h).build()),d.append("path").attr("class","railroad-line").attr("d",new W().moveTo(m+i.dimensions.width,h).lineTo(o,h).build());let p=c+i.dimensions.height+a,u=new W().moveTo(m+i.dimensions.width,h).arcTo(a,a,0,!1,!0,m+i.dimensions.width+a,h+a).lineTo(m+i.dimensions.width+a,p).arcTo(a,a,0,!1,!0,m+i.dimensions.width,p+a).lineTo(2*a,p+a).arcTo(a,a,0,!1,!0,a,p).lineTo(a,h+a).arcTo(a,a,0,!1,!0,2*a,h);if(d.append("path").attr("class","railroad-line").attr("d",u.build()),l){let e=new W().moveTo(0,h).arcTo(a,a,0,!1,!1,a,h-a).lineTo(a,a).arcTo(a,a,0,!1,!0,2*a,0).lineTo(o-2*a,0).arcTo(a,a,0,!1,!0,o-a,a).lineTo(o-a,h-a).arcTo(a,a,0,!1,!1,o,h);d.append("path").attr("class","railroad-line").attr("d",e.build())}return{element:d.node(),dimensions:{width:o,height:s,up:h,down:s-h}}}renderSpecial(e,t){let r=this.measureText("? "+t+" ?"),i=r.width+2*this.config.padding,a=r.height+2*this.config.padding,n=e.append("g").attr("class","railroad-special");return n.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),n.append("text").attr("x",i/2).attr("y",a/2).text("? "+t+" ?"),{element:n.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderExpression(e,t){switch(t.type){case"terminal":return this.renderTerminal(e,t.value);case"nonterminal":return this.renderNonTerminal(e,t.name);case"sequence":return this.renderSequence(e,t.elements);case"choice":return this.renderChoice(e,t.alternatives);case"optional":return this.renderOptional(e,t.element);case"repetition":return this.renderRepetition(e,t.element,t.min);case"special":return this.renderSpecial(e,t.text);default:throw Error(`Unknown node type: ${t.type}`)}}renderRule(e,t){let r=this.svg.append("g").attr("class","railroad-rule").attr("transform",`translate(0, ${t})`),i=e.name+" =",a=this.measureText(i).width+20,n=a+20,o=r.append("g"),l=this.renderExpression(o,e.definition),s=Math.max(20,l.dimensions.up),d=s-l.dimensions.up;return o.attr("transform",`translate(${n}, ${d})`),r.append("g").attr("class","railroad-rule-name-group").append("text").attr("class","railroad-rule-name").attr("x",0).attr("y",s).text(i),r.append("g").attr("class","railroad-start").append("circle").attr("cx",a).attr("cy",s).attr("r",this.config.markerRadius),r.append("g").attr("class","railroad-end").append("circle").attr("cx",n+l.dimensions.width+10).attr("cy",s).attr("r",this.config.markerRadius),r.append("path").attr("class","railroad-line").attr("d",new W().moveTo(a+this.config.markerRadius,s).lineTo(n,s).build()),r.append("path").attr("class","railroad-line").attr("d",new W().moveTo(n+l.dimensions.width,s).lineTo(n+l.dimensions.width+10-this.config.markerRadius,s).build()),{height:Math.max(40,d+l.dimensions.height+2*this.config.padding),width:n+l.dimensions.width+10+this.config.markerRadius}}renderDiagram(e){let t=this.config.padding,r=0;for(let i of e){let e=this.renderRule(i,t);t+=e.height+this.config.verticalSeparation,r=Math.max(r,e.width)}return{width:r+2*this.config.padding,height:t+this.config.padding}}},V=(0,o.K)((e,t,r)=>{(0,a.a$)(e,t.height,t.width,r),e.attr("viewBox",`0 0 ${t.width} ${t.height}`)},"configureRailroadSvgSize"),j={draw:(0,o.K)((e,t,r)=>{n.R.debug("[Railroad] Rendering diagram\n"+e);try{let e=(0,i.D)(t);e.attr("class","railroad-diagram");let r=(0,a.zj)().railroad,o=r?.useMaxWidth??!0,l=S.getRules();if(n.R.debug(`[Railroad] Rendering ${l.length} rules`),0===l.length){n.R.warn("[Railroad] No rules to render"),V(e,{height:100,width:200},o);return}let s=new q(e,B()).renderDiagram(l);V(e,s,o),n.R.debug("[Railroad] Render complete")}catch(e){throw n.R.error("[Railroad] Render error:",e),e}},"draw")}},96910:(e,t,r)=>{function i(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}r.d(t,{S:()=>i}),(0,r(68567).K)(i,"populateCommonDb")}}]);