purplemux 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +18 -18
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/routes-manifest.json +7 -7
  6. package/.next/standalone/.next/server/chunks/[root-of-the-server]__045vzzi._.js +1 -1
  7. package/.next/standalone/.next/server/chunks/ssr/_06yggfn._.js +1 -1
  8. package/.next/standalone/.next/server/chunks/ssr/_0al4.z9._.js +1 -1
  9. package/.next/standalone/.next/server/chunks/ssr/_0b~zgl1._.js +1 -1
  10. package/.next/standalone/.next/server/chunks/ssr/_0iy5a-w._.js +1 -1
  11. package/.next/standalone/.next/server/chunks/ssr/_0nkeoiw._.js +1 -1
  12. package/.next/standalone/.next/server/chunks/ssr/_0qbbxeq._.js +1 -1
  13. package/.next/standalone/.next/server/chunks/ssr/messages_de_session_json_[json]_cjs_0b-1vpl._.js +1 -1
  14. package/.next/standalone/.next/server/chunks/ssr/messages_en_session_json_[json]_cjs_0jaymfk._.js +1 -1
  15. package/.next/standalone/.next/server/chunks/ssr/messages_es_session_json_[json]_cjs_0jy1144._.js +1 -1
  16. package/.next/standalone/.next/server/chunks/ssr/messages_fr_session_json_[json]_cjs_0rz0g.c._.js +1 -1
  17. package/.next/standalone/.next/server/chunks/ssr/messages_ja_session_json_[json]_cjs_0cos-uy._.js +1 -1
  18. package/.next/standalone/.next/server/chunks/ssr/messages_ko_session_json_[json]_cjs_0x4saic._.js +1 -1
  19. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_session_json_[json]_cjs_0-x8ftl._.js +1 -1
  20. package/.next/standalone/.next/server/chunks/ssr/messages_ru_session_json_[json]_cjs_0~2-kve._.js +1 -1
  21. package/.next/standalone/.next/server/chunks/ssr/messages_tr_session_json_[json]_cjs_0zsvt_4._.js +1 -1
  22. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_session_json_[json]_cjs_134xza~._.js +1 -1
  23. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_session_json_[json]_cjs_0mv_~-8._.js +1 -1
  24. package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
  25. package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
  26. package/.next/standalone/.next/server/middleware-build-manifest.js +18 -18
  27. package/.next/standalone/.next/server/pages/_app/build-manifest.json +2 -2
  28. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  29. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  30. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  31. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  32. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  33. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  34. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  35. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  36. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  37. package/.next/standalone/.next/server/pages/index/build-manifest.json +4 -4
  38. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  39. package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
  40. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  41. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  42. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  43. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  44. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  45. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  46. package/.next/standalone/.next/server/pages/reports/build-manifest.json +3 -3
  47. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  48. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  49. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  50. package/.next/standalone/.next/server/pages/stats/build-manifest.json +3 -3
  51. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  52. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  53. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  54. package/.next/standalone/.next/server/pages/webview/build-manifest.json +3 -3
  55. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  56. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  57. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  58. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  59. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  60. package/.next/standalone/.next/static/chunks/{17deooyefr~9o.js → 04.g49tb8txni.js} +1 -1
  61. package/.next/standalone/.next/static/chunks/05_e09pgcymkh.js +1 -0
  62. package/.next/standalone/.next/static/chunks/{04bbxzycy0y90.js → 05i5jeaz~7tg6.js} +1 -1
  63. package/.next/standalone/.next/static/chunks/{0w9~wt6~_cxhf.js → 05o-f2v7xe3_~.js} +1 -1
  64. package/.next/standalone/.next/static/chunks/{010m3dplwy4n6.js → 08ip~fc41h84_.js} +3 -3
  65. package/.next/standalone/.next/static/chunks/{06ypydsl._u~2.js → 0aizxgkga9-f..js} +2 -2
  66. package/.next/standalone/.next/static/chunks/{0lz-p_awksh5e.js → 0biwudo-tl.dw.js} +1 -1
  67. package/.next/standalone/.next/static/chunks/{095e2xf3z6x3g.js → 0dl23f6c62aoa.js} +4 -4
  68. package/.next/standalone/.next/static/chunks/0fwnzw~qq_abm.js +1 -0
  69. package/.next/standalone/.next/static/chunks/{00ziyk306y55s.js → 0g2qc5wv7c9.a.js} +1 -1
  70. package/.next/standalone/.next/static/chunks/{0y3fmkya..f_6.js → 0ilhql60o6txw.js} +3 -3
  71. package/.next/standalone/.next/static/chunks/{0o6esya.vhm1..js → 0plurywt71.qj.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/{17et6y09q052u.js → 0qc36tzow-sbz.js} +1 -1
  73. package/.next/standalone/.next/static/chunks/{0pw-284q1gfk3.js → 0szz-2.f~11pz.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/{0u-1zto-umjh9.js → 0t2val7bf4~s7.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{08xz_z9u4ex9t.js → 0tgkw7pjpp21_.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{0~ei.a78nuwqe.js → 0tq53zgriddtp.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{04uzwc8c9u49~.js → 0u9dn7tzog.gz.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/{0f81tdf_8utww.js → 0wdd71tayg8y1.js} +1 -1
  79. package/.next/standalone/.next/static/chunks/{0m_amua611xl0.js → 0~ku-hjx17-lg.js} +2 -2
  80. package/.next/standalone/.next/static/chunks/{0h~_fdj60t_~l.js → 0~vm4d30sl9ii.js} +1 -1
  81. package/.next/standalone/.next/static/chunks/{09tinkgkd8br_.js → 10wa7lt~l.b6d.js} +1 -1
  82. package/.next/standalone/.next/static/chunks/{0t0-4sn-nqqld.js → 128d.rbx4e4rt.js} +1 -1
  83. package/.next/standalone/.next/static/chunks/{11ess6mn2988z.js → 14bh~6-ggh.16.js} +3 -3
  84. package/.next/standalone/.next/static/chunks/{0if5fmp94~nc2.js → 15hinpm-o8x5a.js} +2 -2
  85. package/.next/standalone/.next/static/chunks/{07v3udp2qhc02.js → 17jdo1q-xb24-.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/{turbopack-0qmx66h203l93.js → turbopack-06kgnfn.-xny..js} +1 -1
  87. package/.next/standalone/.next/static/chunks/{turbopack-0.28.d-q12n3p.js → turbopack-08ayk-1mt1q-w.js} +1 -1
  88. package/.next/standalone/.next/static/chunks/{turbopack-0-itu0o9y_vq8.js → turbopack-0950wwl2vzfu8.js} +1 -1
  89. package/.next/standalone/.next/static/chunks/{turbopack-0h0~tr4tgq3aa.js → turbopack-0yi-pm9y8p4fu.js} +1 -1
  90. package/.next/standalone/.next/static/chunks/{turbopack-0g80nrinbfgtk.js → turbopack-104j33xbofdmk.js} +1 -1
  91. package/.next/standalone/.next/static/{WXAyTQ0PHZnxXXCwEZpit → gVdGG0_U0ysjrgmO5yh0M}/_buildManifest.js +4 -4
  92. package/.next/standalone/messages/de/session.json +3 -1
  93. package/.next/standalone/messages/en/session.json +3 -1
  94. package/.next/standalone/messages/es/session.json +3 -1
  95. package/.next/standalone/messages/fr/session.json +3 -1
  96. package/.next/standalone/messages/ja/session.json +3 -1
  97. package/.next/standalone/messages/ko/session.json +3 -1
  98. package/.next/standalone/messages/pt-BR/session.json +3 -1
  99. package/.next/standalone/messages/ru/session.json +3 -1
  100. package/.next/standalone/messages/tr/session.json +3 -1
  101. package/.next/standalone/messages/zh-CN/session.json +3 -1
  102. package/.next/standalone/messages/zh-TW/session.json +3 -1
  103. package/.next/standalone/package.json +1 -1
  104. package/.next/standalone/server.js +1 -1
  105. package/dist/server.js +1 -1
  106. package/package.json +1 -1
  107. package/.next/standalone/.next/static/chunks/05oh32ya2uzfq.js +0 -1
  108. package/.next/standalone/.next/static/chunks/071neb1eikeoh.js +0 -1
  109. /package/.next/standalone/.next/static/{WXAyTQ0PHZnxXXCwEZpit → gVdGG0_U0ysjrgmO5yh0M}/_clientMiddlewareManifest.js +0 -0
  110. /package/.next/standalone/.next/static/{WXAyTQ0PHZnxXXCwEZpit → gVdGG0_U0ysjrgmO5yh0M}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  self.__BUILD_MANIFEST = {
2
2
  "/": [
3
- "static/chunks/095e2xf3z6x3g.js"
3
+ "static/chunks/0dl23f6c62aoa.js"
4
4
  ],
5
5
  "/_error": [
6
6
  "static/chunks/0ff6a07hvp4pu.js"
@@ -9,19 +9,19 @@ self.__BUILD_MANIFEST = {
9
9
  "static/chunks/0iw7xjsfo1v-u.js"
10
10
  ],
11
11
  "/reports": [
12
- "static/chunks/010m3dplwy4n6.js"
12
+ "static/chunks/08ip~fc41h84_.js"
13
13
  ],
14
14
  "/reset": [
15
15
  "static/chunks/0w52yh2srwcs0.js"
16
16
  ],
17
17
  "/stats": [
18
- "static/chunks/0y3fmkya..f_6.js"
18
+ "static/chunks/0ilhql60o6txw.js"
19
19
  ],
20
20
  "/tools-required": [
21
21
  "static/chunks/02mfn213kze9c.js"
22
22
  ],
23
23
  "/webview": [
24
- "static/chunks/11ess6mn2988z.js"
24
+ "static/chunks/14bh~6-ggh.16.js"
25
25
  ],
26
26
  "__rewrites": {
27
27
  "afterFiles": [],
@@ -32,6 +32,8 @@
32
32
  "path": "Pfad",
33
33
  "process": "Prozess",
34
34
  "size": "Größe",
35
- "session": "Sitzung"
35
+ "session": "Sitzung",
36
+ "contextHintAmber": "Kontext ist über die Hälfte voll",
37
+ "contextHintRed": "Grenze rückt näher — /compact oder neue Sitzung erwägen"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "Path",
33
33
  "process": "Process",
34
34
  "size": "Size",
35
- "session": "Session"
35
+ "session": "Session",
36
+ "contextHintAmber": "Context is over half full",
37
+ "contextHintRed": "Nearing the limit — consider /compact or starting a new session"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "Ruta",
33
33
  "process": "Proceso",
34
34
  "size": "Tamaño",
35
- "session": "Sesión"
35
+ "session": "Sesión",
36
+ "contextHintAmber": "El contexto supera la mitad",
37
+ "contextHintRed": "Cerca del límite — considera /compact o iniciar una nueva sesión"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "Chemin",
33
33
  "process": "Processus",
34
34
  "size": "Taille",
35
- "session": "Session"
35
+ "session": "Session",
36
+ "contextHintAmber": "Le contexte dépasse la moitié",
37
+ "contextHintRed": "Proche de la limite — envisagez /compact ou une nouvelle session"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "パス",
33
33
  "process": "プロセス",
34
34
  "size": "サイズ",
35
- "session": "セッション"
35
+ "session": "セッション",
36
+ "contextHintAmber": "コンテキストが半分を超えました",
37
+ "contextHintRed": "上限に近づいています — /compact または新しいセッションを検討してください"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "경로",
33
33
  "process": "프로세스",
34
34
  "size": "크기",
35
- "session": "세션"
35
+ "session": "세션",
36
+ "contextHintAmber": "컨텍스트가 절반을 넘었습니다",
37
+ "contextHintRed": "한도에 가까워졌습니다 — 압축하거나 새 세션을 시작하세요"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "Caminho",
33
33
  "process": "Processo",
34
34
  "size": "Tamanho",
35
- "session": "Sessao"
35
+ "session": "Sessao",
36
+ "contextHintAmber": "Contexto passou da metade",
37
+ "contextHintRed": "Perto do limite — considere /compact ou uma nova sessao"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "Путь",
33
33
  "process": "Процесс",
34
34
  "size": "Размер",
35
- "session": "Сессия"
35
+ "session": "Сессия",
36
+ "contextHintAmber": "Контекст заполнен более чем наполовину",
37
+ "contextHintRed": "Близко к пределу — используйте /compact или начните новую сессию"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "Yol",
33
33
  "process": "İşlem",
34
34
  "size": "Boyut",
35
- "session": "Oturum"
35
+ "session": "Oturum",
36
+ "contextHintAmber": "Bağlam yarıyı aştı",
37
+ "contextHintRed": "Sınıra yaklaşıyor — /compact veya yeni bir oturum düşünün"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "路径",
33
33
  "process": "进程",
34
34
  "size": "大小",
35
- "session": "会话"
35
+ "session": "会话",
36
+ "contextHintAmber": "上下文已超过一半",
37
+ "contextHintRed": "接近上限 — 考虑 /compact 或开启新会话"
36
38
  }
37
39
  }
@@ -32,6 +32,8 @@
32
32
  "path": "路徑",
33
33
  "process": "處理程序",
34
34
  "size": "大小",
35
- "session": "工作階段"
35
+ "session": "工作階段",
36
+ "contextHintAmber": "上下文已超過一半",
37
+ "contextHintRed": "接近上限 — 建議 /compact 或開啟新工作階段"
36
38
  }
37
39
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "purplemux",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Manage multiple Claude Code sessions from your browser",
5
5
  "license": "MIT",
6
6
  "author": "subicura",
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{"NEXT_PUBLIC_COMMIT_HASH":"121ea7e"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":{"locales":["en","ko","ja","zh-CN","es","de","fr","pt-BR","zh-TW","ru","tr"],"defaultLocale":"en","localeDetection":false},"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":true,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/purplemux/purplemux","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["react-icons","lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":true,"configFileName":"next.config.ts","outputFileTracingExcludes":{"*":["./release/**","./CLAUDE.md","./AGENTS.md","./README*.md","./docs/**","./.specs/**","./.claude/**","./tests/**"]},"turbopack":{"root":"/home/runner/work/purplemux/purplemux"},"distDirRoot":".next"}
12
+ const nextConfig = {"env":{"NEXT_PUBLIC_COMMIT_HASH":"7e837ca"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":{"locales":["en","ko","ja","zh-CN","es","de","fr","pt-BR","zh-TW","ru","tr"],"defaultLocale":"en","localeDetection":false},"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":true,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/purplemux/purplemux","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["react-icons","lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":true,"configFileName":"next.config.ts","outputFileTracingExcludes":{"*":["./release/**","./CLAUDE.md","./AGENTS.md","./README*.md","./docs/**","./.specs/**","./.claude/**","./tests/**"]},"turbopack":{"root":"/home/runner/work/purplemux/purplemux"},"distDirRoot":".next"}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
package/dist/server.js CHANGED
@@ -32067,7 +32067,7 @@ init_logger();
32067
32067
  // package.json
32068
32068
  var package_default = {
32069
32069
  name: "purplemux",
32070
- version: "0.2.0",
32070
+ version: "0.2.1",
32071
32071
  description: "Manage multiple Claude Code sessions from your browser",
32072
32072
  license: "MIT",
32073
32073
  author: "subicura",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "purplemux",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Manage multiple Claude Code sessions from your browser",
5
5
  "license": "MIT",
6
6
  "author": "subicura",
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,51372,e=>{"use strict";let t,n;var a=e.i(391398),r=e.i(191788),l=e.i(352819),i=e.i(432237),o=e.i(398957),s=e.i(972733),u=e.i(199648),d=e.i(679935),c=e.i(939310),f=e.i(335288),p=e.i(806185),m=e.i(490034),h=e.i(407506);let g=e=>e?.activePaneId?(0,p.collectPanes)(e.root).find(t=>t.id===e.activePaneId)??null:null;var x=e.i(453783),b=e.i(982960),v=e.i(730943);function y({groupSize:e,panelElement:t,styleProp:n}){let a,[r,l]=function(e){switch(typeof e){case"number":return[e,"px"];case"string":{let t=parseFloat(e);return e.endsWith("%")?[t,"%"]:e.endsWith("px")?[t,"px"]:e.endsWith("rem")?[t,"rem"]:e.endsWith("em")?[t,"em"]:e.endsWith("vh")?[t,"vh"]:e.endsWith("vw")?[t,"vw"]:[t,"%"]}}}(n);switch(l){case"%":a=r/100*e;break;case"px":a=r;break;case"rem":a=r*parseFloat(getComputedStyle(t.ownerDocument.body).fontSize);break;case"em":a=r*parseFloat(getComputedStyle(t).fontSize);break;case"vh":a=r/100*window.innerHeight;break;case"vw":a=r/100*window.innerWidth}return a}function w(e){return parseFloat(e.toFixed(3))}function S({group:e}){let{orientation:t,panels:n}=e;return n.reduce((e,n)=>e+="horizontal"===t?n.element.offsetWidth:n.element.offsetHeight,0)}function C(e){let{panels:t}=e,n=S({group:e});return 0===n?t.map(e=>({groupResizeBehavior:e.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:!0===e.panelConstraints.collapsible,defaultSize:void 0,disabled:e.panelConstraints.disabled,minSize:0,maxSize:100,panelId:e.id})):t.map(e=>{let t,{element:a,panelConstraints:r}=e,l=0;void 0!==r.collapsedSize&&(l=w(y({groupSize:n,panelElement:a,styleProp:r.collapsedSize})/n*100)),void 0!==r.defaultSize&&(t=w(y({groupSize:n,panelElement:a,styleProp:r.defaultSize})/n*100));let i=0;void 0!==r.minSize&&(i=w(y({groupSize:n,panelElement:a,styleProp:r.minSize})/n*100));let o=100;return void 0!==r.maxSize&&(o=w(y({groupSize:n,panelElement:a,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:l,collapsible:!0===r.collapsible,defaultSize:t,disabled:r.disabled,minSize:i,maxSize:o,panelId:e.id}})}function j(e,t="Assertion error"){if(!e)throw Error(t)}function k(e,t){return Array.from(t).sort("horizontal"===e?N:z)}function N(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return 0!==n?n:e.element.offsetWidth-t.element.offsetWidth}function z(e,t){let n=e.element.offsetTop-t.element.offsetTop;return 0!==n?n:e.element.offsetHeight-t.element.offsetHeight}function T(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function P(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function R(e){let{element:n,orientation:a,panels:r,separators:l}=e,i=k(a,Array.from(n.children).filter(T).map(e=>({element:e}))).map(({element:e})=>e),o=[],s=!1,u=!1,d=-1,c=-1,f=0,p,m=[];{let e=-1;for(let t of i)t.hasAttribute("data-panel")&&(e++,t.hasAttribute("data-disabled")||(f++,-1===d&&(d=e),c=e))}if(f>1){let n=-1;for(let f of i)if(f.hasAttribute("data-panel")){n++;let l=r.find(e=>e.element===f);if(l){if(p){let r,i=p.element.getBoundingClientRect(),h=f.getBoundingClientRect();if(u){let e="horizontal"===a?new DOMRect(i.right,i.top,0,i.height):new DOMRect(i.left,i.bottom,i.width,0),t="horizontal"===a?new DOMRect(h.left,h.top,0,h.height):new DOMRect(h.left,h.top,h.width,0);switch(m.length){case 0:r=[e,t];break;case 1:{let n=m[0],l=function({orientation:e,rects:t,targetRect:n}){let a={x:n.x+n.width/2,y:n.y+n.height/2},r,l=Number.MAX_VALUE;for(let n of t){let{x:t,y:i}=P(a,n),o="horizontal"===e?t:i;o<l&&(l=o,r=n)}return j(r,"No rect found"),r}({orientation:a,rects:[i,h],targetRect:n.element.getBoundingClientRect()});r=[n,l===i?t:e];break}default:r=m}}else r=m.length?m:["horizontal"===a?new DOMRect(i.right,h.top,h.left-i.right,h.height):new DOMRect(h.left,i.bottom,h.width,h.top-i.bottom)];for(let a of r){let r="width"in a?a:a.element.getBoundingClientRect(),i=(void 0===t&&(t="function"==typeof matchMedia&&!!matchMedia("(pointer:coarse)").matches),t)?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(r.width<i){let e=i-r.width;r=new DOMRect(r.x-e/2,r.y,r.width+e,r.height)}if(r.height<i){let e=i-r.height;r=new DOMRect(r.x,r.y-e/2,r.width,r.height+e)}let u=n<=d||n>c;s||u||o.push({group:e,groupSize:S({group:e}),panels:[p,l],separator:"width"in a?void 0:a,rect:r}),s=!1}}u=!1,p=l,m=[]}}else if(f.hasAttribute("data-separator")){null!==f.ariaDisabled&&(s=!0);let e=l.find(e=>e.element===f);e?m.push(e):(p=void 0,m=[])}else u=!0}return o}class L{#e={};addListener(e,t){let n=this.#e[e];return void 0===n?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(void 0!==n)if(1===n.length)n[0].call(null,t);else{let e=!1,a=null,r=Array.from(n);for(let n=0;n<r.length;n++){let l=r[n];try{l.call(null,t)}catch(t){null===a&&(e=!0,a=t)}}if(e)throw a}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(void 0!==n){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}}let E=new Map,I=new L;function D(e,t){for(let[t]of E)if(t.id===e)return t}function M(e,t){for(let[t,n]of E)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function A(e,t){return I.addListener("groupChange",n=>{n.group.id===e&&t(n)})}function $(e,t){let n=E.get(e);(E=new Map(E)).set(e,t),I.emit("groupChange",{group:e,prev:n,next:t})}let F=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function O(e){let t=e.length;for(;t--;){let n=e[t];if(j(n,"Missing node"),function(e){let t,n=getComputedStyle(e);return!!("fixed"===n.position||"auto"!==n.zIndex&&("static"!==n.position||"flex"===(t=getComputedStyle(G(e)??e).display)||"inline-flex"===t)||1>+n.opacity||"transform"in n&&"none"!==n.transform||"webkitTransform"in n&&"none"!==n.webkitTransform||"mixBlendMode"in n&&"normal"!==n.mixBlendMode||"filter"in n&&"none"!==n.filter||"webkitFilter"in n&&"none"!==n.webkitFilter||"isolation"in n&&"isolate"===n.isolation||F.test(n.willChange)||"touch"===n.webkitOverflowScrolling)}(n))return n}return null}function B(e){return e&&Number(getComputedStyle(e).zIndex)||0}function W(e){let t=[];for(;e;)t.push(e),e=G(e);return t}function G(e){let{parentNode:t}=e;return null!==t&&"object"==typeof t&&"nodeType"in t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?t.host:t}function _(e,t){let n=[];return t.forEach((t,a)=>{if(a.disabled)return;let r=R(a),l=function(e,t,n){let a,r={x:1/0,y:1/0};for(let l of t){let t=P(n,l.rect);switch(e){case"horizontal":t.x<=r.x&&(a=l,r=t);break;case"vertical":t.y<=r.y&&(a=l,r=t)}}return a?{distance:r,hitRegion:a}:void 0}(a.orientation,r,{x:e.clientX,y:e.clientY});l&&l.distance.x<=0&&l.distance.y<=0&&function({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!T(n)||n.contains(e)||e.contains(n))return!0;if(function(e,t){let n;if(e===t)throw Error("Cannot compare node with itself");let a={a:W(e),b:W(t)};for(;a.a.at(-1)===a.b.at(-1);)n=a.a.pop(),a.b.pop();j(n,"Stacking order can only be calculated for elements with a common ancestor");let r={a:B(O(a.a)),b:B(O(a.b))};if(r.a===r.b){let e=n.childNodes,t={a:a.a.at(-1),b:a.b.at(-1)},r=e.length;for(;r--;){let n=e[r];if(n===t.a)return 1;if(n===t.b)return -1}}return Math.sign(r.a-r.b)}(n,e)>0){let r=n;for(;r;){var a;if(r.contains(e))break;if(a=r.getBoundingClientRect(),a.x<t.x+t.width&&a.x+a.width>t.x&&a.y<t.y+t.height&&a.y+a.height>t.y)return!1;r=r.parentElement}}return!0}({groupElement:a.element,hitRegion:l.hitRegion.rect,pointerEventTarget:e.target})&&n.push(l.hitRegion)}),n}function U(e,t,n=0){return Math.abs(w(e)-w(t))<=n}function q(e,t){return U(e,t)?0:e>t?1:-1}function V({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:a}){let{collapsedSize:r=0,collapsible:l,disabled:i,maxSize:o=100,minSize:s=0}=t;return i&&!e?n:(0>q(a,s)&&(a=l&&0>q(a,(r+s)/2)?r:s),w(a=Math.min(o,a)))}function H({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:a,prevLayout:r,trigger:l}){if(U(e,0))return t;let i="imperative-api"===l,o=Object.values(t),s=Object.values(r),u=[...o],[d,c]=a;j(null!=d,"Invalid first pivot index"),j(null!=c,"Invalid second pivot index");let f=0;if("keyboard"===l){{let t=e<0?c:d,a=n[t];j(a,`Panel constraints not found for index ${t}`);let{collapsedSize:r=0,collapsible:l,minSize:i=0}=a;if(l){let n=o[t];if(j(null!=n,`Previous layout not found for panel index ${t}`),U(n,r)){let t=i-n;q(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?d:c,a=n[t];j(a,`No panel constraints found for index ${t}`);let{collapsedSize:r=0,collapsible:l,minSize:i=0}=a;if(l){let n=o[t];if(j(null!=n,`Previous layout not found for panel index ${t}`),U(n,i)){let t=n-r;q(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}}else{let t=e<0?c:d,a=n[t];j(a,`Panel constraints not found for index ${t}`);let r=o[t],{collapsible:l,collapsedSize:i,minSize:s}=a;if(l&&0>q(r,s))if(e>0){let t=s-i;0>q(r+e,s)&&(e=0>=q(e,t/2)?0:t)}else{let t=s-i;0>q(r-e,s)&&(e=q(100+e,100-t/2)>0?0:-t)}}{let t=e<0?1:-1,a=e<0?c:d,r=0;for(;;){let e=o[a];if(j(null!=e,`Previous layout not found for panel index ${a}`),r+=V({overrideDisabledPanels:i,panelConstraints:n[a],prevSize:e,size:100})-e,(a+=t)<0||a>=n.length)break}let l=Math.min(Math.abs(e),Math.abs(r));e=e<0?0-l:l}{let t=e<0?d:c;for(;t>=0&&t<n.length;){let a=Math.abs(e)-Math.abs(f),r=o[t];j(null!=r,`Previous layout not found for panel index ${t}`);let l=r-a,s=V({overrideDisabledPanels:i,panelConstraints:n[t],prevSize:r,size:l});if(!U(r,s)&&(f+=r-s,u[t]=s,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}(s,u))return r;{let t=e<0?c:d,a=o[t];j(null!=a,`Previous layout not found for panel index ${t}`);let r=a+f,l=V({overrideDisabledPanels:i,panelConstraints:n[t],prevSize:a,size:r});if(u[t]=l,!U(l,r)){let t=r-l,a=e<0?c:d;for(;a>=0&&a<n.length;){let r=u[a];j(null!=r,`Previous layout not found for panel index ${a}`);let l=r+t,o=V({overrideDisabledPanels:i,panelConstraints:n[a],prevSize:r,size:l});if(U(r,o)||(t-=o-r,u[a]=o),U(t,0))break;e>0?a--:a++}}}if(!U(Object.values(u).reduce((e,t)=>t+e,0),100,.1))return r;let p=Object.keys(r);return u.reduce((e,t,n)=>(e[p[n]]=t,e),{})}function X(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(void 0===t[n]||0!==q(e[n],t[n]))return!1;return!0}function K({layout:e,panelConstraints:t}){let n=Object.values(e),a=[...n],r=a.reduce((e,t)=>e+t,0);if(a.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${a.map(e=>`${e}%`).join(", ")}`);if(!U(r,100)&&a.length>0)for(let e=0;e<t.length;e++){let t=a[e];j(null!=t,`No layout data found for index ${e}`);let n=100/r*t;a[e]=n}let l=0;for(let e=0;e<t.length;e++){let r=n[e];j(null!=r,`No layout data found for index ${e}`);let i=a[e];j(null!=i,`No layout data found for index ${e}`);let o=V({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:r,size:i});i!=o&&(l+=i-o,a[e]=o)}if(!U(l,0))for(let e=0;e<t.length;e++){let n=a[e];j(null!=n,`No layout data found for index ${e}`);let r=n+l,i=V({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:r});if(n!==i&&(l-=i-n,a[e]=i,U(l,0)))break}let i=Object.keys(e);return a.reduce((e,t,n)=>(e[i[n]]=t,e),{})}function Y({groupId:e,panelId:t}){let n=()=>{for(let[t,{defaultLayoutDeferred:n,derivedPanelConstraints:a,layout:r,groupSize:l,separatorToPanels:i}]of E)if(t.id===e)return{defaultLayoutDeferred:n,derivedPanelConstraints:a,group:t,groupSize:l,layout:r,separatorToPanels:i};throw Error(`Group ${e} not found`)},a=()=>{let e=n().derivedPanelConstraints.find(e=>e.panelId===t);if(void 0!==e)return e;throw Error(`Panel constraints not found for Panel ${t}`)},r=()=>{let e=n().group.panels.find(e=>e.id===t);if(void 0!==e)return e;throw Error(`Layout not found for Panel ${t}`)},l=()=>{let e=n().layout[t];if(void 0!==e)return e;throw Error(`Layout not found for Panel ${t}`)},i=e=>{let a=l();if(e===a)return;let{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:o,groupSize:s,layout:u,separatorToPanels:d}=n(),c=o.panels.findIndex(e=>e.id===t),f=c===o.panels.length-1,p=K({layout:H({delta:f?a-e:e-a,initialLayout:u,panelConstraints:i,pivotIndices:f?[c-1,c]:[c,c+1],prevLayout:u,trigger:"imperative-api"}),panelConstraints:i});X(u,p)||$(o,{defaultLayoutDeferred:r,derivedPanelConstraints:i,groupSize:s,layout:p,separatorToPanels:d})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=a(),{mutableValues:n}=r(),o=l();e&&o!==t&&(n.expandToSize=o,i(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=a(),{mutableValues:o}=r(),s=l();if(e&&s===t){let e=o.expandToSize??n;0===e&&(e=1),i(e)}},getSize:()=>{let{group:e}=n(),t=l(),{element:a}=r();return{asPercentage:t,inPixels:"horizontal"===e.orientation?a.offsetWidth:a.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=a(),n=l();return e&&U(t,n)},resize:e=>{let{group:t}=n(),{element:a}=r(),l=S({group:t});i(w(y({groupSize:l,panelElement:a,styleProp:e})/l*100))}}}function J(e){e.defaultPrevented||_(e,E).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.panels.find(e=>void 0!==e.panelConstraints.defaultSize);if(n){let a=n.panelConstraints.defaultSize,r=Y({groupId:t.group.id,panelId:n.id});r&&void 0!==a&&(r.resize(a),e.preventDefault())}}})}function Q(e){for(let[t]of E)if(t.separators.some(t=>t.element===e))return t;throw Error("Could not find parent Group for separator element")}function Z({groupId:e}){let t=()=>{for(let[t,n]of E)if(t.id===e)return{group:t,...n};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedPanelConstraints:a,group:r,groupSize:l,layout:i,separatorToPanels:o}=t(),s=K({layout:e,panelConstraints:a});return n?i:(X(i,s)||$(r,{defaultLayoutDeferred:n,derivedPanelConstraints:a,groupSize:l,layout:s,separatorToPanels:o}),s)}}}function ee(e,t){let n=Q(e),a=M(n.id,!0),r=n.separators.find(t=>t.element===e);j(r,"Matching separator not found");let l=a.separatorToPanels.get(r);j(l,"Matching panels not found");let i=l.map(e=>n.panels.indexOf(e)),o=Z({groupId:n.id}).getLayout(),s=K({layout:H({delta:t,initialLayout:o,panelConstraints:a.derivedPanelConstraints,pivotIndices:i,prevLayout:o,trigger:"keyboard"}),panelConstraints:a.derivedPanelConstraints});X(o,s)||$(n,{defaultLayoutDeferred:a.defaultLayoutDeferred,derivedPanelConstraints:a.derivedPanelConstraints,groupSize:a.groupSize,layout:s,separatorToPanels:a.separatorToPanels})}function et(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Q(t);if(!n.disabled)switch(e.key){case"ArrowDown":e.preventDefault(),"vertical"===n.orientation&&ee(t,5);break;case"ArrowLeft":e.preventDefault(),"horizontal"===n.orientation&&ee(t,-5);break;case"ArrowRight":e.preventDefault(),"horizontal"===n.orientation&&ee(t,5);break;case"ArrowUp":e.preventDefault(),"vertical"===n.orientation&&ee(t,-5);break;case"End":e.preventDefault(),ee(t,100);break;case"Enter":{e.preventDefault();let n=Q(t),{derivedPanelConstraints:a,layout:r,separatorToPanels:l}=M(n.id,!0),i=n.separators.find(e=>e.element===t);j(i,"Matching separator not found");let o=l.get(i);j(o,"Matching panels not found");let s=o[0],u=a.find(e=>e.panelId===s.id);if(j(u,"Panel metadata not found"),u.collapsible){let e=r[s.id];ee(t,(u.collapsedSize===e?n.mutableState.expandedPanelSizes[s.id]??u.minSize:u.collapsedSize)-e)}break}case"F6":{e.preventDefault();let n=Q(t).separators.map(e=>e.element),a=Array.from(n).findIndex(t=>t===e.currentTarget);j(null!==a,"Index not found");let r=e.shiftKey?a>0?a-1:n.length-1:a+1<n.length?a+1:0;n[r].focus({preventScroll:!0});break}case"Home":e.preventDefault(),ee(t,-100)}}let en={cursorFlags:0,state:"inactive"},ea=new L;function er(e){let t=en;en=e,ea.emit("change",{prev:t,next:e})}function el(e){if(e.defaultPrevented||"mouse"===e.pointerType&&e.button>0)return;let t=E,n=_(e,t),a=new Map,r=!1;n.forEach(e=>{e.separator&&(r||(r=!0,e.separator.element.focus({preventScroll:!0})));let n=t.get(e.group);n&&a.set(e.group,n.layout)}),er({cursorFlags:0,hitRegions:n,initialLayoutMap:a,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:"active"}),n.length&&e.preventDefault()}let ei=e=>e,eo=()=>{};function es(){return void 0===n&&(n=!1,"u">typeof window&&(window.navigator.userAgent.includes("Chrome")||window.navigator.userAgent.includes("Firefox"))&&(n=!0)),n}let eu=new WeakMap;function ed(e){if(null===e.defaultView||void 0===e.defaultView)return;let{prevStyle:t,styleSheet:n}=eu.get(e)??{};void 0===n&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let a=en;switch(a.state){case"active":case"hover":{let e=function({cursorFlags:e,groups:t,state:n}){let a=0,r=0;switch(n){case"active":case"hover":t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case"horizontal":a++;break;case"vertical":r++}})}if(0!==a||0!==r){if("active"===n&&e&&es()){let t=(4&e)!=0,n=(8&e)!=0;if((1&e)!=0)return t?"se-resize":n?"ne-resize":"e-resize";if((2&e)!=0)return t?"sw-resize":n?"nw-resize":"w-resize";if(t)return"s-resize";if(n)return"n-resize"}return es()?a>0&&r>0?"move":a>0?"ew-resize":"ns-resize":a>0&&r>0?"grab":a>0?"col-resize":"row-resize"}}({cursorFlags:a.cursorFlags,groups:a.hitRegions.map(e=>e.group),state:a.state}),r=`*, *:hover {cursor: ${e} !important; }`;if(t===r)return;t=r,e?0===n.cssRules.length?n.insertRule(r):n.replaceSync(r):1===n.cssRules.length&&n.deleteRule(0);break}case"inactive":t=void 0,1===n.cssRules.length&&n.deleteRule(0)}eu.set(e,{prevStyle:t,styleSheet:n})}function ec({document:e,event:t,hitRegions:n,initialLayoutMap:a,mountedGroups:r,pointerDownAtPoint:l,prevCursorFlags:i}){var o;let s,u,d=0;n.forEach(e=>{let{group:n,groupSize:i}=e,{orientation:o,panels:s}=n,{disableCursor:u}=n.mutableState,c=0;c=l?"horizontal"===o?(t.clientX-l.x)/i*100:(t.clientY-l.y)/i*100:"horizontal"===o?t.clientX<0?-100:100:t.clientY<0?-100:100;let f=a.get(n),p=r.get(n);if(!f||!p)return;let{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:x,separatorToPanels:b}=p;if(h&&x&&b){let t=H({delta:c,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>s.indexOf(e)),prevLayout:x,trigger:"mouse-or-touch"});if(X(t,x)){if(0!==c&&!u)switch(o){case"horizontal":d|=c<0?1:2;break;case"vertical":d|=c<0?4:8}}else $(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:b})}});let c=0;0===t.movementX?c|=3&i:c|=3&d,0===t.movementY?c|=12&i:c|=12&d,o=c,s=en,(u={...en}).cursorFlags=o,en=u,ea.emit("change",{prev:s,next:u}),ed(e)}function ef(e){let t=E,n=en;"active"===n.state&&ec({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}function ep(e){if(e.defaultPrevented)return;let t=en,n=E;if("active"===t.state){if(0===e.buttons){er({cursorFlags:0,state:"inactive"}),t.hitRegions.forEach(e=>{let t=M(e.group.id,!0);$(e.group,t)});return}for(let n of t.hitRegions)if(n.separator){let{element:t}=n.separator;t.hasPointerCapture?.(e.pointerId)||t.setPointerCapture?.(e.pointerId)}ec({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags})}else{let a=_(e,n);0===a.length?"inactive"!==t.state&&er({cursorFlags:0,state:"inactive"}):er({cursorFlags:0,hitRegions:a,state:"hover"}),ed(e.currentTarget)}}function em(e){e.relatedTarget instanceof HTMLIFrameElement&&"hover"===en.state&&er({cursorFlags:0,state:"inactive"})}function eh(e){if(e.defaultPrevented||"mouse"===e.pointerType&&e.button>0)return;let t=en;"active"===t.state&&(er({cursorFlags:0,state:"inactive"}),t.hitRegions.length>0&&(ed(e.currentTarget),t.hitRegions.forEach(e=>{let t=M(e.group.id,!0);$(e.group,t)}),e.preventDefault()))}function eg(e){let t=0,n=0,a={};for(let r of e)if(void 0!==r.defaultSize){t++;let e=w(r.defaultSize);n+=e,a[r.panelId]=e}else a[r.panelId]=void 0;let r=e.length-t;if(0!==r){let t=w((100-n)/r);for(let n of e)void 0===n.defaultSize&&(a[n.panelId]=t)}return a}let ex=new Map;function eb(e){let t=(0,r.useId)();return`${e??t}`}let ev="u">typeof window?r.useLayoutEffect:r.useEffect;function ey(e){let t=(0,r.useRef)(e);return ev(()=>{t.current=e},[e]),(0,r.useCallback)((...e)=>t.current?.(...e),[t])}function ew(...e){return ey(t=>{e.forEach(e=>{if(e)switch(typeof e){case"function":e(t);break;case"object":e.current=t}})})}function eS(e){let t=(0,r.useRef)({...e});return ev(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}let eC=(0,r.createContext)(null);function ej({children:e,className:t,defaultLayout:n,disableCursor:l,disabled:i,elementRef:o,groupRef:s,id:u,onLayoutChange:d,onLayoutChanged:c,orientation:f="horizontal",resizeTargetMinimumSize:p={coarse:20,fine:10},style:m,...h}){let g,x=(0,r.useRef)({onLayoutChange:{},onLayoutChanged:{}}),b=ey(e=>{X(x.current.onLayoutChange,e)||(x.current.onLayoutChange=e,d?.(e))}),v=ey(e=>{X(x.current.onLayoutChanged,e)||(x.current.onLayoutChanged=e,c?.(e))}),y=eb(u),N=(0,r.useRef)(null),[z,T]=function(){let[e,t]=(0,r.useState)({});return[e,(0,r.useCallback)(()=>t({}),[])]}(),P=(0,r.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:p,separators:[]}),L=ew(N,o);g=(0,r.useRef)({getLayout:()=>({}),setLayout:ei}),(0,r.useImperativeHandle)(s,()=>g.current,[]),ev(()=>{Object.assign(g.current,Z({groupId:y}))});let I=ey((e,t)=>{let a=en,r=D(e),l=M(e);if(l){let e=!1;return"active"===a.state&&(e=a.hitRegions.some(e=>e.group===r)),{flexGrow:l.layout[t]??1,pointerEvents:e?"none":void 0}}if(n?.[t])return{flexGrow:n?.[t]}}),F=eS({defaultLayout:n,disableCursor:l}),O=(0,r.useMemo)(()=>({get disableCursor(){return!!F.disableCursor},getPanelStyles:I,id:y,orientation:f,registerPanel:e=>{let t=P.current;return t.panels=k(f,[...t.panels,e]),T(),()=>{t.panels=t.panels.filter(t=>t!==e),T()}},registerSeparator:e=>{let t=P.current;return t.separators=k(f,[...t.separators,e]),T(),()=>{t.separators=t.separators.filter(t=>t!==e),T()}},updatePanelProps:(e,{disabled:t})=>{let n=P.current.panels.find(t=>t.id===e);n&&(n.panelConstraints.disabled=t);let a=D(y),r=M(y);a&&r&&$(a,{...r,derivedPanelConstraints:C(a)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let a=P.current.separators.find(t=>t.id===e);a&&(a.disabled=t,a.disableDoubleClick=n)}}),[I,y,T,f,F]),B=(0,r.useRef)(null);return ev(()=>{let e,t,n,a,r,l,o,s,u,d,c,p,m,h=N.current;if(null===h)return;let g=P.current;if(void 0!==F.defaultLayout&&Object.keys(F.defaultLayout).length===g.panels.length)for(let t of(e={},g.panels)){let n=F.defaultLayout[t.id];void 0!==n&&(e[t.id]=n)}let x={disabled:!!i,element:h,id:y,mutableState:{defaultLayout:e,disableCursor:!!F.disableCursor,expandedPanelSizes:P.current.lastExpandedPanelSizes,layouts:P.current.layouts},orientation:f,panels:g.panels,resizeTargetMinimumSize:g.resizeTargetMinimumSize,separators:g.separators};B.current=x;let k=(t=!0,j(x.element.ownerDocument.defaultView,"Cannot register an unmounted Group"),n=x.element.ownerDocument.defaultView.ResizeObserver,a=new Set,r=new Set,(l=new n(e=>{for(let n of e){let{borderBoxSize:e,target:a}=n;if(a===x.element){if(t){let e=S({group:x});if(0===e)return;let t=M(x.id);if(!t)return;let n=C(x),a=t.defaultLayoutDeferred?eg(n):t.layout,r=K({layout:function({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:a}){if(n<=0||t<=0||n===t)return a;let r=0,l=0,i=!1,o=new Map,s=[];for(let u of e.panels){let e=a[u.id]??0;if("preserve-pixel-size"===u.panelConstraints.groupResizeBehavior){i=!0;let a=w(e/100*n/t*100);o.set(u.id,a),r+=a}else s.push(u.id),l+=e}if(!i||0===s.length)return a;let u=100-r,d={...a};if(o.forEach((e,t)=>{d[t]=e}),l>0)for(let e of s){let t=a[e]??0;d[e]=w(t/l*u)}else{let e=w(u/s.length);for(let t of s)d[t]=e}return d}({group:x,nextGroupSize:e,prevGroupSize:t.groupSize,prevLayout:a}),panelConstraints:n});if(!t.defaultLayoutDeferred&&X(t.layout,r)&&function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}(t.derivedPanelConstraints,n)&&t.groupSize===e)return;$(x,{defaultLayoutDeferred:!1,derivedPanelConstraints:n,groupSize:e,layout:r,separatorToPanels:t.separatorToPanels})}}else!function(e,t,n){if(!n[0])return;let a=e.panels.find(e=>e.element===t);if(!a||!a.onResize)return;let r=S({group:e}),l="horizontal"===e.orientation?a.element.offsetWidth:a.element.offsetHeight,i=a.mutableValues.prevSize,o={asPercentage:w(l/r*100),inPixels:l};a.mutableValues.prevSize=o,a.onResize(o,a.id,i)}(x,a,e)}})).observe(x.element),x.panels.forEach(e=>{j(!a.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),a.add(e.id),e.onResize&&l.observe(e.element)}),o=S({group:x}),s=C(x),u=x.panels.map(({id:e})=>e).join(","),(d=x.mutableState.defaultLayout)&&(function(e,t){let n=e.map(e=>e.id),a=Object.keys(t);if(n.length!==a.length)return!1;for(let e of n)if(!a.includes(e))return!1;return!0}(x.panels,d)||(d=void 0)),c=K({layout:x.mutableState.layouts[u]??d??eg(s),panelConstraints:s}),p=x.element.ownerDocument,ex.set(p,(ex.get(p)??0)+1),m=new Map,R(x).forEach(e=>{e.separator&&m.set(e.separator,e.panels)}),$(x,{defaultLayoutDeferred:0===o,derivedPanelConstraints:s,groupSize:o,layout:c,separatorToPanels:m}),x.separators.forEach(e=>{j(!r.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.element.addEventListener("keydown",et)}),1===ex.get(p)&&(p.addEventListener("dblclick",J,!0),p.addEventListener("pointerdown",el,!0),p.addEventListener("pointerleave",ef),p.addEventListener("pointermove",ep),p.addEventListener("pointerout",em),p.addEventListener("pointerup",eh,!0)),function(){t=!1,ex.set(p,Math.max(0,(ex.get(p)??0)-1)),(E=new Map(E)).delete(x),x.separators.forEach(e=>{e.element.removeEventListener("keydown",et)}),ex.get(p)||(p.removeEventListener("dblclick",J,!0),p.removeEventListener("pointerdown",el,!0),p.removeEventListener("pointerleave",ef),p.removeEventListener("pointermove",ep),p.removeEventListener("pointerout",em),p.removeEventListener("pointerup",eh,!0)),l.disconnect()}),{defaultLayoutDeferred:z,derivedPanelConstraints:T,layout:L}=M(x.id,!0);!z&&T.length>0&&(b(L),v(L));let I=A(y,e=>{let{defaultLayoutDeferred:t,derivedPanelConstraints:n,layout:a}=e.next;if(t||0===n.length)return;let r=x.panels.map(({id:e})=>e).join(",");x.mutableState.layouts[r]=a,n.forEach(t=>{if(t.collapsible){let{layout:n}=e.prev??{};if(n){let e=U(t.collapsedSize,a[t.panelId]),r=U(t.collapsedSize,n[t.panelId]);e&&!r&&(x.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let l="active"!==en.state;b(a),l&&v(a)});return()=>{B.current=null,k(),I()}},[i,y,v,b,f,z,F]),(0,r.useEffect)(()=>{let e=B.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!l)}),(0,a.jsx)(eC.Provider,{value:O,children:(0,a.jsx)("div",{...h,className:t,"data-group":!0,"data-testid":y,id:y,ref:L,style:{height:"100%",width:"100%",overflow:"hidden",...m,display:"flex",flexDirection:"horizontal"===f?"row":"column",flexWrap:"nowrap",touchAction:"horizontal"===f?"pan-y":"pan-x"},children:e})})}function ek(){let e=(0,r.useContext)(eC);return j(e,"Group Context not found; did you render a Panel or Separator outside of a Group?"),e}function eN({children:e,className:t,collapsedSize:n="0%",collapsible:l=!1,defaultSize:i,disabled:o,elementRef:s,groupResizeBehavior:u="preserve-relative-size",id:d,maxSize:c="100%",minSize:f="0%",onResize:p,panelRef:m,style:h,...g}){let x,b=!!d,v=eb(d),y=eS({disabled:o}),w=(0,r.useRef)(null),S=ew(w,s),{getPanelStyles:C,id:j,orientation:k,registerPanel:N,updatePanelProps:z}=ek(),T=null!==p,P=ey((e,t,n)=>{p?.(e,d,n)});ev(()=>{let e=w.current;if(null!==e)return N({element:e,id:v,idIsStable:b,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:T?P:void 0,panelConstraints:{groupResizeBehavior:u,collapsedSize:n,collapsible:l,defaultSize:i,disabled:y.disabled,maxSize:c,minSize:f}})},[u,n,l,i,T,v,b,c,f,P,N,y]),(0,r.useEffect)(()=>{z(v,{disabled:o})},[o,v,z]),function(e,t){let{id:n}=ek(),a=(0,r.useRef)({collapse:eo,expand:eo,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:eo});(0,r.useImperativeHandle)(t,()=>a.current,[]),ev(()=>{Object.assign(a.current,Y({groupId:n,panelId:e}))})}(v,m);let R=()=>{let e=C(j,v);if(e)return JSON.stringify(e)},L=(0,r.useSyncExternalStore)(e=>A(j,e),R,R);return x=L?JSON.parse(L):i?{flexGrow:void 0,flexShrink:void 0,flexBasis:i}:{flexGrow:1},(0,a.jsx)("div",{...g,"data-disabled":o||void 0,"data-panel":!0,"data-testid":v,id:v,ref:S,style:{...ez,display:"flex",flexBasis:0,flexShrink:1,overflow:"visible",...x},children:(0,a.jsx)("div",{className:t,style:{maxHeight:"100%",maxWidth:"100%",flexGrow:1,overflow:"auto",...h,touchAction:"horizontal"===k?"pan-y":"pan-x"},children:e})})}ej.displayName="Group",eN.displayName="Panel";let ez={minHeight:0,maxHeight:"100%",height:"auto",minWidth:0,maxWidth:"100%",width:"auto",border:"none",borderWidth:0,padding:0,margin:0};function eT({children:e,className:t,disabled:n,disableDoubleClick:l,elementRef:i,id:o,style:s,...u}){let d,c,f=eb(o),p=eS({disabled:n,disableDoubleClick:l}),[m,h]=(0,r.useState)({}),[g,x]=(0,r.useState)("inactive"),[b,v]=(0,r.useState)(!1),y=(0,r.useRef)(null),w=ew(y,i),{disableCursor:S,id:C,orientation:j,registerSeparator:k,updateSeparatorProps:N}=ek();return ev(()=>{let e=y.current;if(null!==e){var t;let n={disabled:p.disabled,disableDoubleClick:p.disableDoubleClick,element:e,id:f},a=k(n),r=(t=e=>{x("inactive"!==e.next.state&&e.next.hitRegions.some(e=>e.separator===n)?e.next.state:"inactive")},ea.addListener("change",t)),l=A(C,e=>{let{derivedPanelConstraints:t,layout:a,separatorToPanels:r}=e.next,l=r.get(n);if(l){let e=l[0],n=l.indexOf(e);h(function({layout:e,panelConstraints:t,panelId:n,panelIndex:a}){let r,l,i=e[n],o=t.find(e=>e.panelId===n);if(o){let s=o.maxSize,u=o.collapsible?o.collapsedSize:o.minSize,d=[a,a+1];l=K({layout:H({delta:u-i,initialLayout:e,panelConstraints:t,pivotIndices:d,prevLayout:e}),panelConstraints:t})[n],r=K({layout:H({delta:s-i,initialLayout:e,panelConstraints:t,pivotIndices:d,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:r,valueMin:l,valueNow:i}}({layout:a,panelConstraints:t,panelId:e.id,panelIndex:n}))}});return()=>{r(),l(),a()}}},[C,f,k,p]),(0,r.useEffect)(()=>{N(f,{disabled:n,disableDoubleClick:l})},[n,l,f,N]),n&&!S&&(d="not-allowed"),c=n?"disabled":"active"===g?"active":b?"focus":g,(0,a.jsx)("div",{...u,"aria-controls":m.valueControls,"aria-disabled":n||void 0,"aria-orientation":"horizontal"===j?"vertical":"horizontal","aria-valuemax":m.valueMax,"aria-valuemin":m.valueMin,"aria-valuenow":m.valueNow,children:e,className:t,"data-separator":c,"data-testid":f,id:f,onBlur:()=>v(!1),onFocus:()=>v(!0),ref:w,role:"separator",style:{flexBasis:"auto",cursor:d,...s,flexGrow:0,flexShrink:0,touchAction:"none"},tabIndex:n?void 0:0})}eT.displayName="Separator";var eP=e.i(918324),eR=e.i(369547);let eL=(0,eR.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var eE=e.i(462376),eI=e.i(353533),eD=e.i(244046),eM=e.i(355327),eA=e.i(31050),e$=e.i(117653),eF=e.i(756494),eO=e.i(231382),eB=e.i(418760),eW=e.i(377181),eG=e.i(399267),e_=e.i(441693),eU=e.i(17122),eq=e.i(273062),eV=e.i(87093),eH=e.i(706140),eX=e.i(815435),eK=e.i(967086),eY=e.i(541301),eJ=e.i(767708),eQ=e.i(650001);let eZ=({entries:e,sessionName:t,sessionId:n,jsonlPath:l,sessionSummary:i,initMeta:o,sessionStats:s})=>{let{meta:u,isExpanded:d,toggleExpanded:c,collapse:f}=(0,eX.default)(e,i,o,s),p=(0,eQ.default)(l,d),{branch:m,isLoading:h}=(0,eK.default)(t),{status:g}=(0,eY.default)(t,d),x=(0,eJ.default)(t,d),b=(0,r.useRef)(null),[,v]=(0,r.useState)(0);return(0,r.useEffect)(()=>{let e=setInterval(()=>v(e=>e+1),6e4);return()=>clearInterval(e)},[]),(0,r.useEffect)(()=>{if(!d)return;let e=e=>{b.current&&!b.current.contains(e.target)&&f()},t=e=>{"Escape"===e.key&&f()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[d,f]),(0,a.jsxs)("div",{ref:b,className:"relative shrink-0 border-b",children:[(0,a.jsxs)("div",{className:"flex cursor-pointer items-center justify-between px-4 py-1.5 hover:bg-muted/30",role:"button",tabIndex:0,onClick:c,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),c())},children:[(0,a.jsx)(eH.MetaCompact,{title:u.title,totalCost:u.totalCost,branch:m}),(0,a.jsx)(eP.ChevronDown,{size:14,className:(0,eI.cn)("shrink-0 text-muted-foreground transition-transform duration-150",d&&"rotate-180")})]}),(0,a.jsx)("div",{className:(0,eI.cn)("absolute inset-x-0 top-full z-10 origin-top border-b bg-background shadow-sm transition-all duration-150 ease-out",d?"scale-y-100 opacity-100":"pointer-events-none scale-y-95 opacity-0"),children:(0,a.jsx)("div",{className:"px-4 py-3",children:(0,a.jsx)(eH.MetaDetail,{title:u.title,sessionId:n,createdAt:u.createdAt,updatedAt:u.updatedAt,fileSize:u.fileSize,userCount:p?.userCount??u.userCount,assistantCount:p?.assistantCount??u.assistantCount,toolCount:p?.toolCount??null,toolBreakdown:p?.toolBreakdown??null,inputTokens:u.inputTokens,outputTokens:u.outputTokens,totalCost:u.totalCost,currentContextTokens:u.currentContextTokens,contextWindowSize:u.contextWindowSize,usedPercentage:u.usedPercentage,model:u.model,branch:m,isBranchLoading:h,gitStatus:g,tmuxInfo:x})})})]})},e0=({tabId:e,sessionName:t,claudeSessionId:n,cwd:i,className:o,onClose:s,onNewSession:c,scrollToBottomRef:f,addPendingMessageRef:p,removePendingMessageRef:m})=>{let h=(0,l.useTranslations)("terminal"),[g,x]=(0,r.useState)(null),b=(0,eG.default)(t=>t.tabs[e]?.claudeProcess??null),v=(0,eG.default)(t=>t.tabs[e]?.claudeInstalled??!0),y=(0,eG.default)(t=>t.tabs[e]?.cliState??"inactive"),w=(0,eG.default)(t=>t.tabs[e]?.compactingSince??null),S=(0,eG.default)(t=>(0,eG.selectSessionView)(t.tabs,e)),C=(0,r.useCallback)(()=>{x(null)},[]),j=(0,r.useCallback)(e=>{x(null),d.toast.warning(h("resumeBlocked"),{description:e.processName?h("resumeBlockedProcess",{name:e.processName}):void 0})},[h]),k=(0,r.useCallback)(()=>{x(null),d.toast.error(h("resumeFailed"))},[h]),{entries:N,tasks:z,sessionId:T,jsonlPath:P,sessionSummary:R,initMeta:L,sessionStats:E,claudeProcess:I,wsStatus:D,isLoading:M,error:A,loadMore:$,hasMore:F,retrySession:O,sendResume:B,addPendingUserMessage:W,removePendingUserMessage:G}=(0,eO.default)({sessionName:t,claudeSessionId:n,enabled:!!t,resumeCallbacks:{onResumeStarted:C,onResumeBlocked:j,onResumeError:k},onSync:t=>{let n=Date.now();null!==t.claudeProcess&&eG.default.getState().setClaudeProcess(e,t.claudeProcess,n),t.claudeInstalled||eG.default.getState().setClaudeInstalled(e,!1),eG.default.getState().setTimelineLoading(e,t.isLoading)},getCliState:()=>eG.default.getState().tabs[e]?.cliState}),{sessions:_,hasMore:U,isLoading:q,isLoadingMore:V,error:H,refetch:X,loadMore:K}=(0,eB.default)({tmuxSession:t,enabled:!!t&&!0!==b,cwd:i});(0,r.useEffect)(()=>(p&&(p.current=W),m&&(m.current=G),()=>{p&&(p.current=void 0),m&&(m.current=void 0)}),[p,m,W,G]);let Y=(0,r.useRef)(b);(0,r.useEffect)(()=>{let e=Y.current;Y.current=b,!0!==e&&!0===b&&!0!==I&&O()},[b,I,O]),(0,r.useEffect)(()=>{if("unknown"!==y)return;let t=new AbortController;return fetch("/api/tmux/recover-unknown",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tabId:e}),signal:t.signal}).catch(()=>{}),()=>t.abort()},[e,y]);let J=(0,eW.default)("check"===S,t),Q=(0,r.useCallback)(e=>{g||(x(e),B(e,t))},[g,B,t]);return v?null===b&&"check"!==S?(0,a.jsx)("div",{className:(0,eI.cn)("flex h-full w-full flex-col items-center justify-center animate-delayed-fade-in",o),children:(0,a.jsx)(u.default,{className:"h-4 w-4 text-muted-foreground"})}):"check"===S?(0,a.jsxs)("div",{className:(0,eI.cn)("flex h-full w-full flex-col items-center justify-center animate-delayed-fade-in",o),children:[(0,a.jsx)(u.default,{className:"h-4 w-4 text-muted-foreground"}),(0,a.jsx)("span",{className:"mt-2 text-sm text-muted-foreground",children:n||T?h("resumingSession"):h("creatingConversation")}),J&&(J.isBypassPrompt&&J.options.length>0?(0,a.jsx)(eq.default,{sessionName:t,options:J.options,fallback:(0,a.jsx)("button",{className:"text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground",onClick:s,children:h("checkTerminal")})}):(0,a.jsx)("button",{className:"mt-3 text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground",onClick:s,children:h("checkTerminal")}))]}):"session-list"===S?q&&0===_.length?(0,a.jsx)("div",{className:(0,eI.cn)("flex h-full w-full flex-col items-center justify-center animate-delayed-fade-in",o),children:(0,a.jsx)(u.default,{className:"h-4 w-4 text-muted-foreground"})}):0!==_.length||H?(0,a.jsx)("div",{className:(0,eI.cn)("h-full w-full",o),children:(0,a.jsx)(e_.default,{sessions:_,isLoading:q,isLoadingMore:V,hasMore:U,error:H,resumingSessionId:g,onSelectSession:Q,onRefresh:X,onLoadMore:K,onNewSession:c})}):(0,a.jsx)("div",{className:(0,eI.cn)("h-full w-full",o),children:(0,a.jsx)(eU.default,{onClose:s,onNewSession:c})}):(0,a.jsxs)("div",{className:(0,eI.cn)("flex min-h-0 w-full flex-1 flex-col",o),children:[(0,a.jsx)(eZ,{entries:N,sessionName:t,sessionId:T,jsonlPath:P,sessionSummary:R,initMeta:L,sessionStats:E}),(0,a.jsx)("div",{className:"min-h-0 flex-1",children:(0,a.jsx)(eV.default,{entries:N,tasks:z,sessionId:T,sessionName:t,tabId:e,initMeta:L,sessionStats:E,cliState:y,compactingSince:w,wsStatus:D,isLoading:M,error:A,onRetry:O,onLoadMore:$,hasMore:F,scrollToBottomRef:f})})]}):(0,a.jsxs)("div",{className:(0,eI.cn)("flex h-full w-full flex-col items-center justify-center gap-3 text-muted-foreground",o),children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:h("installClaude")}),(0,a.jsx)("span",{className:"text-xs",children:h("installClaudeHint")})]})};var e1=e.i(148141),e3=e.i(624306),e5=e.i(391046),e2=e.i(40830),e4=e.i(236495),e6=e.i(125687);let e7=({cwd:e,lastCommand:t,onRestartWithCommand:n,onRestartNew:r})=>{let i=(0,l.useTranslations)("terminal");return(0,a.jsxs)("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3",children:[(0,a.jsx)(e6.WifiOff,{className:"h-5 w-5 text-muted-foreground"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:i("disconnectedSessionNotFound")}),(0,a.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[e&&(0,a.jsx)("span",{className:"max-w-72 truncate text-xs text-muted-foreground/60",children:e.replace(/^\/Users\/[^/]+/,"~")}),t&&(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsx)("code",{className:"max-w-64 truncate rounded bg-muted px-2 py-1 text-xs",children:t}),(0,a.jsx)(c.Button,{variant:"outline",size:"sm",onClick:()=>n(t),children:i("restartWithCommand")})]}),t&&(0,a.jsxs)("div",{className:"flex w-40 items-center gap-2 text-muted-foreground/40",children:[(0,a.jsx)("div",{className:"h-px flex-1 bg-current"}),(0,a.jsx)("span",{className:"text-[11px]",children:i("or")}),(0,a.jsx)("div",{className:"h-px flex-1 bg-current"})]}),(0,a.jsx)(c.Button,{variant:"outline",size:"sm",onClick:r,children:i("restartNewTerminal")})]})]})};var e8=e.i(868462);let e9=({onSwitch:e,onDismiss:t})=>{let n=(0,l.useTranslations)("terminal"),r=(0,l.useTranslations)("common");return(0,a.jsxs)("div",{className:"absolute right-3 bottom-3 z-20 flex items-center gap-2 rounded-lg border border-border bg-card px-3 py-2 shadow-lg animate-[fadeIn_200ms_ease-out]",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:n("switchToClaudeMode")}),(0,a.jsx)(c.Button,{variant:"default",size:"sm",className:"h-6 px-2 text-[11px]",onClick:e,children:n("switchMode")}),(0,a.jsx)("button",{className:"flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground",onClick:t,"aria-label":r("close"),children:(0,a.jsx)(e8.X,{className:"h-3.5 w-3.5"})})]})},te=({hint:e,onSubmit:t,onDismiss:n})=>{let i=(0,l.useTranslations)("terminal"),o=(0,l.useTranslations)("common"),s=(0,r.useRef)(null);return(0,r.useEffect)(()=>{s.current?.focus()},[]),(0,a.jsxs)("div",{className:"absolute bottom-3 left-3 right-3 z-30 rounded-lg border border-border bg-card shadow-lg animate-[fadeIn_150ms_ease-out]",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 pt-2.5",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:i("dragDropNotSupported")}),(0,a.jsx)("button",{className:"ml-auto flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:text-foreground",onClick:n,"aria-label":o("close"),children:(0,a.jsx)(e8.X,{className:"h-3.5 w-3.5"})})]}),(0,a.jsx)("div",{className:"px-3 pt-1 pb-2.5",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded border border-border bg-background px-2 py-1.5",children:[(0,a.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:e}),(0,a.jsx)("input",{ref:s,className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground/40",placeholder:i("fullPathPlaceholder"),onKeyDown:e=>{"Enter"===e.key?t(e.currentTarget.value):"Escape"===e.key&&n()}})]})})]})};var tt=e.i(639530),tn=e.i(29803),ta=e.i(483241);let tr=e=>e.replace(/[ \t\\'"(){}[\]!#$&;`|*?<>~^%]/g,"\\$&"),tl=(0,eR.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var ti=e.i(721614),to=e.i(569479),ts=e.i(240614),tu=e.i(570513),td=e.i(714233),tc=e.i(320183),tf=e.i(883590);let tp=({tab:e,isActive:t,isDragging:n,dropSide:i,displayTitle:o,currentProcess:s,onSwitch:u,onDelete:d,onRename:c,onFocusPane:f,onDragStart:p,onDragEnd:m,onDragOver:h,onDragLeave:g})=>{let x=(0,l.useTranslations)("terminal"),[b,v]=(0,r.useState)(!1),[y,w]=(0,r.useState)(""),S=(0,r.useRef)(null);(0,r.useEffect)(()=>{b&&requestAnimationFrame(()=>S.current?.select())},[b]);let C=()=>{let t=y.trim();v(!1),t!==e.name&&c(t)},j=e.name||o||"";return(0,a.jsxs)("div",{"data-tab-id":e.id,role:"tab","aria-selected":t,tabIndex:t?0:-1,className:(0,eI.cn)("group relative flex min-w-[120px] max-w-[180px] cursor-pointer items-center gap-1.5 border-b-2 px-3 text-xs select-none",t?"border-b-accent-color bg-secondary text-foreground":"border-b-transparent text-muted-foreground hover:bg-accent hover:text-foreground",n&&"opacity-30"),onClick:()=>{b||t||u(),f()},onDoubleClick:()=>{v(!0),w(e.name)},draggable:!b,onDragStart:p,onDragEnd:m,onDragOver:h,onDragLeave:g,children:["left"===i&&(0,a.jsx)("div",{className:"absolute top-1 bottom-1 left-0 w-0.5 bg-ui-blue"}),b?(0,a.jsx)("input",{ref:S,className:"w-full min-w-0 border-b border-accent-color bg-transparent text-xs text-foreground outline-none",value:y,onChange:e=>w(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C(),"Escape"===e.key&&v(!1)},onBlur:C,onClick:e=>e.stopPropagation()}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tf.default,{tabId:e.id,panelType:e.panelType}),"claude-code"===e.panelType?(0,a.jsx)(td.default,{className:"h-3.5 w-3.5"}):"web-browser"===e.panelType?(0,a.jsx)(ts.Globe,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}):"diff"===e.panelType?(0,a.jsx)(tu.GitCompareArrows,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}):(0,a.jsx)(tc.default,{process:s??o,className:"h-3 w-3 shrink-0 text-muted-foreground"}),(0,a.jsx)("span",{className:(0,eI.cn)("truncate",j?"opacity-100":"opacity-0"),children:j})]}),(0,a.jsx)("button",{className:(0,eI.cn)("ml-auto -mr-1.5 flex h-7 w-7 shrink-0 items-center justify-center text-muted-foreground hover:text-foreground",t?"visible":"invisible group-hover:visible"),onClick:e=>{e.stopPropagation(),d()},"aria-label":x("closeTabLabel"),children:(0,a.jsx)(e8.X,{className:"h-3 w-3"})}),"right"===i&&(0,a.jsx)("div",{className:"absolute top-1 right-0 bottom-1 w-0.5 bg-ui-blue"})]})};var tm=e.i(875284),th=e.i(348370),tg=e.i(266231),tx=e.i(924233);let tb=({paneId:e,isCreating:t,activePanelType:n,onCreateTab:i})=>{let o=(0,l.useTranslations)("terminal"),d=(0,tx.default)(),[c,p]=(0,r.useState)(!1),m=(0,tg.default)(),h=(0,f.useLayoutStore)(e=>e.workspaceId),g=(0,r.useMemo)(()=>{let e=[{key:"claude-new",type:"claude-code",icon:(0,a.jsx)(td.default,{className:"h-3.5 w-3.5"}),label:o("claudeNewConversation"),startClaude:!0},{key:"claude",type:"claude-code",icon:(0,a.jsx)(td.default,{className:"h-3.5 w-3.5"}),label:o("claudeSessionList")},{key:"terminal",type:"terminal",icon:(0,a.jsx)(tm.Terminal,{className:"h-3.5 w-3.5 text-muted-foreground"}),label:"Terminal"},{key:"diff",type:"diff",icon:(0,a.jsx)(tu.GitCompareArrows,{className:"h-3.5 w-3.5 text-muted-foreground"}),label:"Diff"},{key:"web-browser",type:"web-browser",icon:(0,a.jsx)(ts.Globe,{className:"h-3.5 w-3.5 text-muted-foreground"}),label:"Web Browser"}];return m?e.filter(e=>"web-browser"!==e.key):e},[m,o]),[x,b]=(0,r.useState)(0),v=(0,r.useRef)([]),y=(0,r.useCallback)(()=>{let e=(e=>{switch(e){case"terminal":return"terminal";case"web-browser":return"web-browser";default:return"claude-new"}})(n),t=g.findIndex(t=>t.key===e);b(t>=0?t:0),p(!0)},[n,g]);(0,r.useEffect)(()=>{let t=t=>{let n=t.detail;n?.paneId===e&&y()};return window.addEventListener("open-new-tab-menu",t),()=>window.removeEventListener("open-new-tab-menu",t)},[e,y]),(0,r.useEffect)(()=>{c&&v.current[x]?.focus()},[c,x]);let w=e=>{if(p(!1),"startClaude"in e&&e.startClaude){let t=eA.default.getState().dangerouslySkipPermissions,n=["--settings ~/.purplemux/hooks.json",h?`--append-system-prompt-file ~/.purplemux/workspaces/${h}/claude-prompt.md`:""].filter(Boolean).join(" "),a=t?`claude ${n} --dangerously-skip-permissions`:`claude ${n}`;i(e.type,{command:a})}else i(e.type)};return(0,a.jsx)("div",{className:"flex items-center border-l border-r border-border px-0.5",children:(0,a.jsxs)(th.Popover,{open:c,onOpenChange:e=>{e?y():p(!1)},children:[(0,a.jsxs)(to.Tooltip,{children:[(0,a.jsx)(to.TooltipTrigger,{render:(0,a.jsx)(th.PopoverTrigger,{className:(0,eI.cn)("flex h-7 w-7 items-center justify-center text-muted-foreground hover:text-foreground",t&&"pointer-events-none opacity-50"),disabled:t,"aria-label":o("openNewTab")}),children:t?(0,a.jsx)(u.default,{className:"h-3 w-3"}):(0,a.jsx)(s.Plus,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipContent,{side:"bottom",children:o("newTabTooltip",{shortcut:`${d?"⌘":"Ctrl+"}T`})})]}),(0,a.jsx)(th.PopoverContent,{side:"bottom",align:"start",className:"w-44 gap-0 p-0.5",onKeyDown:e=>{if("ArrowDown"===e.key)e.preventDefault(),b(e=>(e+1)%g.length);else if("ArrowUp"===e.key)e.preventDefault(),b(e=>(e-1+g.length)%g.length);else if("Enter"===e.key){e.preventDefault();let t=g[x];t&&w(t)}},children:g.map((e,t)=>(0,a.jsxs)("button",{ref:e=>{v.current[t]=e},className:(0,eI.cn)("flex w-full items-center gap-2 rounded-sm px-2.5 py-2 text-xs text-foreground hover:bg-accent focus:outline-none",x===t&&"bg-accent"),onMouseEnter:()=>b(t),onClick:()=>w(e),children:[e.icon,e.label]},e.key))})]})})},tv=({paneId:e,tabs:t,activeTabId:n,tabTitles:o,tabProcesses:s,isLoading:u,error:d,isCreating:f,paneCount:p,isSplitting:m,onSwitchTab:h,onCreateTab:g,onDeleteTab:x,onRenameTab:b,onReorderTabs:v,onClosePane:y,onMoveTab:w,onFocusPane:S,onRetry:C})=>{let j=(0,l.useTranslations)("terminal"),k=(0,l.useTranslations)("common"),N=(0,r.useRef)(null),z=(0,r.useMemo)(()=>[...t].sort((e,t)=>e.order-t.order),[t]),{draggedTabId:T,dropTarget:P,isDragOverFromOther:R,handleDragOver:L,handleDrop:E,handleTabBarDragEnter:I,handleTabBarDragLeave:D,startDrag:M,endDrag:A,clearDropTarget:$}=(({paneId:e,sortedTabs:t,onReorderTabs:n,onMoveTab:a})=>{let[l,i]=(0,r.useState)(null),[o,s]=(0,r.useState)(null),[u,d]=(0,r.useState)(!1),c=(0,r.useRef)(0),f=(0,r.useCallback)((e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect="move";let n=e.currentTarget.getBoundingClientRect();s({id:t,side:e.clientX<n.left+n.width/2?"left":"right"})},[]),p=(0,r.useCallback)(r=>{r.preventDefault(),c.current=0,d(!1);let l=r.dataTransfer.getData("text/tab-id"),u=r.dataTransfer.getData("text/pane-id");if(!l){i(null),s(null);return}if(u&&u!==e){let e;a(l,u,o?(e=t.findIndex(e=>e.id===o.id),"right"===o.side?e+1:e):t.length),i(null),s(null);return}if(!o||l===o.id){i(null),s(null);return}let f=t.filter(e=>e.id!==l),p=f.findIndex(e=>e.id===o.id),m="right"===o.side?p+1:p,h=t.find(e=>e.id===l);h&&f.splice(m,0,h),n(f.map(e=>e.id)),i(null),s(null)},[e,t,o,a,n]),m=(0,r.useCallback)(t=>{t.preventDefault(),c.current++;let n=Array.from(t.dataTransfer.types).find(e=>e.startsWith("application/x-pane/")),a=n?.replace("application/x-pane/","")??null;null!==a&&a!==e&&d(!0)},[e]),h=(0,r.useCallback)(()=>{c.current--,c.current<=0&&(c.current=0,d(!1),s(null))},[]),g=(0,r.useCallback)((t,n)=>{t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/tab-id",n),t.dataTransfer.setData("text/pane-id",e),t.dataTransfer.setData(`application/x-pane/${e}`,"");let a=t.currentTarget.cloneNode(!0);a.querySelector('[aria-label="탭 닫기"]')?.remove(),a.querySelectorAll(".sr-only").forEach(e=>e.remove()),a.style.cssText="position:fixed;left:-9999px;display:flex;align-items:center;gap:6px;padding:4px 12px;background:var(--card);color:var(--foreground);border:none;border-radius:4px;font-size:12px;opacity:0.6;transform:scale(0.9);white-space:nowrap;",document.body.appendChild(a),t.dataTransfer.setDragImage(a,0,0),requestAnimationFrame(()=>a.remove()),i(n)},[e]);return{draggedTabId:l,dropTarget:o,isDragOverFromOther:u,handleDragOver:f,handleDrop:p,handleTabBarDragEnter:m,handleTabBarDragLeave:h,startDrag:g,endDrag:(0,r.useCallback)(()=>{i(null),s(null)},[]),clearDropTarget:(0,r.useCallback)(()=>{s(null)},[])}})({paneId:e,sortedTabs:z,onReorderTabs:v,onMoveTab:w}),[F,O]=(0,r.useState)(!1),[B,W]=(0,r.useState)(!1),G=F||B,_=(0,r.useCallback)(()=>{let e=N.current;e&&(O(e.scrollLeft>0),W(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,r.useEffect)(()=>{_();let e=N.current;if(!e)return;let t=new ResizeObserver(_);return t.observe(e),()=>t.disconnect()},[_,t]),(0,r.useEffect)(()=>{if(!n||!N.current)return;let e=N.current.querySelector(`[data-tab-id="${n}"]`);e?.scrollIntoView({behavior:"instant",inline:"nearest",block:"nearest"})},[n]),(0,r.useEffect)(()=>{let e=N.current;if(!e)return;let t=t=>{let n=t.deltaX+t.deltaY;0!==n&&(t.preventDefault(),e.scrollLeft+=n,_())};return e.addEventListener("wheel",t,{passive:!1}),()=>e.removeEventListener("wheel",t)},[_]);let U=e=>{let t=N.current;t&&t.scrollBy({left:e,behavior:"smooth"})};return d?(0,a.jsxs)("div",{className:"flex h-[36px] shrink-0 items-center gap-2 bg-background px-3",children:[(0,a.jsx)(i.AlertTriangle,{className:"h-3.5 w-3.5 text-ui-amber"}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:d}),(0,a.jsx)(c.Button,{variant:"ghost",size:"xs",className:"h-5 px-2 text-xs text-foreground hover:text-foreground",onClick:C,children:k("retry")})]}):u?(0,a.jsx)("div",{className:"flex h-[36px] shrink-0 items-center gap-1.5 bg-background px-2",children:[1,2,3].map(e=>(0,a.jsx)("div",{className:"h-4 w-16 animate-pulse rounded bg-muted"},e))}):(0,a.jsxs)("div",{className:(0,eI.cn)("flex h-[36px] shrink-0 items-stretch border-b border-border transition-colors",R?"bg-accent-color/10":"bg-background"),onDragEnter:I,onDragLeave:D,onDragOver:e=>e.preventDefault(),onDrop:E,children:[G&&(0,a.jsx)("button",{className:(0,eI.cn)("flex w-5 shrink-0 items-center justify-center text-muted-foreground transition-opacity hover:text-foreground",F?"opacity-100":"pointer-events-none opacity-0"),onClick:()=>U(-200),tabIndex:F?0:-1,children:(0,a.jsx)(tl,{className:"h-3.5 w-3.5"})}),(0,a.jsx)("div",{ref:N,role:"tablist",className:"flex flex-1 items-stretch overflow-x-auto",style:{scrollbarWidth:"none"},onScroll:_,children:z.map(e=>(0,a.jsx)(tp,{tab:e,isActive:e.id===n,isDragging:e.id===T,dropSide:P?.id===e.id?P.side:null,displayTitle:o?.[e.id],currentProcess:s?.[e.id],onSwitch:()=>h(e.id),onDelete:()=>x(e.id),onRename:t=>{b(e.id,t)},onFocusPane:S,onDragStart:t=>M(t,e.id),onDragEnd:A,onDragOver:t=>L(t,e.id),onDragLeave:$},e.id))}),G&&(0,a.jsx)("button",{className:(0,eI.cn)("flex w-5 shrink-0 items-center justify-center text-muted-foreground transition-opacity hover:text-foreground",B?"opacity-100":"pointer-events-none opacity-0"),onClick:()=>U(200),tabIndex:B?0:-1,children:(0,a.jsx)(ti.ChevronRight,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipProvider,{children:(0,a.jsxs)("div",{className:"flex shrink-0 items-stretch",children:[(0,a.jsx)(tb,{paneId:e,isCreating:f,activePanelType:z.find(e=>e.id===n)?.panelType,onCreateTab:g}),p>=2&&(0,a.jsx)("div",{className:"flex items-center px-0.5",children:(0,a.jsxs)(to.Tooltip,{children:[(0,a.jsx)(to.TooltipTrigger,{className:(0,eI.cn)("flex h-7 w-7 items-center justify-center text-muted-foreground",m?"pointer-events-none opacity-30":"hover:text-foreground"),disabled:m,onClick:e=>{e.stopPropagation(),y()},"aria-label":j("closeAllTabs"),children:(0,a.jsx)(e8.X,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipContent,{side:"bottom",children:j("closeAllTabs")})]})})]})})]})};var ty=e.i(251748),tw=e.i(610782),tS=e.i(117369);let tC={write:()=>{},reset:()=>{},fit:()=>({cols:80,rows:24}),focus:()=>{}},tj={sendStdin:()=>{},sendResize:()=>{}},tk={normal:{normal:12,claudeCode:10},large:{normal:14,claudeCode:12},"x-large":{normal:16,claudeCode:14}},tN=[],tz=(0,r.memo)(({paneId:e,paneNumber:t})=>{let n=(0,l.useTranslations)("terminal"),i=(0,f.useLayoutStore)(t=>t.layout?(0,p.findPane)(t.layout.root,e):null),o=i?.tabs??tN,m=i?.activeTabId??null,h=(0,f.useLayoutStore)(t=>t.layout?.activePaneId===e),g=(0,f.useLayoutStore)(e=>e.paneCount),v=(0,f.useLayoutStore)(e=>e.isSplitting),y=(0,f.useLayoutStore)(e=>e.switchTabInPane),w=(0,f.useLayoutStore)(e=>e.createTabInPane),S=(0,f.useLayoutStore)(e=>e.deleteTabInPane),C=(0,f.useLayoutStore)(e=>e.closePane),j=(0,f.useLayoutStore)(e=>e.focusPane),k=(0,f.useLayoutStore)(e=>e.moveTab),N=(0,f.useLayoutStore)(e=>e.renameTabInPane),z=(0,f.useLayoutStore)(e=>e.reorderTabsInPane),T=(0,f.useLayoutStore)(e=>e.updateTabPanelType),P=o.find(e=>e.id===m),R=P?.panelType??"terminal",L="claude-code"===R,E="web-browser"===R,I="diff"===R,{theme:D}=(0,tS.default)(),M=(0,eA.default)(e=>e.fontSize),[A,$]=(0,r.useState)(!1),[F,O]=(0,r.useState)(!1),B=(0,r.useRef)(0),[W,G]=(0,r.useState)(!1),[_,U]=(0,r.useState)(!1),[q,V]=(0,r.useState)(!1),H=(0,r.useMemo)(()=>o.map(e=>e.id),[o]),X=(0,x.default)((0,e$.useShallow)(e=>{let t={};for(let n of H){let a=e.metadata[n]?.title;a&&(t[n]=a)}return t})),K=(0,eG.default)((0,e$.useShallow)(e=>{let t={};for(let n of H){let a=e.tabs[n]?.currentProcess;a&&(t[n]=a)}return t})),Y=(0,x.default)(e=>m?e.metadata[m]?.cwd:void 0),J=(0,f.useLayoutStore)(e=>e.workspaceId);(0,r.useEffect)(()=>{let e=requestAnimationFrame(()=>U(!0));return()=>{cancelAnimationFrame(e)}},[]);let Q=(0,r.useRef)(tC),Z=(0,r.useRef)(tj),ee=(0,r.useRef)(null),et=(0,r.useRef)(null),en=(0,r.useRef)(null),ea=(0,r.useRef)(o),er=(0,r.useRef)(m),el=(0,r.useRef)(g),ei=(0,r.useRef)(h);(0,r.useEffect)(()=>{ea.current=o,er.current=m,el.current=g,ei.current=h});let eo=(0,r.useCallback)(async()=>{let e=er.current,t=e?ea.current.find(t=>t.id===e):null;if(t)try{let e=await fetch(`/api/layout/cwd?session=${t.sessionName}`);if(!e.ok)return;let{cwd:n,lastCommand:a}=await e.json();n&&x.default.getState().setCwd(t.id,n),x.default.getState().setLastCommand(t.id,a??null)}catch{}},[]),es=(0,r.useRef)(()=>{}),eu=(0,r.useRef)(void 0),ed=(0,r.useRef)(void 0),ec=(0,r.useRef)(!1),ef=(0,r.useRef)(null),ep=(0,r.useRef)(null),em=(0,r.useRef)(!1),eh=(0,r.useRef)(void 0),eg=(0,r.useRef)(void 0),ex=(0,r.useRef)(void 0),eb=(0,r.useRef)(void 0),ev=(0,r.useRef)(null),ey=(0,r.useRef)(""),ew=(0,eG.default)(e=>m?e.tabs[m]?.cliState??"inactive":"inactive"),eS=(0,eG.default)(e=>m?e.tabs[m]?.claudeProcess??null:null),eC=(0,eG.default)(e=>m?e.tabs[m]?.claudeSessionId??null:null),ek="timeline"===(0,eG.default)(e=>m?(0,eG.selectSessionView)(e.tabs,m):"session-list"),ez=(0,r.useCallback)(e=>{em.current||(ef.current?ep.current=e:e())},[]),eR=(0,r.useCallback)(e=>{ef.current={x:e.clientX,y:e.clientY},ep.current=null,em.current=!1},[]),eO=(0,r.useCallback)(e=>{let t=ef.current;ef.current=null;let n=!!t&&(e.clientX-t.x)**2+(e.clientY-t.y)**2>=25;n&&(em.current=!0,requestAnimationFrame(()=>{em.current=!1})),ep.current&&!n&&ep.current(),ep.current=null},[]),{prompts:eB}=(0,tt.default)(),eW=(0,r.useRef)(new Set),[e_,eU]=(0,r.useState)(!1);(0,r.useEffect)(()=>{m&&L&&h&&(0,eG.isCliIdle)(ew)&&(0,b.dismissTab)(m)},[m,ew,L,h]),(0,r.useEffect)(()=>{m&&h&&(0,b.dismissTab)(m)},[m,h]);let eq=(0,r.useCallback)(()=>{eh.current?.()},[]),eV=(0,r.useCallback)(e=>{eg.current?.(e)},[]),eH=(0,r.useCallback)((e,t)=>eg.current?.(e,t)??"",[]),eX=(0,r.useCallback)(e=>{ex.current?.(e)},[]),eK=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy")},[]),eY=(0,r.useCallback)(e=>{!e.dataTransfer.files||0===e.dataTransfer.files.length||eb.current&&(e.preventDefault(),e.stopPropagation(),eb.current(Array.from(e.dataTransfer.files)))},[]),eJ=(0,r.useCallback)(e=>{ed.current?.(e),eu.current?.()},[]),eQ=(0,r.useCallback)(e=>(0,tw.isAppShortcut)(e)?(e.preventDefault(),(0,tw.isClearShortcut)(e)&&es.current(),(0,tw.isFocusInputShortcut)(e)&&eu.current?.(),!1):!(0,tw.isShiftEnter)(e)||(e.preventDefault(),Z.current.sendStdin("\n"),!1),[]),{terminalRef:eZ,write:e6,clear:e8,reset:tl,fit:ti,focus:to,isReady:ts}=(0,eD.default)({theme:D.colors,fontSize:(tk[M]??tk.normal)[L?"claudeCode":"normal"],onInput:e=>{Z.current.sendStdin(e)},onResize:(e,t)=>Z.current.sendResize(e,t),onTitleChange:e=>{let t=er.current;if(!t)return;let n=ea.current.find(e=>e.id===t);if(n?.panelType==="web-browser"||e===ey.current)return;ey.current=e;let a=(0,ty.formatTabTitle)(e),r=(0,ty.parseCurrentCommand)(e);if(x.default.getState().setTitle(t,a),eG.default.getState().setCurrentProcess(t,r),(0,ty.isShellProcess)(e)&&ev.current){let e=ev.current;ev.current=null,Z.current.sendStdin(`${e}\r`)}let l=ea.current.find(e=>e.id===t);if(l){let e=eG.default.getState().tabs[t]?.claudeProcessCheckedAt??0;fetch(`/api/check-claude?session=${l.sessionName}`).then(e=>e.json()).then(({running:n,checkedAt:a})=>{let r=eG.default.getState().tabs[t];if(r&&r.claudeProcessCheckedAt!==e){r.claudeProcess!==n&&setTimeout(()=>{fetch(`/api/check-claude?session=${l.sessionName}`).then(e=>e.json()).then(({running:e,checkedAt:n})=>{eG.default.getState().setClaudeProcess(t,e,n)}).catch(()=>{})},500);return}eG.default.getState().setClaudeProcess(t,n,a)}).catch(()=>{})}eo()},customKeyEventHandler:eQ});(0,r.useEffect)(()=>{es.current=e8}),(0,r.useEffect)(()=>{let e=e=>{(0,tw.isFocusInputShortcut)(e)&&h&&(e.preventDefault(),eu.current?.())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[h]);let tu=(0,r.useCallback)(async()=>{if(en.current)return;let t=ea.current,n=er.current,a=el.current;if(!n)return;if(1===t.length&&a>1)return void C(e);let r=[...t].sort((e,t)=>e.order-t.order),l=r.findIndex(e=>e.id===n),i=r[l+1]||r[l-1];i&&y(e,i.id),en.current=n;try{await S(e,n)}finally{en.current=null}},[e,y,S,C]),{status:td,retryCount:tc,disconnectReason:tf,connect:tp,reconnect:tm,sendStdin:th,sendWebStdin:tg,sendResize:tx}=(0,eM.default)({onData:e=>Q.current.write(e),onConnected:()=>{$(!0),et.current=er.current;let e=er.current;e&&eG.default.getState().setTerminalConnected(e,!0);let{cols:t,rows:n}=Q.current.fit();Z.current.sendResize(t,n),ei.current&&Q.current.focus(),eo(),clearTimeout(B.current),B.current=window.setTimeout(()=>O(!1),50)},onSessionEnded:tu});(0,r.useEffect)(()=>{Q.current={write:e6,reset:tl,fit:ti,focus:to},Z.current={sendStdin:th,sendResize:tx}}),(0,r.useEffect)(()=>{ts||(ee.current=null)},[ts]),(0,r.useEffect)(()=>{if(!ts||!m)return;let e=o.find(e=>e.id===m);if(!e)return;if("web-browser"===e.panelType){ey.current="";return}if(ee.current===e.sessionName)return;null!==ee.current&&(O(!0),tl(),ey.current=""),eG.default.getState().initTab(m,{terminalConnected:!1,panelType:e.panelType}),ee.current=e.sessionName;let{cols:t,rows:n}=ti();tp(e.sessionName,t,n)},[ts,m]),(0,r.useEffect)(()=>{let e=er.current;e&&eG.default.getState().setTerminalConnected(e,"connected"===td)},[td]),(0,r.useEffect)(()=>{"disconnected"===td&&A&&et.current&&et.current!==m&&o.some(e=>e.id===et.current)&&(ee.current=null,y(e,et.current))},[td]),(0,r.useEffect)(()=>{if(!ts||"connected"!==td)return;let e=setTimeout(()=>{let{cols:e,rows:t}=ti();Z.current.sendResize(e,t)},150);return()=>clearTimeout(e)},[g]),(0,r.useEffect)(()=>{if(!ts||"connected"!==td)return;let e=setTimeout(()=>{let{cols:e,rows:t}=ti();Z.current.sendResize(e,t)},300);return()=>clearTimeout(e)},[td]),(0,r.useEffect)(()=>{if(h&&ts&&"connected"===td){let{cols:e,rows:t}=ti();Z.current.sendResize(e,t);let n=ec.current;ec.current=!1,!n&&L&&ek?ez(()=>eu.current?.()):to()}},[h]);let tb=(0,r.useCallback)(t=>{t!==m&&((0,b.dismissTab)(t),y(e,t))},[e,m,y]),tz=(0,r.useCallback)(async(t,n)=>{G(!0);let a=await w(e,t,n?.command);if(a){eG.default.getState().initTab(a.id,{panelType:t,workspaceId:J??""}),n?.command&&eG.default.getState().setSessionView(a.id,"check");let e=er.current,r=e?x.default.getState().metadata[e]?.title:null;r&&"web-browser"!==t&&x.default.getState().setTitle(a.id,r)}G(!1)},[e,w,J]),tT=(0,r.useCallback)(async t=>{if(!en.current){if(1===o.length&&g>1)return void C(e);en.current=t;try{await S(e,t)}finally{en.current=null}}},[e,o,g,S,C]),tP=(0,r.useCallback)(async(t,n)=>{await f.useLayoutStore.getState().restartTabInPane(e,t,n)&&tm()},[e,tm]),tR=(0,r.useRef)(new Set);(0,r.useEffect)(()=>{"disconnected"!==td||"session-not-found"!==tf||!m||!P||"terminal"!==(P.panelType??"terminal")||P.lastCommand||tR.current.has(m)||(tR.current.add(m),tP(m))},[td,tf,m,P,tP]);let tL=(0,r.useCallback)((t,n)=>{N(e,t,n)},[e,N]),tE=(0,r.useCallback)(t=>{z(e,t)},[e,z]),tI=(0,r.useCallback)((t,n,a)=>{k(t,n,e,a)},[e,k]),tD=(0,r.useCallback)(()=>{j(e)},[e,j]),tM=(0,r.useCallback)(t=>{m&&(V(!0),T(e,m,t))},[e,m,T]),tA=(0,r.useCallback)(t=>{m&&J&&fetch(`/api/layout/pane/${e}/tabs/${m}?workspace=${J}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({webUrl:t})}).catch(()=>{})},[m,e,J]);(0,r.useEffect)(()=>{m&&!0===eS&&"terminal"===R?eW.current.has(m)||(eW.current.add(m),eU(!0)):eU(!1)},[m,eS,R]);let{showPathInput:t$,droppedFileHint:tF,handleDragOver:tO,handleDrop:tB,handlePathInputSubmit:tW,handlePathInputDismiss:tG}=(({sendStdin:e,focus:t,wsId:n,tabId:a})=>{let[l,i]=(0,r.useState)(!1),[o,s]=(0,r.useState)(""),u=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),c=(0,r.useCallback)(n=>{0!==n.length&&(e(`\x1b[200~${n.join(" ")}\x1b[201~`),t())},[e,t]),f=(0,r.useCallback)(async e=>{let t=e.filter(ta.isImageFile);if(0===t.length)return!1;try{let e=await Promise.all(t.map(e=>(0,ta.uploadImage)(e,{wsId:n,tabId:a})));return c(e.map(e=>tr(e.path))),!0}catch(e){return d.toast.error(e instanceof Error?e.message:"Upload failed"),!0}},[n,a,c]),p=(0,r.useCallback)(e=>{e.preventDefault();let{files:t}=e.dataTransfer;if(0===t.length)return;let n=tn.default?window.electronAPI:null,a=[],r=Array.from(t);for(let e of r){let t=n?.getPathForFile(e);t&&a.push(tr(t))}a.length>0?c(a):r.some(ta.isImageFile)?f(r):(s(r.map(e=>e.name).join(", ")),i(!0))},[c,f]);return{showPathInput:l,droppedFileHint:o,handleDragOver:u,handleDrop:p,handlePathInputSubmit:(0,r.useCallback)(n=>{if(i(!1),s(""),n.trim()){let a=tr(n.trim());e(`\x1b[200~${a}\x1b[201~`),t()}},[e,t]),handlePathInputDismiss:(0,r.useCallback)(()=>{i(!1),s(""),t()},[t])}})({sendStdin:e=>Z.current.sendStdin(e),focus:to,wsId:J??void 0,tabId:m??void 0}),t_=(0,r.useCallback)(e=>{let t=eA.default.getState().dangerouslySkipPermissions,n=["--settings ~/.purplemux/hooks.json",J?`--append-system-prompt-file ~/.purplemux/workspaces/${J}/claude-prompt.md`:""].filter(Boolean).join(" "),a=e?`claude --resume ${e} ${n}`:`claude ${n}`;return t?`${a} --dangerously-skip-permissions`:a},[J]),tU=(0,r.useCallback)(()=>{"connected"===td&&m&&(eG.default.getState().setSessionView(m,"check"),th(`${t_(null)}\r`))},[td,th,m,t_]),tq=(0,r.useCallback)(()=>{"connected"===td&&m&&(ev.current=t_(null),eG.default.getState().setSessionView(m,"check"),th("/exit\r"))},[td,th,m,t_]),tV=(0,r.useCallback)(async()=>{if(!m||(eU(!1),tM("claude-code"),"connected"!==td))return;let e=eC;if(!e){let t=ea.current.find(e=>e.id===m);if(t)try{let n=await fetch(`/api/check-claude?session=${t.sessionName}`),a=await n.json();e="string"==typeof a.sessionId&&a.resumable?a.sessionId:null}catch{}}ev.current=t_(e),eG.default.getState().setSessionView(m,"check"),th("\x03"),setTimeout(()=>th("\x03"),300)},[m,td,th,eC,t_,tM]);(0,r.useEffect)(()=>{if(!ev.current||!0===eS||"connected"!==td||!(0,ty.isShellProcess)(ey.current))return;let e=ev.current;ev.current=null,th(`${e}\r`)},[eS,td,th]);let tH=(0,r.useRef)(null),[tX,tK]=(0,r.useState)(!1),tY=(0,r.useCallback)(()=>{if(!tH.current)return;V(!0);let e=!tX;tK(e),tH.current.setLayout(e?{timeline:100,"terminal-area":0}:{timeline:70,"terminal-area":30}),setTimeout(()=>{if(V(!1),!ts||"connected"!==td)return;let{cols:e,rows:t}=ti();Z.current.sendResize(e,t)},150)},[tX,ts,td,ti]);(0,r.useEffect)(()=>{if(!tH.current)return;L?(tK(!1),tH.current.setLayout({timeline:70,"terminal-area":30}),eo()):tH.current.setLayout({timeline:0,"terminal-area":100});let e=setTimeout(()=>{if(V(!1),!ts||"connected"!==td)return;let{cols:e,rows:t}=ti();Z.current.sendResize(e,t),h&&(L?ek&&ez(()=>eu.current?.()):to())},150);return()=>clearTimeout(e)},[L]),(0,r.useEffect)(()=>{h&&L&&ek&&ez(()=>eu.current?.())},[ek]);let tJ=0===o.length,tQ=ts&&("connected"===td||A)&&!tJ&&!F,tZ=!tJ&&(!ts||!A);return(0,a.jsxs)("div",{className:(0,eI.cn)("flex h-full flex-col overflow-hidden",g>1&&"border",g>1&&h?"border-focus-indicator":"border-transparent"),style:{opacity:_?void 0:0,transition:"opacity 200ms ease-out, border-color 150ms"},role:"region","aria-label":`Pane ${t}`,"aria-current":h?"true":void 0,onClick:tD,onPointerDown:eR,onPointerUp:eO,children:[(0,a.jsx)(tv,{paneId:e,tabs:o,activeTabId:m,tabTitles:X,tabProcesses:K,isLoading:!1,error:null,isCreating:W,paneCount:g,isSplitting:v,onSwitchTab:tb,onCreateTab:tz,onDeleteTab:tT,onRenameTab:tL,onReorderTabs:tE,onClosePane:()=>C(e),onMoveTab:tI,onFocusPane:tD,onRetry:()=>{}}),(0,a.jsxs)("div",{role:"tabpanel",className:"relative min-h-0 flex-1 flex flex-col",style:E||I?void 0:{backgroundColor:D.colors.background},onDragOver:E||I?void 0:tO,onDrop:E||I?void 0:tB,children:[E&&m&&(0,a.jsx)(e2.default,{initialUrl:P?.webUrl,onUrlChange:tA},m),I&&P&&(0,a.jsx)(e4.default,{sessionName:P.sessionName},P.sessionName),(0,a.jsxs)(ej,{groupRef:tH,orientation:"vertical",defaultLayout:L?{timeline:70,"terminal-area":30}:{timeline:0,"terminal-area":100},className:(0,eI.cn)("min-h-0 flex-1",(E||I)&&"invisible absolute inset-0 pointer-events-none",q&&"[&>[data-panel]]:[transition:flex-grow_150ms_ease-out]"),children:[(0,a.jsx)(eN,{id:"timeline",minSize:0,collapsible:!0,collapsedSize:0,disabled:!L,children:(0,a.jsxs)("div",{className:(0,eI.cn)("flex h-full flex-col bg-card",tX&&"pb-3"),onDragOver:L?eK:void 0,onDrop:L?eY:void 0,children:[L&&P&&!tZ&&m&&(0,a.jsx)(e0,{tabId:m,sessionName:P.sessionName,claudeSessionId:P.claudeSessionId,cwd:Y||P.cwd,onClose:()=>tM("terminal"),onNewSession:tU,scrollToBottomRef:eh,addPendingMessageRef:eg,removePendingMessageRef:ex},P.sessionName),L&&!tZ&&ek&&(0,a.jsx)(e1.default,{tabId:m??void 0,wsId:J??void 0,sessionName:P?.sessionName,claudeSessionId:P?.claudeSessionId,cliState:ew,sendStdin:tg,terminalWsConnected:"connected"===td,visible:!0,focusTerminal:to,focusInputRef:eu,setInputValueRef:ed,onRestartSession:tq,onSend:eq,onOptimisticSend:eV,onAddPendingMessage:eH,onRemovePendingMessage:eX,attachFilesRef:eb},m),L&&!tZ&&ek&&m&&(0,a.jsx)(e3.default,{prompts:eB,visible:!0,onSelect:eJ})]})}),(0,a.jsx)(eT,{className:(0,eI.cn)("group flex items-center justify-center overflow-hidden bg-card",L&&!tX?"h-3":"h-0"),disabled:!L||tX,children:(0,a.jsx)("div",{className:"h-px w-16 rounded-full bg-border transition-colors group-hover:bg-muted-foreground group-data-[resize-handle-active]:bg-muted-foreground"})}),L&&(0,a.jsxs)("button",{className:"flex h-6 w-full shrink-0 cursor-pointer items-center gap-1.5 border-t border-border bg-black/3 px-2 text-muted-foreground transition-colors hover:bg-black/5 dark:bg-white/3 dark:hover:bg-white/5",onClick:tY,children:[(0,a.jsx)(eE.TerminalSquare,{className:"h-3 w-3"}),(0,a.jsx)("span",{className:"text-[11px] font-medium",children:"Terminal"}),Y&&(0,a.jsx)("span",{className:"min-w-0 truncate text-[11px] opacity-60",children:Y.replace(/^\/Users\/[^/]+/,"~")}),(0,a.jsx)("span",{className:"ml-auto flex h-4 w-4 shrink-0 items-center justify-center",children:tX?(0,a.jsx)(eL,{className:"h-3 w-3"}):(0,a.jsx)(eP.ChevronDown,{className:"h-3 w-3"})})]}),(0,a.jsx)(eN,{id:"terminal-area",minSize:0,collapsible:!0,collapsedSize:0,children:(0,a.jsx)("div",{className:"flex h-full flex-col",onMouseDown:()=>{ec.current=!0},children:(0,a.jsx)(eF.default,{ref:eZ,minHeight:L?256:void 0,className:(0,eI.cn)("min-h-0 flex-1",tQ?"opacity-100":"opacity-0",L&&"py-0 pl-2 pr-0.5")})})})]}),tJ&&(0,a.jsx)("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3",children:(0,a.jsxs)(c.Button,{className:"gap-1.5",onClick:()=>tz(),disabled:W,children:[W?(0,a.jsx)(u.default,{className:"h-3 w-3"}):(0,a.jsx)(s.Plus,{className:"h-3.5 w-3.5"}),n("openNewTab")]})}),!tJ&&"terminal"===R&&"disconnected"===td&&"session-not-found"===tf&&m&&(0,a.jsx)(e7,{cwd:P?.cwd,lastCommand:P?.lastCommand,onRestartWithCommand:e=>tP(m,e),onRestartNew:()=>tP(m)}),e_&&(0,a.jsx)(e9,{onSwitch:tV,onDismiss:()=>eU(!1)}),t$&&(0,a.jsx)(te,{hint:tF,onSubmit:tW,onDismiss:tG}),!tJ&&!E&&!I&&(0,a.jsx)(e5.default,{status:td,retryCount:tc,disconnectReason:tf,onReconnect:tm})]})]})});tz.displayName="PaneContainer";let tT=e=>{let{root:t,onUpdateRatio:n,onEqualizeRatios:l,equalizeRef:i}=e,o=(0,r.useRef)(null),s=(0,r.useRef)(new Map),u=(0,r.useRef)(""),d=(0,r.useRef)(new Map),c=(0,r.useCallback)(()=>{let e=(0,p.equalizeNode)(t),n=(e,t)=>{if("pane"===e.type)return;let a=t.join("-")||"root",r=d.current.get(a);r?.current&&r.current.setLayout({left:e.ratio,right:100-e.ratio}),n(e.children[0],[...t,0]),n(e.children[1],[...t,1])};n(e,[]),l()},[t,l]);(0,r.useEffect)(()=>{i&&(i.current=c)});let f=(0,p.collectPanes)(t),m=new Map;f.forEach((e,t)=>{m.set(e.id,t+1)});let h=e=>{let t=s.current.get(e);return t||((t=document.createElement("div")).style.height="100%",t.style.width="100%",s.current.set(e,t)),t},g=(e,t)=>{let r;if("pane"===e.type)return(0,a.jsx)("div",{"data-pane-slot":e.id,style:{height:"100%",width:"100%"}},`slot-${e.id}`);let l=(0,p.getFirstPaneId)(e.children[0]),i=(0,p.getFirstPaneId)(e.children[1]),o="horizontal"===e.orientation,s=t.join("-")||"root";return(0,a.jsxs)(ej,{groupRef:((r=d.current.get(s))||(r={current:null},d.current.set(s,r)),r),orientation:e.orientation,defaultLayout:{left:e.ratio,right:100-e.ratio},onLayoutChanged:a=>{let r=a.left;void 0!==r&&Math.abs(r-e.ratio)>.1&&n(t,Math.round(100*r)/100)},children:[(0,a.jsx)(eN,{id:"left",minSize:o?200:120,defaultSize:`${e.ratio}%`,children:g(e.children[0],[...t,0])}),(0,a.jsx)(eT,{className:"relative flex shrink-0 items-center justify-center bg-border transition-colors duration-100 hover:bg-muted-foreground/50 active:bg-muted-foreground",style:{width:o?"1px":void 0,height:o?void 0:"1px"}}),(0,a.jsx)(eN,{id:"right",minSize:o?200:120,defaultSize:`${100-e.ratio}%`,children:g(e.children[1],[...t,1])})]},`group-${l}-${i}`)};return(0,r.useLayoutEffect)(()=>{if(!o.current)return;let e=new Set(f.map(e=>e.id));for(let[t,n]of s.current)e.has(t)||(n.remove(),s.current.delete(t));f.forEach(e=>{let t=o.current.querySelector(`[data-pane-slot="${e.id}"]`),n=h(e.id);t&&n.parentElement!==t&&t.appendChild(n)})},[f.map(e=>e.id).join(",")]),(0,r.useLayoutEffect)(()=>{let e=f.map(e=>e.id).join(",");if(u.current&&u.current!==e){let e=(t,n)=>{if("pane"===t.type)return;let a=n.join("-")||"root",r=d.current.get(a);r?.current?.setLayout({left:t.ratio,right:100-t.ratio}),e(t.children[0],[...n,0]),e(t.children[1],[...n,1])};e(t,[])}u.current=e},[f.map(e=>e.id).join(",")]),(0,a.jsxs)("div",{ref:o,className:"h-full w-full bg-terminal-bg",children:[g(t,[]),f.map(e=>(0,v.createPortal)((0,a.jsx)(tz,{paneId:e.id,paneNumber:m.get(e.id)??1}),h(e.id)))]})};var tP=e.i(660255),tR=e.i(615627),tL=e.i(69948);let tE=()=>{let e=((e=3e3)=>{let[t,n]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let t=tn.default?window.electronAPI:null;if(!t)return;let a=!0,r=async()=>{try{let[e,r]=await Promise.all([t.getSystemResources(),fetch("/api/system/tmux-sessions").then(e=>e.json())]);a&&n({cpu:e.cpu,memory:e.memory,tmuxSessions:r.count})}catch{}};r();let l=setInterval(r,e);return()=>{a=!1,clearInterval(l)}},[e]),t})();return(0,eA.default)(e=>e.systemResourcesEnabled)&&e?(0,a.jsxs)("div",{className:"flex items-center gap-2 text-[9px] text-muted-foreground/60",children:[(0,a.jsxs)("span",{className:"tabular-nums",children:["CPU ",e.cpu.toFixed(1),"%"]}),(0,a.jsxs)("span",{className:"tabular-nums",children:["MEM ",Math.round(e.memory.used/1048576),"MB"]}),(0,a.jsxs)("span",{className:"tabular-nums",children:["TMUX ",e.tmuxSessions]})]}):null};var tI=e.i(998234),tD=e.i(700599);let tM=new Set(["localhost","127.0.0.1","::1"]).has(window.location.hostname),tA=({className:e})=>(0,a.jsxs)("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("line",{x1:"8",y1:"4",x2:"8",y2:"20"}),(0,a.jsx)("line",{x1:"16",y1:"4",x2:"16",y2:"20"})]}),t$=({className:e})=>(0,a.jsxs)("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,a.jsx)("line",{x1:"12",y1:"3",x2:"12",y2:"21"})]}),tF=({className:e})=>(0,a.jsxs)("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,a.jsx)("line",{x1:"3",y1:"12",x2:"21",y2:"12"})]}),tO=({activePaneId:e,root:t,paneCount:n,canSplit:i,isSplitting:o,onSplitPane:s,onEqualizeRatios:c,onUpdateTabPanelType:f})=>{let m=(0,l.useTranslations)("terminal"),h=(0,tx.default)()?"⌘":"Ctrl+",g=(0,tR.default)(),[b,v]=(0,r.useState)(!1),y=(0,p.collectPanes)(t),w=y.find(t=>t.id===e)??y[0],S=w?.tabs.find(e=>e.id===w.activeTabId),C=S?.panelType??"terminal",j=(0,x.default)(e=>S?.id?e.metadata[S.id]?.cwd:void 0),k=(0,eA.default)(e=>e.editorUrl),N=(0,eA.default)(e=>e.editorPreset),z=(0,r.useMemo)(()=>(0,tI.buildEditorUrl)(N,k,j||"/"),[N,k,j]),T=!!z&&(0,tI.isSafeEditorTarget)(z),P=!!z&&(0,tI.isWebEditorUrl)(z),R=T&&!P&&!tM,L=R?m("editorRemoteNotSupported"):m("openEditor"),E=w?.id;return(0,a.jsx)("div",{className:"shrink-0 bg-background",children:(0,a.jsxs)("div",{className:"relative z-40 flex h-12 shrink-0 items-center border-b border-border px-3",...tn.default?{style:{WebkitAppRegion:"drag"}}:{},children:[(0,a.jsx)("div",{className:"mr-auto",...tn.default?{style:{WebkitAppRegion:"no-drag"}}:{},children:(0,a.jsx)(tE,{})}),(0,a.jsx)(to.TooltipProvider,{children:(0,a.jsxs)("div",{className:"flex items-center gap-1",...tn.default?{style:{WebkitAppRegion:"no-drag"}}:{},children:[(0,a.jsx)("div",{className:(0,eI.cn)("flex items-center gap-px border-r border-border pr-2",b&&"pointer-events-none opacity-80"),children:[{value:"terminal",label:"TERMINAL",mac:"⌘⇧T",other:"^⇧T"},{value:"claude-code",label:"CLAUDE",mac:"⌘⇧C",other:"^⇧C"},{value:"diff",label:"DIFF",mac:"⌘⇧F",other:"^⇧F"}].map(e=>(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("button",{className:(0,eI.cn)("rounded px-1.5 py-0.5 text-[10px] font-medium tracking-wide transition-colors",C===e.value?"bg-accent text-foreground":"text-muted-foreground/60 hover:text-muted-foreground"),onClick:()=>{var t;return t=e.value,void(b||!w||!S||t!==C&&(v(!0),f(w.id,S.id,t),setTimeout(()=>v(!1),150)))},children:e.label}),C!==e.value&&(0,a.jsx)(tL.default,{mac:e.mac,other:e.other,className:(0,eI.cn)("absolute -right-0.5 -top-1.5 rounded bg-muted px-1 py-0.5 text-[10px] font-medium leading-none text-muted-foreground transition-opacity duration-200 pointer-events-none",g?"opacity-100":"opacity-0")})]},e.value))}),"off"!==N&&(0,a.jsxs)(to.Tooltip,{children:[(0,a.jsx)(to.TooltipTrigger,{className:(0,eI.cn)("flex h-7 w-7 items-center justify-center text-muted-foreground",R?"cursor-not-allowed opacity-30":"hover:text-foreground"),"aria-disabled":R||void 0,onClick:()=>{if(R)return;if(!z)return void d.toast.info(m("editorUrlNotSet"));if(!T)return void d.toast.error(m("editorUrlNotSet"));if(P)return void window.open(z,"_blank","noopener,noreferrer");let e=window.electronAPI;if(e?.openExternal)return void e.openExternal(z);let t=document.createElement("iframe");t.style.display="none",t.src=z,document.body.appendChild(t),setTimeout(()=>t.remove(),1e3)},"aria-label":m("openEditor"),children:z?(0,a.jsx)(tD.EditorIcon,{preset:N,className:"h-3.5 w-3.5"}):(0,a.jsx)(tP.FolderCode,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipContent,{side:"bottom",children:L})]}),"off"!==N&&(0,a.jsx)("div",{className:"h-5 w-px bg-border"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)(to.Tooltip,{children:[(0,a.jsx)(to.TooltipTrigger,{className:(0,eI.cn)("flex h-7 w-7 items-center justify-center text-muted-foreground",i?"hover:text-foreground":"cursor-not-allowed opacity-30"),onClick:i&&E?()=>s(E,"horizontal"):void 0,disabled:!i,"aria-label":m("splitVertical"),children:o?(0,a.jsx)(u.default,{className:"h-3 w-3"}):(0,a.jsx)(t$,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipContent,{side:"bottom",children:m("splitVerticalShortcut",{shortcut:`${h}D`})})]}),(0,a.jsx)(tL.default,{mac:"⌘D",other:"^D",className:(0,eI.cn)("absolute -right-0.5 -top-1.5 rounded bg-muted px-1 py-0.5 text-[10px] font-medium leading-none text-muted-foreground transition-opacity duration-200 pointer-events-none",g?"opacity-100":"opacity-0")})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)(to.Tooltip,{children:[(0,a.jsx)(to.TooltipTrigger,{className:(0,eI.cn)("flex h-7 w-7 items-center justify-center text-muted-foreground",i?"hover:text-foreground":"cursor-not-allowed opacity-30"),onClick:i&&E?()=>s(E,"vertical"):void 0,disabled:!i,"aria-label":m("splitHorizontal"),children:o?(0,a.jsx)(u.default,{className:"h-3 w-3"}):(0,a.jsx)(tF,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipContent,{side:"bottom",children:m("splitHorizontalShortcut",{shortcut:`${h}⇧D`})})]}),(0,a.jsx)(tL.default,{mac:"⌘⇧D",other:"^⇧D",className:(0,eI.cn)("absolute -right-0.5 -top-1.5 rounded bg-muted px-1 py-0.5 text-[10px] font-medium leading-none text-muted-foreground transition-opacity duration-200 pointer-events-none",g?"opacity-100":"opacity-0")})]}),n>=2&&(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)(to.Tooltip,{children:[(0,a.jsx)(to.TooltipTrigger,{className:"flex h-7 w-7 items-center justify-center text-muted-foreground hover:text-foreground",onClick:c,"aria-label":m("equalSplit"),children:(0,a.jsx)(tA,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(to.TooltipContent,{side:"bottom",children:m("equalSplit")})]}),(0,a.jsx)(tL.default,{mac:"⌘⌥=",other:"^⌥=",className:(0,eI.cn)("absolute -right-0.5 -top-1.5 rounded bg-muted px-1 py-0.5 text-[10px] font-medium leading-none text-muted-foreground transition-opacity duration-200 pointer-events-none",g?"opacity-100":"opacity-0")})]})]})})]})})};var tB=e.i(199685),tW=e.i(566736);e.s(["default",0,()=>{let e=(0,l.useTranslations)("terminal"),t=(0,m.default)(e=>e.isLoading),n=(0,m.default)(e=>e.error),v=(0,m.default)(e=>e.activeWorkspaceId),y=(0,m.default)(e=>e.workspaces.length),w=(0,r.useRef)(null),S=(0,r.useRef)(null),C=(0,r.useCallback)(()=>{let t=w.current;t&&(m.default.getState().switchWorkspace(t),d.toast.error(e("cannotSwitch")))},[e]),j=(0,f.default)({workspaceId:v,onFetchError:C}),k=!!(j.layout&&!j.isLoading&&(0,p.collectPanes)(j.layout.root).every(e=>0===e.tabs.length)),N=j.layout?.updatedAt,z=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!j.layout||!N||z.current===N)return;z.current=N;let e={};for(let t of(0,p.collectPanes)(j.layout.root))for(let n of t.tabs)(n.title||n.cwd)&&(e[n.id]={title:n.title,cwd:n.cwd});x.default.getState().hydrate(e),(0,b.requestSync)()},[N]),(0,r.useEffect)(()=>{if(!j.layout)return;let e=new Set((0,p.collectPanes)(j.layout.root).flatMap(e=>e.tabs.map(e=>e.id)));x.default.getState().retainOnly(e)},[j.layout]),(0,tW.useAutoDeleteEmptyWorkspace)(k,j.clearLayout);let T=(0,r.useCallback)(e=>{let{activeWorkspaceId:t}=m.default.getState();e!==t&&(w.current=t,x.default.getState().reset(),j.clearLayout(),m.default.getState().switchWorkspace(e))},[j]);if((0,r.useEffect)(()=>(tB.default.getState().register(T),()=>tB.default.getState().unregister()),[T]),(({layout:e})=>{let t=(0,r.useRef)(e),n=(0,m.default)(e=>e.isSettingsDialogOpen),a=(0,m.default)(e=>e.isCheatSheetOpen),l=!n&&!a;(0,r.useEffect)(()=>{t.current=e},[e]),(0,h.default)("pane.split_right",()=>{let e=t.current;e.layout?.activePaneId&&e.canSplit&&e.splitPane(e.layout.activePaneId,"horizontal")},l),(0,h.default)("pane.split_down",()=>{let e=t.current;e.layout?.activePaneId&&e.canSplit&&e.splitPane(e.layout.activePaneId,"vertical")},l);let i=(0,r.useCallback)(e=>{let n=t.current;if(!n.layout?.activePaneId)return;let a=(0,p.findAdjacentPaneInDirection)(n.layout.root,n.layout.activePaneId,e);a&&n.focusPane(a)},[]);(0,h.default)("pane.focus_left",()=>i("left"),l),(0,h.default)("pane.focus_right",()=>i("right"),l),(0,h.default)("pane.focus_up",()=>i("up"),l),(0,h.default)("pane.focus_down",()=>i("down"),l);let o=(0,r.useCallback)(e=>{let n=t.current;if(!n.layout?.activePaneId)return;let a=(0,p.findResizeTarget)(n.layout.root,n.layout.activePaneId,e);if(!a)return;let r=a.increase?5:-5,l=Math.min(95,Math.max(5,a.currentRatio+r));l!==a.currentRatio&&f.useLayoutStore.getState().updateRatio(a.path,l)},[]);(0,h.default)("pane.resize_left",()=>o("left"),l),(0,h.default)("pane.resize_right",()=>o("right"),l),(0,h.default)("pane.resize_up",()=>o("up"),l),(0,h.default)("pane.resize_down",()=>o("down"),l),(0,h.default)("pane.equalize",()=>f.useLayoutStore.getState().equalizeRatios(),l),(0,h.default)("tab.new",()=>{let e=t.current;e.layout?.activePaneId&&window.dispatchEvent(new CustomEvent("open-new-tab-menu",{detail:{paneId:e.layout.activePaneId}}))},l),(0,h.default)("tab.close",()=>{let e=t.current;if(!e.layout?.activePaneId)return;let n=g(e.layout);n?.activeTabId&&(1===n.tabs.length&&e.paneCount>1?e.closePane(n.id):e.deleteTabInPane(n.id,n.activeTabId))},l),(0,h.default)("tab.prev",()=>f.useLayoutStore.getState().focusPrevTab(),l),(0,h.default)("tab.next",()=>f.useLayoutStore.getState().focusNextTab(),l),(0,h.default)("pane.clear_screen",()=>{},l),(0,h.default)("tab.goto",e=>{let t=parseInt(e.code.replace("Digit",""),10);isNaN(t)||t<1||t>9||f.useLayoutStore.getState().focusTabByIndex(9===t?1/0:t-1)},l);let s=(0,r.useCallback)(e=>{let n=g(t.current.layout);if(!n?.activeTabId)return;let a=n.tabs.find(e=>e.id===n.activeTabId);a&&(a.panelType??"terminal")!==e&&f.useLayoutStore.getState().updateTabPanelType(n.id,n.activeTabId,e)},[]);(0,h.default)("view.mode_terminal",()=>s("terminal"),l),(0,h.default)("view.mode_claude",()=>s("claude-code"),l),(0,h.default)("view.mode_diff",()=>s("diff"),l)})({layout:j}),t)return(0,a.jsxs)("div",{className:"flex h-full w-full flex-col overflow-hidden bg-background animate-delayed-fade-in",children:[(0,a.jsx)("div",{className:"flex h-12 shrink-0 items-center gap-1.5 border-b border-border bg-background px-2",children:[1,2,3].map(e=>(0,a.jsx)("div",{className:"h-4 w-16 animate-pulse rounded bg-muted"},e))}),(0,a.jsx)("div",{className:"flex flex-1 items-center justify-center",children:(0,a.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,a.jsx)(u.default,{className:"h-4 w-4 text-muted-foreground"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:e("connecting")})]})})]});if(n&&!y)return(0,a.jsxs)("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 overflow-hidden bg-background",children:[(0,a.jsx)(i.AlertTriangle,{className:"h-5 w-5 text-ui-amber"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:n}),(0,a.jsxs)(c.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:m.default.getState().fetchWorkspaces,children:[(0,a.jsx)(o.RefreshCw,{className:"h-3.5 w-3.5"}),e("retryAction")]})]});let P=!j.layout&&j.isLoading&&v;return(0,a.jsxs)("div",{className:"relative flex h-full w-full flex-col overflow-hidden bg-background",children:[j.layout&&!j.isLoading&&!k&&(0,a.jsx)(tO,{activePaneId:j.layout.activePaneId,root:j.layout.root,paneCount:j.paneCount,canSplit:j.canSplit,isSplitting:j.isSplitting,onSplitPane:j.splitPane,onEqualizeRatios:()=>S.current?.(),onUpdateTabPanelType:j.updateTabPanelType}),(0,a.jsxs)("div",{className:"relative min-h-0 flex-1",children:[P&&(0,a.jsx)("div",{className:"absolute inset-0 z-30 flex items-center justify-center bg-background animate-delayed-fade-in",children:(0,a.jsx)(u.default,{className:"h-4 w-4 text-muted-foreground"})}),j.error&&!j.isLoading&&(0,a.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3",children:[(0,a.jsx)(i.AlertTriangle,{className:"h-5 w-5 text-ui-amber"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:j.error}),(0,a.jsxs)(c.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>j.fetchLayout(),children:[(0,a.jsx)(o.RefreshCw,{className:"h-3.5 w-3.5"}),e("retryAction")]})]}),j.layout&&!j.isLoading&&!k&&(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(tT,{root:j.layout.root,onUpdateRatio:j.updateRatio,onEqualizeRatios:j.equalizeRatios,equalizeRef:S})},v),!v&&!t&&!n&&(0,a.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,a.jsxs)(c.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:async()=>{let e=await m.default.getState().createWorkspace("");e&&m.default.getState().switchWorkspace(e.id)},children:[(0,a.jsx)(s.Plus,{className:"h-3.5 w-3.5"}),e("newWorkspace")]})})]})]})}],51372)},277184,e=>{e.n(e.i(51372))}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,432270,e=>{"use strict";var t=e.i(391398),s=e.i(191788),a=e.i(432237),n=e.i(398957),l=e.i(482192),r=e.i(972733),i=e.i(352819),o=e.i(199648),c=e.i(679935),u=e.i(939310),d=e.i(335288),f=e.i(806185),m=e.i(490034),x=e.i(453783),h=e.i(868462),p=e.i(570513),b=e.i(876208),g=e.i(714233),j=e.i(883590),C=e.i(57098);let y=({open:e,onOpenChange:a,sessionName:n})=>{let l=(0,i.useTranslations)("terminal"),[r,o]=(0,s.useState)(""),[d,f]=(0,s.useState)(!1),[m,x]=(0,s.useState)(null),[h,p]=(0,s.useState)(null),g=e&&n?n:null;g!==h&&(p(g),o(""),x(null),f(null!==g)),(0,s.useEffect)(()=>{if(!h)return;let e=!1;return fetch(`/api/tmux/capture?session=${encodeURIComponent(h)}`).then(e=>{if(!e.ok)throw Error("capture failed");return e.json()}).then(t=>{e||(o((t.content??"").replace(/\s+$/g,"")),f(!1))}).catch(()=>{e||(x(l("copyPaneCaptureFailed")),f(!1))}),()=>{e=!0}},[h,l]);let j=(0,s.useCallback)(async()=>{if(r)try{await navigator.clipboard.writeText(r),c.toast.success(l("copyPaneSuccess"),{duration:1500}),a(!1)}catch{c.toast.error(l("copyPaneCopyFailed"))}},[r,a,l]);return(0,t.jsx)(C.Drawer,{open:e,onOpenChange:a,children:(0,t.jsxs)(C.DrawerContent,{className:"h-[80dvh] data-[vaul-drawer-direction=bottom]:max-h-[80dvh]",children:[(0,t.jsxs)(C.DrawerHeader,{className:"pb-2",children:[(0,t.jsx)(C.DrawerTitle,{children:l("copyPaneDrawerTitle")}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:l("copyPaneDrawerHint")})]}),(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col gap-3 px-4 pb-4",children:[d?(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center py-8 text-sm text-muted-foreground",children:l("copyPaneLoading")}):m?(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center py-8 text-sm text-ui-red",children:m}):(0,t.jsx)("textarea",{value:r,onChange:e=>o(e.target.value),spellCheck:!1,autoCorrect:"off",autoCapitalize:"off",className:"min-h-0 flex-1 w-full resize-none rounded border border-border bg-muted/30 p-3 font-mono text-xs text-foreground outline-none focus:ring-1 focus:ring-ring"}),(0,t.jsxs)(u.Button,{onClick:j,disabled:d||!!m||!r,className:"w-full",children:[(0,t.jsx)(b.Copy,{className:"mr-2 h-4 w-4"}),l("copyPaneCopyAll")]})]})]})})};var S=e.i(399267),k=e.i(320183),v=e.i(353533),w=e.i(212283);let N=[{type:"terminal",label:"TERMINAL"},{type:"claude-code",label:"CLAUDE"},{type:"diff",label:"DIFF"}],T=({tabId:e,tabName:a,sessionName:n,panelType:l,onSwitchPanelType:o,onCreateTab:c,onClose:u})=>{let d=(0,i.useTranslations)("mobile"),f=(0,i.useTranslations)("common"),m=(0,i.useTranslations)("terminal"),[x,C]=(0,s.useState)(!1),T=(0,S.default)(t=>t.tabs[e]),P=T?.terminalStatus==="server"?"text-ui-green":T?.terminalStatus==="running"?"text-ui-blue":"text-muted-foreground/50";return(0,t.jsxs)("div",{className:"flex h-10 shrink-0 items-center border-b border-border/50 bg-background",children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2 px-3",children:[(0,t.jsx)(j.default,{tabId:e,panelType:l}),"claude-code"===l?(0,t.jsx)(g.default,{size:16}):"diff"===l?(0,t.jsx)(p.GitCompareArrows,{className:"h-4 w-4 shrink-0 text-muted-foreground"}):(0,t.jsx)(k.default,{process:T?.currentProcess,className:(0,v.cn)("h-3.5 w-3.5 shrink-0",P)}),(0,t.jsx)("span",{className:"truncate text-xs text-foreground",children:a})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5 pr-0.5",children:[(0,t.jsx)("div",{className:"flex items-center gap-px",children:N.map(e=>(0,t.jsx)("button",{className:(0,v.cn)("rounded px-1.5 py-0.5 text-[10px] font-medium tracking-wide transition-colors",l===e.type?"bg-accent text-foreground":"text-muted-foreground/60 hover:text-muted-foreground"),onClick:()=>o(e.type),children:e.label},e.type))}),"terminal"===l&&!!n&&(0,t.jsx)("button",{className:"flex h-10 w-10 items-center justify-center text-muted-foreground transition-colors",onClick:()=>C(!0),"aria-label":m("copyPaneLabel"),children:(0,t.jsx)(b.Copy,{size:16})}),(0,t.jsx)("button",{className:"flex h-10 w-10 items-center justify-center text-muted-foreground transition-colors",onClick:c,"aria-label":d("newTab"),children:(0,t.jsx)(r.Plus,{size:16})}),(0,t.jsxs)(w.AlertDialog,{children:[(0,t.jsx)(w.AlertDialogTrigger,{className:"flex h-10 w-10 items-center justify-center text-muted-foreground transition-colors","aria-label":d("closeTab"),children:(0,t.jsx)(h.X,{size:16})}),(0,t.jsxs)(w.AlertDialogContent,{children:[(0,t.jsxs)(w.AlertDialogHeader,{children:[(0,t.jsx)(w.AlertDialogTitle,{children:d("closeTab")}),(0,t.jsx)(w.AlertDialogDescription,{children:d("closeTabConfirm",{name:a})})]}),(0,t.jsxs)(w.AlertDialogFooter,{children:[(0,t.jsx)(w.AlertDialogCancel,{children:f("cancel")}),(0,t.jsx)(w.AlertDialogAction,{className:"bg-ui-red hover:bg-ui-red/80",onClick:u,children:f("close")})]})]})]})]}),(0,t.jsx)(y,{open:x,onOpenChange:C,sessionName:n})]})};var P=e.i(125687),R=e.i(40830),I=e.i(236495),D=e.i(244046),L=e.i(355327),E=e.i(756494),A=e.i(391046),z=e.i(918324),B=e.i(231382),M=e.i(377181),$=e.i(418760),W=e.i(815435),O=e.i(967086),F=e.i(541301),H=e.i(767708),U=e.i(650001),V=e.i(441693),_=e.i(17122),K=e.i(273062),q=e.i(87093),G=e.i(148141),J=e.i(624306),X=e.i(706140),Y=e.i(529511);let Z=({open:e,onOpenChange:s,meta:a,toolCount:n,toolBreakdown:l,branch:r,isBranchLoading:i,sessionId:o,gitStatus:c,tmuxInfo:u})=>(0,t.jsx)(Y.Sheet,{open:e,onOpenChange:s,children:(0,t.jsxs)(Y.SheetContent,{side:"bottom",showCloseButton:!1,className:"rounded-t-xl",children:[(0,t.jsx)("div",{className:"mx-auto mt-2 h-1.5 w-12 rounded-full bg-muted-foreground/20"}),(0,t.jsx)("div",{className:"px-4 pt-4 pb-6",children:(0,t.jsx)(X.MetaDetail,{title:a.title,sessionId:o,createdAt:a.createdAt,updatedAt:a.updatedAt,fileSize:a.fileSize,userCount:a.userCount,assistantCount:a.assistantCount,toolCount:n,toolBreakdown:l,inputTokens:a.inputTokens,outputTokens:a.outputTokens,totalCost:a.totalCost,currentContextTokens:a.currentContextTokens,contextWindowSize:a.contextWindowSize,usedPercentage:a.usedPercentage,model:a.model,branch:r,isBranchLoading:i,gitStatus:c,tmuxInfo:u})})]})});var Q=e.i(639530);let ee=({tabId:e,wsId:a,sessionName:n,claudeSessionId:l,cwd:r,sendStdin:u,terminalWsConnected:d,focusTerminal:f,focusInputRef:m,setInputValueRef:x,onCliStateChange:h,onInputVisibleChange:p,onRestartSession:b,onNewSession:g})=>{let j=(0,i.useTranslations)("terminal"),{prompts:C}=(0,Q.default)(),[y,k]=(0,s.useState)(null),[v,w]=(0,s.useState)(!1),N=(0,s.useRef)(void 0),T=(0,S.default)(t=>e?t.tabs[e]?.claudeProcess??null:null),P=(0,S.default)(t=>!e||(t.tabs[e]?.claudeInstalled??!0)),R=(0,S.default)(t=>e?t.tabs[e]?.cliState??"inactive":"inactive"),I=(0,S.default)(t=>e?t.tabs[e]?.compactingSince??null:null),D=(0,s.useCallback)(()=>{k(null)},[]),L=(0,s.useCallback)(e=>{k(null),c.toast.warning(j("resumeBlocked"),{description:e.processName?j("resumeBlockedProcess",{name:e.processName}):void 0})},[j]),E=(0,s.useCallback)(()=>{k(null),c.toast.error(j("resumeFailed"))},[j]),{entries:A,tasks:Y,sessionId:ee,jsonlPath:et,sessionSummary:es,initMeta:ea,sessionStats:en,claudeProcess:el,wsStatus:er,isLoading:ei,error:eo,loadMore:ec,hasMore:eu,retrySession:ed,sendResume:ef,addPendingUserMessage:em,removePendingUserMessage:ex}=(0,B.default)({sessionName:n,claudeSessionId:l,enabled:!!n,resumeCallbacks:{onResumeStarted:D,onResumeBlocked:L,onResumeError:E},onSync:e?t=>{let s=Date.now();null!==t.claudeProcess&&S.default.getState().setClaudeProcess(e,t.claudeProcess,s),t.claudeInstalled||S.default.getState().setClaudeInstalled(e,!1),S.default.getState().setTimelineLoading(e,t.isLoading)}:void 0,getCliState:e?()=>S.default.getState().tabs[e]?.cliState:void 0}),eh=e?T:el,{sessions:ep,hasMore:eb,isLoading:eg,isLoadingMore:ej,error:eC,refetch:ey,loadMore:eS}=(0,$.default)({tmuxSession:n,enabled:!!n&&!0!==eh,cwd:r}),ek=(0,s.useRef)(T);(0,s.useEffect)(()=>{let e=ek.current;ek.current=T,!0!==e&&!0===T&&!0!==el&&ed()},[T,el,ed]);let ev=(0,S.default)(t=>e?(0,S.selectSessionView)(t.tabs,e):"session-list"),{meta:ew}=(0,W.default)(A,es,ea,en),{branch:eN,isLoading:eT}=(0,O.default)(n),{status:eP}=(0,F.default)(n,v),eR=(0,H.default)(n,v),eI=(0,U.default)(et,v),eD=eI?{...ew,userCount:eI.userCount,assistantCount:eI.assistantCount}:ew,eL="timeline"===ev,eE=(0,M.default)("check"===ev,n);(0,s.useEffect)(()=>{h(R)},[R,h]),(0,s.useEffect)(()=>{p(eL)},[eL,p]);let eA=(0,s.useCallback)(()=>{N.current?.()},[]),ez=(0,s.useCallback)(e=>{x.current?.(e),m.current?.()},[x,m]),eB=(0,s.useCallback)(e=>{y||(k(e),ef(e,n))},[y,ef,n]);return P?null===T&&"check"!==ev?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):"check"===ev?(0,t.jsxs)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted",children:[(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)("span",{className:"mt-2 text-sm text-muted-foreground",children:l||ee?j("resumingSession"):j("creatingConversation")}),eE&&(eE.isBypassPrompt&&eE.options.length>0?(0,t.jsx)(K.default,{sessionName:n,options:eE.options,fallback:(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:j("checkTerminal")})}):(0,t.jsx)("span",{className:"mt-3 text-xs text-muted-foreground",children:j("checkTerminal")}))]}):"session-list"===ev?eg&&0===ep.length?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):0!==ep.length||eC?(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:(0,t.jsx)(V.default,{sessions:ep,isLoading:eg,isLoadingMore:ej,hasMore:eb,error:eC,resumingSessionId:y,onSelectSession:eB,onRefresh:ey,onLoadMore:eS,onNewSession:g})}):(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:(0,t.jsx)(_.default,{onNewSession:g})}):(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:[(0,t.jsxs)("div",{className:"flex shrink-0 cursor-pointer items-center justify-between border-b px-4 py-1.5 hover:bg-muted/30",role:"button",tabIndex:0,onClick:()=>w(!0),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),w(!0))},children:[(0,t.jsx)(X.MetaCompact,{title:ew.title,totalCost:ew.totalCost,branch:eN}),(0,t.jsx)(z.ChevronDown,{size:14,className:"shrink-0 text-muted-foreground"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1",children:(0,t.jsx)(q.default,{entries:A,tasks:Y,sessionId:ee,sessionName:n,tabId:e,initMeta:ea,sessionStats:en,cliState:R,compactingSince:I,wsStatus:er,isLoading:ei,error:eo,onRetry:ed,onLoadMore:ec,hasMore:eu,scrollToBottomRef:N})}),(0,t.jsxs)("div",{className:"shrink-0 pb-3",children:[(0,t.jsx)(G.default,{tabId:e,wsId:a,sessionName:n,claudeSessionId:l,cliState:R,sendStdin:u,terminalWsConnected:d,visible:eL,focusTerminal:f,focusInputRef:m,setInputValueRef:x,maxRows:3,onRestartSession:b,onSend:eA,onOptimisticSend:em,onAddPendingMessage:em,onRemovePendingMessage:ex}),(0,t.jsx)(J.default,{prompts:C,visible:eL,onSelect:ez})]}),(0,t.jsx)(Z,{open:v,onOpenChange:w,meta:eD,toolCount:eI?.toolCount??null,toolBreakdown:eI?.toolBreakdown??null,branch:eN,isBranchLoading:eT,sessionId:ee,gitStatus:eP,tmuxInfo:eR})]}):(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col items-center justify-center gap-3 bg-muted text-muted-foreground",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:j("installClaude")}),(0,t.jsx)("span",{className:"text-xs",children:j("installClaudeHint")})]})};var et=e.i(166229);let es="__CTRL__",ea="__SHIFT__",en={fontFamily:"MesloLGLDZ, monospace"},el=[{label:"Tab",value:" "},{label:"Esc",value:"\x1b"},{label:"Ctrl",value:es},{label:"Shift",value:ea},{label:"󱞥",value:"\r",nerd:!0},{label:"󰁝",value:"\x1b[A",nerd:!0},{label:"󰁅",value:"\x1b[B",nerd:!0},{label:"󰁍",value:"\x1b[D",nerd:!0},{label:"󰁔",value:"\x1b[C",nerd:!0},{label:"󰍴",value:"|",nerd:!0,rotate:!0},{label:"󰜥",value:"~",nerd:!0}],er=({sendStdin:e,terminalConnected:a})=>{let n=(0,i.useTranslations)("mobile"),[l,r]=(0,s.useState)(""),[o,c]=(0,s.useState)(!1),[d,f]=(0,s.useState)(!1),m=(0,s.useRef)(null),x=(0,s.useCallback)(()=>{let e=m.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,76)}px`)},[]);(0,s.useEffect)(()=>{x()},[l,x]);let h=(0,s.useCallback)(()=>{a&&(l&&e(l),e("\r"),r(""))},[l,e,a]),p=(0,s.useCallback)(t=>{let s=t.target.value;if(o&&s.length===l.length+1){let t=s[s.length-1].toLowerCase().charCodeAt(0);if(t>=97&&t<=122){e(String.fromCharCode(t-96)),c(!1);return}}if(d&&s.length===l.length+1){let e=s[s.length-1],t=e.toUpperCase();if(t!==e){r(l+t),f(!1);return}}r(s)},[o,d,l,e]),b=(0,s.useCallback)(t=>{t.value===es?c(e=>!e):t.value===ea?f(e=>!e):(e(t.value),o&&c(!1),d&&f(!1))},[o,d,e]);return(0,t.jsxs)("div",{className:"shrink-0 border-t border-border bg-background",children:[(0,t.jsxs)("div",{className:"flex items-end gap-2 px-3 py-2",children:[(0,t.jsx)("textarea",{ref:m,value:l,onChange:p,placeholder:o?"Ctrl + ...":d?"Shift + ...":n("commandPlaceholder"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1,rows:1,className:(0,v.cn)("flex-1 resize-none rounded-md border px-3 py-1.5 text-sm text-foreground outline-none placeholder:text-muted-foreground",o||d?"border-claude-active bg-claude-active/10":"border-border bg-black/5 focus:border-ring dark:bg-white/5"),style:{lineHeight:"20px",maxHeight:"76px",overflowY:"auto"}}),(0,t.jsx)(u.Button,{variant:"ghost",size:"sm",className:(0,v.cn)("h-8 w-8 shrink-0 p-0 text-muted-foreground hover:text-foreground",l.trim()&&"text-claude-active"),onClick:h,"aria-label":n("send"),children:(0,t.jsx)(et.SendHorizontal,{size:16})})]}),(0,t.jsx)("div",{className:"flex items-center gap-1 overflow-x-auto px-3 pb-2",style:{scrollbarWidth:"none",WebkitOverflowScrolling:"touch"},children:el.map(e=>(0,t.jsx)("button",{className:(0,v.cn)("shrink-0 rounded-md border px-2.5 py-1 text-xs font-medium transition-colors",e.value===es&&o||e.value===ea&&d?"border-claude-active bg-claude-active/20 text-claude-active":"border-border bg-muted/50 text-muted-foreground active:bg-muted"),onClick:()=>b(e),children:(0,t.jsx)("span",{className:(0,v.cn)("inline-block",e.rotate&&"rotate-90"),style:e.nerd?en:void 0,children:e.label})},e.label))})]})};var ei=e.i(251748),eo=e.i(610782),ec=e.i(117369),eu=e.i(31050);let ed={write:()=>{},reset:()=>{},fit:()=>({cols:40,rows:24}),focus:()=>{}},ef={sendStdin:()=>{},sendResize:()=>{}},em=({paneId:e,tabs:a,activeTabId:n,panelType:l,onCreateTab:c,onDeleteTab:f,onSwitchTab:m,onRemoveTabLocally:h,onCliStateChange:p,onOpenNewTabDialog:b})=>{let g=(0,i.useTranslations)("mobile"),j=(0,i.useTranslations)("terminal"),C=a.find(e=>e.id===n),y="claude-code"===l,k="web-browser"===l,w="diff"===l,N=(0,x.default)(e=>n?e.metadata[n]?.cwd:void 0),T=(0,d.useLayoutStore)(e=>e.workspaceId),{theme:z}=(0,ec.default)(),[B,M]=(0,s.useState)(!1),[$,W]=(0,s.useState)(!1),[O,F]=(0,s.useState)(!0),H=(0,s.useRef)(ed),U=(0,s.useRef)(ef),V=(0,s.useRef)(null),_=(0,s.useRef)(null),K=(0,s.useRef)(null),[q,G]=(0,s.useState)(null),J=(0,s.useRef)(null),X=(0,s.useRef)(!1),Y=(0,s.useRef)(a),Z=(0,s.useRef)(n);(0,s.useEffect)(()=>{Y.current=a,Z.current=n});let Q=(0,s.useCallback)(async()=>{let e=Z.current,t=e?Y.current.find(t=>t.id===e):null;if(t)try{let e=await fetch(`/api/layout/cwd?session=${t.sessionName}`);if(!e.ok)return;let{cwd:s}=await e.json();s&&x.default.getState().setCwd(t.id,s)}catch{}},[]),et=(0,s.useRef)(()=>{}),es=(0,s.useRef)(void 0),ea=(0,s.useRef)(void 0),en=(0,s.useRef)(null),el=(0,s.useRef)(""),em=(0,S.default)(e=>n?e.tabs[n]?.claudeProcess??null:null),ex=(0,S.default)(e=>n?(0,S.selectSessionView)(e.tabs,n):null),eh=(0,s.useCallback)(e=>{p?.(e)},[p]),ep=(0,s.useCallback)(e=>{},[]),eb=(0,s.useCallback)(e=>(0,eo.isAppShortcut)(e)?(e.preventDefault(),(0,eo.isClearShortcut)(e)&&et.current(),(0,eo.isFocusInputShortcut)(e)&&es.current?.(),!1):!(0,eo.isShiftEnter)(e)||(e.preventDefault(),U.current.sendStdin("\n"),!1),[]),{terminalRef:eg,write:ej,clear:eC,reset:ey,fit:eS,focus:ek,isReady:ev}=(0,D.default)({theme:z.colors,fontSize:y?void 0:11,onInput:e=>U.current.sendStdin(e),onResize:(e,t)=>{U.current.sendResize(e,t),X.current&&(J.current&&clearTimeout(J.current),J.current=setTimeout(()=>{X.current=!1,F(!0)},200))},onTitleChange:e=>{let t=Z.current;if(!t||e===el.current)return;el.current=e;let s=(0,ei.formatTabTitle)(e);if(x.default.getState().setTitle(t,s),(0,ei.isShellProcess)(e)&&en.current){let e=en.current;en.current=null,U.current.sendStdin(`${e}\r`)}let a=Y.current.find(e=>e.id===t);if(a){let e=S.default.getState().tabs[t]?.claudeProcessCheckedAt??0;fetch(`/api/check-claude?session=${a.sessionName}`).then(e=>e.json()).then(({running:s,checkedAt:n})=>{let l=S.default.getState().tabs[t];if(l&&l.claudeProcessCheckedAt!==e){l.claudeProcess!==s&&setTimeout(()=>{fetch(`/api/check-claude?session=${a.sessionName}`).then(e=>e.json()).then(({running:e,checkedAt:s})=>{S.default.getState().setClaudeProcess(t,e,s)}).catch(()=>{})},500);return}S.default.getState().setClaudeProcess(t,s,n)}).catch(()=>{})}Q()},customKeyEventHandler:eb});(0,s.useEffect)(()=>{et.current=eC});let ew=(0,s.useCallback)(async()=>{if(K.current)return;let t=Y.current,s=Z.current;if(!s)return;K.current=s;let a=[...t].sort((e,t)=>e.order-t.order),n=a.findIndex(e=>e.id===s),l=a[n+1]||a[n-1];l&&m(e,l.id);try{await f(e,s)}finally{K.current=null}},[e,m,f]),{status:eN,retryCount:eT,disconnectReason:eP,connect:eR,reconnect:eI,sendStdin:eD,sendWebStdin:eL,sendResize:eE}=(0,L.default)({onData:e=>H.current.write(e),onConnected:()=>{M(!0),G(Z.current),_.current=Z.current;let e=Z.current;e&&S.default.getState().setTerminalConnected(e,!0);let{cols:t,rows:s}=H.current.fit();U.current.sendResize(t,s),Q()},onSessionEnded:ew});(0,s.useEffect)(()=>{H.current={write:ej,reset:ey,fit:eS,focus:ek},U.current={sendStdin:eD,sendResize:eE}}),(0,s.useEffect)(()=>{ev||(V.current=null)},[ev]),(0,s.useEffect)(()=>{if(!ev||!n)return;let e=a.find(e=>e.id===n);if(e){if("web-browser"===e.panelType){V.current=null,el.current="";return}V.current!==e.sessionName&&(null!==V.current&&ey(),S.default.getState().initTab(n,{terminalConnected:!1,panelType:e.panelType}),V.current=e.sessionName,eR(e.sessionName))}},[ev,n]),(0,s.useEffect)(()=>{let e=Z.current;e&&S.default.getState().setTerminalConnected(e,"connected"===eN)},[eN]),(0,s.useEffect)(()=>{"disconnected"===eN&&B&&G(Z.current)},[eN,B]),(0,s.useEffect)(()=>{"disconnected"===eN&&B&&_.current&&_.current!==n&&a.some(e=>e.id===_.current)&&(V.current=null,m(e,_.current))},[eN]),(0,s.useEffect)(()=>{if(!ev||"connected"!==eN)return;let e=setTimeout(()=>{let{cols:e,rows:t}=eS();U.current.sendResize(e,t)},300);return()=>clearTimeout(e)},[eN]),(0,s.useEffect)(()=>{if(y){X.current=!1,J.current&&clearTimeout(J.current),Q();return}if(ev&&"connected"===eN)return X.current=!0,queueMicrotask(()=>F(!1)),J.current=setTimeout(()=>{X.current=!1,F(!0)},200),()=>{J.current&&clearTimeout(J.current),X.current=!1};queueMicrotask(()=>F(!0))},[y]);let eA=(0,s.useCallback)(async()=>{W(!0),await c(e),W(!1)},[e,c]),ez=(0,s.useCallback)(()=>{let e=eu.default.getState().dangerouslySkipPermissions,t=["--settings ~/.purplemux/hooks.json",T?`--append-system-prompt-file ~/.purplemux/workspaces/${T}/claude-prompt.md`:""].filter(Boolean).join(" "),s=`claude ${t}`;return e?`${s} --dangerously-skip-permissions`:s},[T]),eB=(0,s.useCallback)(()=>{"connected"===eN&&n&&(S.default.getState().setSessionView(n,"check"),eD(`${ez()}\r`))},[eN,eD,n,ez]),eM=(0,s.useCallback)(()=>{"connected"===eN&&n&&(en.current=ez(),S.default.getState().setSessionView(n,"check"),eD("/exit\r"))},[eN,eD,n,ez]);(0,s.useEffect)(()=>{if(!en.current||!0===em||"connected"!==eN||!(0,ei.isShellProcess)(el.current))return;let e=en.current;en.current=null,eD(`${e}\r`)},[em,eN,eD]);let e$=(0,s.useCallback)(t=>{n&&T&&fetch(`/api/layout/pane/${e}/tabs/${n}?workspace=${T}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({webUrl:t})}).catch(()=>{})},[n,e,T]),eW=0===a.length,eO=k||w||ev&&"connected"===eN&&!eW,eF=null!==n&&q!==n,eH=(0,s.useRef)(new Set);return(0,s.useEffect)(()=>{"disconnected"!==eN||"session-not-found"!==eP||eF||!n||!C||"terminal"!==(C.panelType??"terminal")||C.lastCommand||eH.current.has(n)||(eH.current.add(n),(async()=>{await d.useLayoutStore.getState().restartTabInPane(e,n)&&eI()})())},[eN,eP,n,C,eF,e,eI]),(0,t.jsxs)("div",{className:"relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",style:{backgroundColor:z.colors.background,overscrollBehavior:"none"},children:[k&&n&&(0,t.jsx)(R.default,{initialUrl:C?.webUrl,onUrlChange:e$},n),w&&C&&(0,t.jsx)(I.default,{sessionName:C.sessionName},C.sessionName),y&&C&&(0,t.jsx)(ee,{tabId:n??void 0,wsId:T??void 0,sessionName:C.sessionName,claudeSessionId:C.claudeSessionId,cwd:N,sendStdin:eL,terminalWsConnected:"connected"===eN,focusTerminal:ek,focusInputRef:es,setInputValueRef:ea,onCliStateChange:eh,onInputVisibleChange:ep,onRestartSession:eM,onNewSession:eB}),!k&&!w&&(0,t.jsx)(E.default,{ref:eg,className:(0,v.cn)(!y&&"transition-opacity duration-150",y?"absolute inset-0 pointer-events-none opacity-0":"min-h-0 flex-1",!y&&eO&&O?"opacity-100":"",y||eO&&O?"":"opacity-0")}),!y&&!k&&!w&&"connected"===eN&&(0,t.jsx)(er,{sendStdin:eL,terminalConnected:"connected"===eN}),eW&&(0,t.jsx)("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3",children:(0,t.jsxs)(u.Button,{className:"gap-1.5",onClick:b??eA,disabled:$,children:[$?(0,t.jsx)(o.default,{className:"h-3 w-3"}):(0,t.jsx)(r.Plus,{className:"h-3.5 w-3.5"}),j("openNewTab")]})}),!eW&&!k&&"disconnected"===eN&&!eF&&(0,t.jsxs)("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3",children:[(0,t.jsx)(P.WifiOff,{className:"h-5 w-5 text-muted-foreground"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"max-connections"===eP?g("disconnectedMaxConnections"):"pty-error"===eP?g("disconnectedPtyError"):"session-not-found"===eP?j("disconnectedSessionNotFound"):g("cannotConnectServer")}),"session-not-found"===eP&&n?(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(u.Button,{variant:"outline",size:"sm",onClick:async()=>{await d.useLayoutStore.getState().restartTabInPane(e,n)&&eI()},children:g("restart")}),(0,t.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>f(e,n),children:j("closeTabLabel")})]}):(0,t.jsx)(u.Button,{variant:"outline",size:"sm",onClick:eI,children:g("reconnect")})]}),!eW&&!k&&!w&&!(y&&"check"===ex)&&(0,t.jsx)(A.default,{status:eN,retryCount:eT,disconnectReason:eP,onReconnect:eI})]})};var ex=e.i(875284),eh=e.i(296202);let ep=({open:e,onOpenChange:a,onCreateTab:n})=>{let l=(0,i.useTranslations)("terminal"),r=(0,i.useTranslations)("mobile"),[c,u]=(0,s.useState)(null),d=[{key:"claude-new",type:"claude-code",icon:(0,t.jsx)(g.default,{className:"h-5 w-5"}),label:l("claudeNewConversation"),startClaude:!0},{key:"claude",type:"claude-code",icon:(0,t.jsx)(g.default,{className:"h-5 w-5"}),label:l("claudeSessionList")},{key:"terminal",type:"terminal",icon:(0,t.jsx)(ex.Terminal,{className:"h-5 w-5 text-muted-foreground"}),label:"Terminal"},{key:"diff",type:"diff",icon:(0,t.jsx)(p.GitCompareArrows,{className:"h-5 w-5 text-muted-foreground"}),label:"Diff"}],f=async e=>{u(e.key),"startClaude"in e&&e.startClaude?await n(e.type,{command:"claude-new"}):await n(e.type),u(null),a(!1)};return(0,t.jsx)(eh.Dialog,{open:e,onOpenChange:a,children:(0,t.jsxs)(eh.DialogContent,{className:"w-[calc(100%-2rem)] max-w-xs gap-2 rounded-xl p-4",children:[(0,t.jsx)(eh.DialogHeader,{children:(0,t.jsx)(eh.DialogTitle,{className:"text-sm font-medium",children:r("newTab")})}),(0,t.jsx)("div",{className:"grid grid-cols-2 gap-2",children:d.map(e=>(0,t.jsxs)("button",{className:"flex aspect-square flex-col items-center justify-center gap-2 rounded-lg border border-border bg-background text-foreground transition-colors active:bg-accent disabled:pointer-events-none disabled:opacity-50",disabled:null!==c,onClick:()=>f(e),children:[c===e.key?(0,t.jsx)(o.default,{className:"h-4 w-4"}):e.icon,(0,t.jsx)("span",{className:"text-xs",children:e.label})]},e.key))})]})})};var eb=e.i(982960),eg=e.i(157016),ej=e.i(566736);e.s(["default",0,()=>{let e=(0,i.useTranslations)("terminal"),h=(0,i.useTranslations)("mobile"),p=(0,i.useTranslations)("common"),b=(0,m.default)(e=>e.isLoading),g=(0,m.default)(e=>e.error),j=(0,m.default)(e=>e.activeWorkspaceId),C=(0,m.default)(e=>e.workspaces).length,y=(0,s.useRef)(null),k=(0,s.useCallback)(()=>{let t=y.current;t&&(m.default.getState().switchWorkspace(t),c.toast.error(e("cannotSwitch")))},[e]),v=(0,d.default)({workspaceId:j,onFetchError:k}),w=(0,s.useMemo)(()=>v.layout?(0,f.collectPanes)(v.layout.root):[],[v.layout]),N=!!(v.layout&&!v.isLoading&&w.every(e=>0===e.tabs.length)),P=v.layout?.updatedAt,R=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!v.layout||!P||R.current===P)return;R.current=P;let e={};for(let t of(0,f.collectPanes)(v.layout.root))for(let s of t.tabs)(s.title||s.cwd)&&(e[s.id]={title:s.title,cwd:s.cwd});x.default.getState().hydrate(e)},[P]),(0,s.useEffect)(()=>{if(!v.layout)return;let e=new Set((0,f.collectPanes)(v.layout.root).flatMap(e=>e.tabs.map(e=>e.id)));x.default.getState().retainOnly(e)},[v.layout]),(0,ej.useAutoDeleteEmptyWorkspace)(N,v.clearLayout);let I=v.layout?.activePaneId??null,D=(I?w.find(e=>e.id===I):null)??w[0]??null,L=D?.id??null,E=D?.activeTabId??null,A=D?.tabs.find(e=>e.id===E)??null,z=A?.panelType??"terminal",B=(0,s.useCallback)(e=>{let{activeWorkspaceId:t}=m.default.getState();e!==t&&(y.current=t,x.default.getState().reset(),v.clearLayout(),m.default.getState().switchWorkspace(e))},[v]);(0,s.useEffect)(()=>(eg.default.getState().register({onSelectWorkspace:B}),()=>eg.default.getState().unregister()),[B]);let[M,$]=(0,s.useState)(!1),[W,O]=(0,s.useState)("inactive"),F=(0,s.useCallback)(e=>{O(e)},[]);(0,s.useEffect)(()=>{E&&(0,eb.dismissTab)(E)},[E]),(0,s.useEffect)(()=>{E&&"claude-code"===z&&"inactive"!==W&&"idle"===W&&(0,eb.dismissTab)(E)},[E,W,z]);let H=(0,S.default)(e=>{if(!E)return!1;let t=e.tabs[E];return t?.cliState==="ready-for-review"||t?.cliState==="needs-input"});(0,s.useEffect)(()=>{H&&E&&(0,eb.dismissTab)(E)},[H,E]);let U=(0,x.default)(e=>E?e.metadata[E]:void 0),V=(0,s.useMemo)(()=>{if(!A)return"";if(A.name)return A.name;let e=U?.title||A.title,t=e?(0,ei.formatTabTitle)(e):"";return t||`Tab ${A.order+1}`},[A,U]),_=(0,s.useCallback)(e=>{D&&E&&v.updateTabPanelType(D.id,E,e)},[D,E,v]),K=(0,s.useCallback)(()=>{$(!0)},[]),q=(0,s.useCallback)(async(e,t)=>{let s;if(!D)return;if(t?.command==="claude-new"){let e=eu.default.getState().dangerouslySkipPermissions,t=["--settings ~/.purplemux/hooks.json",j?`--append-system-prompt-file ~/.purplemux/workspaces/${j}/claude-prompt.md`:""].filter(Boolean).join(" ");s=e?`claude ${t} --dangerously-skip-permissions`:`claude ${t}`}let a=await v.createTabInPane(D.id,e,s);a&&(S.default.getState().initTab(a.id,{panelType:e,workspaceId:j??""}),t?.command==="claude-new"&&S.default.getState().setSessionView(a.id,"check"))},[D,v,j]),G=(0,s.useCallback)(()=>{D&&E&&v.deleteTabInPane(D.id,E)},[D,E,v]);return b?(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center",children:[(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)("span",{className:"mt-3 text-sm text-muted-foreground",children:e("connecting")})]}):g&&!C?(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3",children:[(0,t.jsx)(a.AlertTriangle,{className:"h-5 w-5 text-ui-amber"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:g}),(0,t.jsxs)(u.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:m.default.getState().fetchWorkspaces,children:[(0,t.jsx)(n.RefreshCw,{className:"h-3.5 w-3.5"}),p("retry")]})]}):j||b||g?!v.layout||v.isLoading?(0,t.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):v.error&&!v.isLoading?(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3",children:[(0,t.jsx)(a.AlertTriangle,{className:"h-5 w-5 text-ui-amber"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:v.error}),(0,t.jsxs)(u.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>v.fetchLayout(),children:[(0,t.jsx)(n.RefreshCw,{className:"h-3.5 w-3.5"}),p("retry")]})]}):(0,t.jsxs)(t.Fragment,{children:[D&&E&&(0,t.jsx)(T,{tabId:E,tabName:V,sessionName:A?.sessionName??null,panelType:z,onSwitchPanelType:_,onCreateTab:K,onClose:G},E),D&&E&&(0,t.jsx)(em,{paneId:D.id,tabs:D.tabs,activeTabId:E,panelType:z,onCreateTab:v.createTabInPane,onDeleteTab:v.deleteTabInPane,onSwitchTab:v.switchTabInPane,onRemoveTabLocally:v.removeTabLocally,onUpdateTabPanelType:v.updateTabPanelType,onCliStateChange:F,onOpenNewTabDialog:K},`${L}-${E}`),(0,t.jsx)(ep,{open:M,onOpenChange:$,onCreateTab:q})]}):(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,t.jsx)(l.Monitor,{className:"h-8 w-8 text-muted-foreground"}),(0,t.jsx)("span",{className:"text-sm font-medium text-muted-foreground",children:h("noWorkspace")}),(0,t.jsxs)(u.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:async()=>{let e=await m.default.getState().createWorkspace("");e&&m.default.getState().switchWorkspace(e.id)},children:[(0,t.jsx)(r.Plus,{className:"h-3.5 w-3.5"}),e("newWorkspace")]})]})}],432270)},938280,e=>{e.n(e.i(432270))}]);