claude-code-plus-plus 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/dist/cli/commands/index.js +5 -1
  2. package/dist/cli/commands/index.js.map +1 -1
  3. package/dist/cli/commands/start.js +4 -1
  4. package/dist/cli/commands/start.js.map +1 -1
  5. package/dist/cli/index.js +18 -3
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/cli/parser.js +8 -3
  8. package/dist/cli/parser.js.map +1 -1
  9. package/dist/cli/validators.js +30 -20
  10. package/dist/cli/validators.js.map +1 -1
  11. package/dist/config/defaults.js +10 -5
  12. package/dist/config/defaults.js.map +1 -1
  13. package/dist/config/index.js +24 -4
  14. package/dist/config/index.js.map +1 -1
  15. package/dist/config/loader.js +29 -20
  16. package/dist/config/loader.js.map +1 -1
  17. package/dist/config/paths.js +30 -21
  18. package/dist/config/paths.js.map +1 -1
  19. package/dist/config/schema.js +6 -2
  20. package/dist/config/schema.js.map +1 -1
  21. package/dist/git/index.js +6 -1
  22. package/dist/git/index.js.map +1 -1
  23. package/dist/git/worktree.js +18 -13
  24. package/dist/git/worktree.js.map +1 -1
  25. package/dist/index.js +41 -6
  26. package/dist/index.js.map +1 -1
  27. package/dist/launcher/index.d.ts.map +1 -1
  28. package/dist/launcher/index.js +60 -26
  29. package/dist/launcher/index.js.map +1 -1
  30. package/dist/platform/clipboard.js +22 -15
  31. package/dist/platform/clipboard.js.map +1 -1
  32. package/dist/platform/detector.js +37 -22
  33. package/dist/platform/detector.js.map +1 -1
  34. package/dist/platform/index.js +42 -4
  35. package/dist/platform/index.js.map +1 -1
  36. package/dist/platform/paths.js +61 -48
  37. package/dist/platform/paths.js.map +1 -1
  38. package/dist/platform/shell.js +35 -27
  39. package/dist/platform/shell.js.map +1 -1
  40. package/dist/sidebar/app.d.ts.map +1 -1
  41. package/dist/sidebar/app.js +73 -39
  42. package/dist/sidebar/app.js.map +1 -1
  43. package/dist/sidebar/index.js +4 -2
  44. package/dist/sidebar/index.js.map +1 -1
  45. package/dist/sidebar/input.js +12 -5
  46. package/dist/sidebar/input.js.map +1 -1
  47. package/dist/sidebar/render.js +102 -90
  48. package/dist/sidebar/render.js.map +1 -1
  49. package/dist/terminal/bar-handler.js +9 -7
  50. package/dist/terminal/bar-handler.js.map +1 -1
  51. package/dist/terminal/bar-render.js +6 -2
  52. package/dist/terminal/bar-render.js.map +1 -1
  53. package/dist/terminal/index.js +6 -1
  54. package/dist/terminal/index.js.map +1 -1
  55. package/dist/tmux/commands.js +18 -11
  56. package/dist/tmux/commands.js.map +1 -1
  57. package/dist/tmux/index.js +33 -7
  58. package/dist/tmux/index.js.map +1 -1
  59. package/dist/tmux/pane.js +76 -51
  60. package/dist/tmux/pane.js.map +1 -1
  61. package/dist/types.js +4 -1
  62. package/dist/types.js.map +1 -1
  63. package/dist/utils/async.js +16 -7
  64. package/dist/utils/async.js.map +1 -1
  65. package/dist/utils/errors.js +31 -14
  66. package/dist/utils/errors.js.map +1 -1
  67. package/dist/utils/id.js +19 -10
  68. package/dist/utils/id.js.map +1 -1
  69. package/dist/utils/index.js +65 -6
  70. package/dist/utils/index.js.map +1 -1
  71. package/dist/utils/logger.js +17 -10
  72. package/dist/utils/logger.js.map +1 -1
  73. package/dist/utils/string.js +22 -10
  74. package/dist/utils/string.js.map +1 -1
  75. package/dist/utils/validation.js +28 -13
  76. package/dist/utils/validation.js.map +1 -1
  77. package/package.json +4 -4
  78. package/dist/app.d.ts +0 -52
  79. package/dist/app.d.ts.map +0 -1
  80. package/dist/app.js +0 -318
  81. package/dist/app.js.map +0 -1
  82. package/dist/core/index.d.ts +0 -14
  83. package/dist/core/index.d.ts.map +0 -1
  84. package/dist/core/index.js +0 -14
  85. package/dist/core/index.js.map +0 -1
  86. package/dist/core/session/index.d.ts +0 -7
  87. package/dist/core/session/index.d.ts.map +0 -1
  88. package/dist/core/session/index.js +0 -6
  89. package/dist/core/session/index.js.map +0 -1
  90. package/dist/core/session/session-manager.d.ts +0 -46
  91. package/dist/core/session/session-manager.d.ts.map +0 -1
  92. package/dist/core/session/session-manager.js +0 -245
  93. package/dist/core/session/session-manager.js.map +0 -1
  94. package/dist/core/session/session.d.ts +0 -44
  95. package/dist/core/session/session.d.ts.map +0 -1
  96. package/dist/core/session/session.js +0 -78
  97. package/dist/core/session/session.js.map +0 -1
  98. package/dist/core/terminal/index.d.ts +0 -7
  99. package/dist/core/terminal/index.d.ts.map +0 -1
  100. package/dist/core/terminal/index.js +0 -6
  101. package/dist/core/terminal/index.js.map +0 -1
  102. package/dist/core/terminal/terminal-manager.d.ts +0 -36
  103. package/dist/core/terminal/terminal-manager.d.ts.map +0 -1
  104. package/dist/core/terminal/terminal-manager.js +0 -182
  105. package/dist/core/terminal/terminal-manager.js.map +0 -1
  106. package/dist/core/terminal/terminal.d.ts +0 -27
  107. package/dist/core/terminal/terminal.d.ts.map +0 -1
  108. package/dist/core/terminal/terminal.js +0 -38
  109. package/dist/core/terminal/terminal.js.map +0 -1
  110. package/dist/core/workspace/index.d.ts +0 -7
  111. package/dist/core/workspace/index.d.ts.map +0 -1
  112. package/dist/core/workspace/index.js +0 -6
  113. package/dist/core/workspace/index.js.map +0 -1
  114. package/dist/core/workspace/workspace-manager.d.ts +0 -59
  115. package/dist/core/workspace/workspace-manager.d.ts.map +0 -1
  116. package/dist/core/workspace/workspace-manager.js +0 -224
  117. package/dist/core/workspace/workspace-manager.js.map +0 -1
  118. package/dist/core/workspace/workspace.d.ts +0 -56
  119. package/dist/core/workspace/workspace.d.ts.map +0 -1
  120. package/dist/core/workspace/workspace.js +0 -96
  121. package/dist/core/workspace/workspace.js.map +0 -1
  122. package/dist/core/worktree/index.d.ts +0 -7
  123. package/dist/core/worktree/index.d.ts.map +0 -1
  124. package/dist/core/worktree/index.js +0 -6
  125. package/dist/core/worktree/index.js.map +0 -1
  126. package/dist/core/worktree/worktree-manager.d.ts +0 -47
  127. package/dist/core/worktree/worktree-manager.d.ts.map +0 -1
  128. package/dist/core/worktree/worktree-manager.js +0 -170
  129. package/dist/core/worktree/worktree-manager.js.map +0 -1
  130. package/dist/core/worktree/worktree.d.ts +0 -35
  131. package/dist/core/worktree/worktree.d.ts.map +0 -1
  132. package/dist/core/worktree/worktree.js +0 -50
  133. package/dist/core/worktree/worktree.js.map +0 -1
  134. package/dist/core/worktree-manager.d.ts +0 -26
  135. package/dist/core/worktree-manager.d.ts.map +0 -1
  136. package/dist/core/worktree-manager.js +0 -177
  137. package/dist/core/worktree-manager.js.map +0 -1
  138. package/dist/events/bus.d.ts +0 -76
  139. package/dist/events/bus.d.ts.map +0 -1
  140. package/dist/events/bus.js +0 -223
  141. package/dist/events/bus.js.map +0 -1
  142. package/dist/events/handlers/index.d.ts +0 -28
  143. package/dist/events/handlers/index.d.ts.map +0 -1
  144. package/dist/events/handlers/index.js +0 -44
  145. package/dist/events/handlers/index.js.map +0 -1
  146. package/dist/events/handlers/session-events.d.ts +0 -12
  147. package/dist/events/handlers/session-events.d.ts.map +0 -1
  148. package/dist/events/handlers/session-events.js +0 -38
  149. package/dist/events/handlers/session-events.js.map +0 -1
  150. package/dist/events/handlers/terminal-events.d.ts +0 -12
  151. package/dist/events/handlers/terminal-events.d.ts.map +0 -1
  152. package/dist/events/handlers/terminal-events.js +0 -37
  153. package/dist/events/handlers/terminal-events.js.map +0 -1
  154. package/dist/events/handlers/ui-events.d.ts +0 -11
  155. package/dist/events/handlers/ui-events.d.ts.map +0 -1
  156. package/dist/events/handlers/ui-events.js +0 -202
  157. package/dist/events/handlers/ui-events.js.map +0 -1
  158. package/dist/events/index.d.ts +0 -9
  159. package/dist/events/index.d.ts.map +0 -1
  160. package/dist/events/index.js +0 -10
  161. package/dist/events/index.js.map +0 -1
  162. package/dist/multiplexer/base.d.ts +0 -73
  163. package/dist/multiplexer/base.d.ts.map +0 -1
  164. package/dist/multiplexer/base.js +0 -68
  165. package/dist/multiplexer/base.js.map +0 -1
  166. package/dist/multiplexer/factory.d.ts +0 -28
  167. package/dist/multiplexer/factory.d.ts.map +0 -1
  168. package/dist/multiplexer/factory.js +0 -72
  169. package/dist/multiplexer/factory.js.map +0 -1
  170. package/dist/multiplexer/index.d.ts +0 -14
  171. package/dist/multiplexer/index.d.ts.map +0 -1
  172. package/dist/multiplexer/index.js +0 -15
  173. package/dist/multiplexer/index.js.map +0 -1
  174. package/dist/multiplexer/tmux/index.d.ts +0 -9
  175. package/dist/multiplexer/tmux/index.d.ts.map +0 -1
  176. package/dist/multiplexer/tmux/index.js +0 -7
  177. package/dist/multiplexer/tmux/index.js.map +0 -1
  178. package/dist/multiplexer/tmux/tmux-commands.d.ts +0 -96
  179. package/dist/multiplexer/tmux/tmux-commands.d.ts.map +0 -1
  180. package/dist/multiplexer/tmux/tmux-commands.js +0 -282
  181. package/dist/multiplexer/tmux/tmux-commands.js.map +0 -1
  182. package/dist/multiplexer/tmux/tmux-config.d.ts +0 -57
  183. package/dist/multiplexer/tmux/tmux-config.d.ts.map +0 -1
  184. package/dist/multiplexer/tmux/tmux-config.js +0 -103
  185. package/dist/multiplexer/tmux/tmux-config.js.map +0 -1
  186. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts +0 -94
  187. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts.map +0 -1
  188. package/dist/multiplexer/tmux/tmux-multiplexer.js +0 -302
  189. package/dist/multiplexer/tmux/tmux-multiplexer.js.map +0 -1
  190. package/dist/multiplexer/windows/index.d.ts +0 -5
  191. package/dist/multiplexer/windows/index.d.ts.map +0 -1
  192. package/dist/multiplexer/windows/index.js +0 -5
  193. package/dist/multiplexer/windows/index.js.map +0 -1
  194. package/dist/multiplexer/windows/windows-multiplexer.d.ts +0 -61
  195. package/dist/multiplexer/windows/windows-multiplexer.d.ts.map +0 -1
  196. package/dist/multiplexer/windows/windows-multiplexer.js +0 -151
  197. package/dist/multiplexer/windows/windows-multiplexer.js.map +0 -1
  198. package/dist/services/claude/claude-detector.d.ts +0 -37
  199. package/dist/services/claude/claude-detector.d.ts.map +0 -1
  200. package/dist/services/claude/claude-detector.js +0 -83
  201. package/dist/services/claude/claude-detector.js.map +0 -1
  202. package/dist/services/claude/claude-service.d.ts +0 -57
  203. package/dist/services/claude/claude-service.d.ts.map +0 -1
  204. package/dist/services/claude/claude-service.js +0 -108
  205. package/dist/services/claude/claude-service.js.map +0 -1
  206. package/dist/services/claude/index.d.ts +0 -7
  207. package/dist/services/claude/index.d.ts.map +0 -1
  208. package/dist/services/claude/index.js +0 -6
  209. package/dist/services/claude/index.js.map +0 -1
  210. package/dist/services/git/branch-service.d.ts +0 -64
  211. package/dist/services/git/branch-service.d.ts.map +0 -1
  212. package/dist/services/git/branch-service.js +0 -217
  213. package/dist/services/git/branch-service.js.map +0 -1
  214. package/dist/services/git/git-service.d.ts +0 -44
  215. package/dist/services/git/git-service.d.ts.map +0 -1
  216. package/dist/services/git/git-service.js +0 -145
  217. package/dist/services/git/git-service.js.map +0 -1
  218. package/dist/services/git/index.d.ts +0 -8
  219. package/dist/services/git/index.d.ts.map +0 -1
  220. package/dist/services/git/index.js +0 -7
  221. package/dist/services/git/index.js.map +0 -1
  222. package/dist/services/git/worktree-service.d.ts +0 -61
  223. package/dist/services/git/worktree-service.d.ts.map +0 -1
  224. package/dist/services/git/worktree-service.js +0 -243
  225. package/dist/services/git/worktree-service.js.map +0 -1
  226. package/dist/services/index.d.ts +0 -12
  227. package/dist/services/index.d.ts.map +0 -1
  228. package/dist/services/index.js +0 -12
  229. package/dist/services/index.js.map +0 -1
  230. package/dist/services/process/index.d.ts +0 -8
  231. package/dist/services/process/index.d.ts.map +0 -1
  232. package/dist/services/process/index.js +0 -6
  233. package/dist/services/process/index.js.map +0 -1
  234. package/dist/services/process/process-monitor.d.ts +0 -98
  235. package/dist/services/process/process-monitor.d.ts.map +0 -1
  236. package/dist/services/process/process-monitor.js +0 -173
  237. package/dist/services/process/process-monitor.js.map +0 -1
  238. package/dist/services/process/process-spawner.d.ts +0 -55
  239. package/dist/services/process/process-spawner.d.ts.map +0 -1
  240. package/dist/services/process/process-spawner.js +0 -93
  241. package/dist/services/process/process-spawner.js.map +0 -1
  242. package/dist/sidebar.d.ts +0 -13
  243. package/dist/sidebar.d.ts.map +0 -1
  244. package/dist/sidebar.js +0 -1535
  245. package/dist/sidebar.js.map +0 -1
  246. package/dist/state/actions.d.ts +0 -49
  247. package/dist/state/actions.d.ts.map +0 -1
  248. package/dist/state/actions.js +0 -512
  249. package/dist/state/actions.js.map +0 -1
  250. package/dist/state/index.d.ts +0 -16
  251. package/dist/state/index.d.ts.map +0 -1
  252. package/dist/state/index.js +0 -28
  253. package/dist/state/index.js.map +0 -1
  254. package/dist/state/middleware/index.d.ts +0 -7
  255. package/dist/state/middleware/index.d.ts.map +0 -1
  256. package/dist/state/middleware/index.js +0 -6
  257. package/dist/state/middleware/index.js.map +0 -1
  258. package/dist/state/middleware/logger.d.ts +0 -22
  259. package/dist/state/middleware/logger.d.ts.map +0 -1
  260. package/dist/state/middleware/logger.js +0 -45
  261. package/dist/state/middleware/logger.js.map +0 -1
  262. package/dist/state/middleware/persistence.d.ts +0 -29
  263. package/dist/state/middleware/persistence.d.ts.map +0 -1
  264. package/dist/state/middleware/persistence.js +0 -71
  265. package/dist/state/middleware/persistence.js.map +0 -1
  266. package/dist/state/persistence/file-adapter.d.ts +0 -48
  267. package/dist/state/persistence/file-adapter.d.ts.map +0 -1
  268. package/dist/state/persistence/file-adapter.js +0 -96
  269. package/dist/state/persistence/file-adapter.js.map +0 -1
  270. package/dist/state/persistence/index.d.ts +0 -8
  271. package/dist/state/persistence/index.d.ts.map +0 -1
  272. package/dist/state/persistence/index.js +0 -6
  273. package/dist/state/persistence/index.js.map +0 -1
  274. package/dist/state/persistence/serializer.d.ts +0 -41
  275. package/dist/state/persistence/serializer.d.ts.map +0 -1
  276. package/dist/state/persistence/serializer.js +0 -114
  277. package/dist/state/persistence/serializer.js.map +0 -1
  278. package/dist/state/selectors.d.ts +0 -67
  279. package/dist/state/selectors.d.ts.map +0 -1
  280. package/dist/state/selectors.js +0 -177
  281. package/dist/state/selectors.js.map +0 -1
  282. package/dist/state/store.d.ts +0 -86
  283. package/dist/state/store.d.ts.map +0 -1
  284. package/dist/state/store.js +0 -161
  285. package/dist/state/store.js.map +0 -1
  286. package/dist/state/types.d.ts +0 -269
  287. package/dist/state/types.d.ts.map +0 -1
  288. package/dist/state/types.js +0 -7
  289. package/dist/state/types.js.map +0 -1
  290. package/dist/state.d.ts +0 -53
  291. package/dist/state.d.ts.map +0 -1
  292. package/dist/state.js +0 -101
  293. package/dist/state.js.map +0 -1
  294. package/dist/terminal-manager.d.ts +0 -16
  295. package/dist/terminal-manager.d.ts.map +0 -1
  296. package/dist/terminal-manager.js +0 -364
  297. package/dist/terminal-manager.js.map +0 -1
  298. package/dist/tmux.d.ts +0 -163
  299. package/dist/tmux.d.ts.map +0 -1
  300. package/dist/tmux.js +0 -360
  301. package/dist/tmux.js.map +0 -1
  302. package/dist/types/config.d.ts +0 -103
  303. package/dist/types/config.d.ts.map +0 -1
  304. package/dist/types/config.js +0 -7
  305. package/dist/types/config.js.map +0 -1
  306. package/dist/types/entities.d.ts +0 -88
  307. package/dist/types/entities.d.ts.map +0 -1
  308. package/dist/types/entities.js +0 -8
  309. package/dist/types/entities.js.map +0 -1
  310. package/dist/types/events.d.ts +0 -156
  311. package/dist/types/events.d.ts.map +0 -1
  312. package/dist/types/events.js +0 -8
  313. package/dist/types/events.js.map +0 -1
  314. package/dist/types/index.d.ts +0 -11
  315. package/dist/types/index.d.ts.map +0 -1
  316. package/dist/types/index.js +0 -8
  317. package/dist/types/index.js.map +0 -1
  318. package/dist/types/multiplexer.d.ts +0 -238
  319. package/dist/types/multiplexer.d.ts.map +0 -1
  320. package/dist/types/multiplexer.js +0 -8
  321. package/dist/types/multiplexer.js.map +0 -1
  322. package/dist/ui/components/base.d.ts +0 -155
  323. package/dist/ui/components/base.d.ts.map +0 -1
  324. package/dist/ui/components/base.js +0 -269
  325. package/dist/ui/components/base.js.map +0 -1
  326. package/dist/ui/components/index.d.ts +0 -10
  327. package/dist/ui/components/index.d.ts.map +0 -1
  328. package/dist/ui/components/index.js +0 -10
  329. package/dist/ui/components/index.js.map +0 -1
  330. package/dist/ui/components/input-field.d.ts +0 -98
  331. package/dist/ui/components/input-field.d.ts.map +0 -1
  332. package/dist/ui/components/input-field.js +0 -274
  333. package/dist/ui/components/input-field.js.map +0 -1
  334. package/dist/ui/components/list.d.ts +0 -94
  335. package/dist/ui/components/list.d.ts.map +0 -1
  336. package/dist/ui/components/list.js +0 -294
  337. package/dist/ui/components/list.js.map +0 -1
  338. package/dist/ui/components/modal.d.ts +0 -83
  339. package/dist/ui/components/modal.d.ts.map +0 -1
  340. package/dist/ui/components/modal.js +0 -249
  341. package/dist/ui/components/modal.js.map +0 -1
  342. package/dist/ui/components/tabs.d.ts +0 -97
  343. package/dist/ui/components/tabs.d.ts.map +0 -1
  344. package/dist/ui/components/tabs.js +0 -252
  345. package/dist/ui/components/tabs.js.map +0 -1
  346. package/dist/ui/components/text.d.ts +0 -60
  347. package/dist/ui/components/text.d.ts.map +0 -1
  348. package/dist/ui/components/text.js +0 -224
  349. package/dist/ui/components/text.js.map +0 -1
  350. package/dist/ui/index.d.ts +0 -12
  351. package/dist/ui/index.d.ts.map +0 -1
  352. package/dist/ui/index.js +0 -18
  353. package/dist/ui/index.js.map +0 -1
  354. package/dist/ui/input/index.d.ts +0 -8
  355. package/dist/ui/input/index.d.ts.map +0 -1
  356. package/dist/ui/input/index.js +0 -8
  357. package/dist/ui/input/index.js.map +0 -1
  358. package/dist/ui/input/input-manager.d.ts +0 -83
  359. package/dist/ui/input/input-manager.d.ts.map +0 -1
  360. package/dist/ui/input/input-manager.js +0 -200
  361. package/dist/ui/input/input-manager.js.map +0 -1
  362. package/dist/ui/input/keybindings.d.ts +0 -47
  363. package/dist/ui/input/keybindings.d.ts.map +0 -1
  364. package/dist/ui/input/keybindings.js +0 -168
  365. package/dist/ui/input/keybindings.js.map +0 -1
  366. package/dist/ui/input/keyboard.d.ts +0 -24
  367. package/dist/ui/input/keyboard.d.ts.map +0 -1
  368. package/dist/ui/input/keyboard.js +0 -230
  369. package/dist/ui/input/keyboard.js.map +0 -1
  370. package/dist/ui/input/mouse.d.ts +0 -44
  371. package/dist/ui/input/mouse.d.ts.map +0 -1
  372. package/dist/ui/input/mouse.js +0 -161
  373. package/dist/ui/input/mouse.js.map +0 -1
  374. package/dist/ui/layout/box.d.ts +0 -63
  375. package/dist/ui/layout/box.d.ts.map +0 -1
  376. package/dist/ui/layout/box.js +0 -160
  377. package/dist/ui/layout/box.js.map +0 -1
  378. package/dist/ui/layout/constraints.d.ts +0 -77
  379. package/dist/ui/layout/constraints.d.ts.map +0 -1
  380. package/dist/ui/layout/constraints.js +0 -154
  381. package/dist/ui/layout/constraints.js.map +0 -1
  382. package/dist/ui/layout/flex.d.ts +0 -59
  383. package/dist/ui/layout/flex.d.ts.map +0 -1
  384. package/dist/ui/layout/flex.js +0 -163
  385. package/dist/ui/layout/flex.js.map +0 -1
  386. package/dist/ui/layout/index.d.ts +0 -7
  387. package/dist/ui/layout/index.d.ts.map +0 -1
  388. package/dist/ui/layout/index.js +0 -7
  389. package/dist/ui/layout/index.js.map +0 -1
  390. package/dist/ui/modals/delete-modal.d.ts +0 -27
  391. package/dist/ui/modals/delete-modal.d.ts.map +0 -1
  392. package/dist/ui/modals/delete-modal.js +0 -59
  393. package/dist/ui/modals/delete-modal.js.map +0 -1
  394. package/dist/ui/modals/index.d.ts +0 -7
  395. package/dist/ui/modals/index.d.ts.map +0 -1
  396. package/dist/ui/modals/index.js +0 -7
  397. package/dist/ui/modals/index.js.map +0 -1
  398. package/dist/ui/modals/input-modal.d.ts +0 -66
  399. package/dist/ui/modals/input-modal.d.ts.map +0 -1
  400. package/dist/ui/modals/input-modal.js +0 -185
  401. package/dist/ui/modals/input-modal.js.map +0 -1
  402. package/dist/ui/modals/quit-modal.d.ts +0 -30
  403. package/dist/ui/modals/quit-modal.d.ts.map +0 -1
  404. package/dist/ui/modals/quit-modal.js +0 -65
  405. package/dist/ui/modals/quit-modal.js.map +0 -1
  406. package/dist/ui/renderer/ansi.d.ts +0 -206
  407. package/dist/ui/renderer/ansi.d.ts.map +0 -1
  408. package/dist/ui/renderer/ansi.js +0 -318
  409. package/dist/ui/renderer/ansi.js.map +0 -1
  410. package/dist/ui/renderer/canvas.d.ts +0 -126
  411. package/dist/ui/renderer/canvas.d.ts.map +0 -1
  412. package/dist/ui/renderer/canvas.js +0 -346
  413. package/dist/ui/renderer/canvas.js.map +0 -1
  414. package/dist/ui/renderer/colors.d.ts +0 -65
  415. package/dist/ui/renderer/colors.d.ts.map +0 -1
  416. package/dist/ui/renderer/colors.js +0 -260
  417. package/dist/ui/renderer/colors.js.map +0 -1
  418. package/dist/ui/renderer/index.d.ts +0 -8
  419. package/dist/ui/renderer/index.d.ts.map +0 -1
  420. package/dist/ui/renderer/index.js +0 -8
  421. package/dist/ui/renderer/index.js.map +0 -1
  422. package/dist/ui/renderer/symbols.d.ts +0 -176
  423. package/dist/ui/renderer/symbols.d.ts.map +0 -1
  424. package/dist/ui/renderer/symbols.js +0 -246
  425. package/dist/ui/renderer/symbols.js.map +0 -1
  426. package/dist/ui/views/index.d.ts +0 -7
  427. package/dist/ui/views/index.d.ts.map +0 -1
  428. package/dist/ui/views/index.js +0 -7
  429. package/dist/ui/views/index.js.map +0 -1
  430. package/dist/ui/views/sidebar-view.d.ts +0 -89
  431. package/dist/ui/views/sidebar-view.d.ts.map +0 -1
  432. package/dist/ui/views/sidebar-view.js +0 -259
  433. package/dist/ui/views/sidebar-view.js.map +0 -1
  434. package/dist/ui/views/terminal-bar-view.d.ts +0 -67
  435. package/dist/ui/views/terminal-bar-view.d.ts.map +0 -1
  436. package/dist/ui/views/terminal-bar-view.js +0 -172
  437. package/dist/ui/views/terminal-bar-view.js.map +0 -1
  438. package/dist/ui/views/welcome-view.d.ts +0 -34
  439. package/dist/ui/views/welcome-view.d.ts.map +0 -1
  440. package/dist/ui/views/welcome-view.js +0 -116
  441. package/dist/ui/views/welcome-view.js.map +0 -1
@@ -1,249 +0,0 @@
1
- /**
2
- * Modal Component
3
- *
4
- * Base modal dialog container.
5
- */
6
- import { getTheme } from '../renderer/colors';
7
- import { centerInBounds } from '../layout';
8
- import { ContainerComponent } from './base';
9
- import { truncateWithEllipsis } from './text';
10
- // ============================================================================
11
- // Modal Component
12
- // ============================================================================
13
- export class Modal extends ContainerComponent {
14
- title = '';
15
- modalWidth = 50;
16
- modalHeight = 10;
17
- closable = true;
18
- closeHandler = null;
19
- constructor(props = {}) {
20
- super(props);
21
- this.title = props.title ?? '';
22
- this.modalWidth = props.width ?? 50;
23
- this.modalHeight = props.height ?? 10;
24
- this.closable = props.closable ?? true;
25
- }
26
- /**
27
- * Set modal title
28
- */
29
- setTitle(title) {
30
- this.title = title;
31
- }
32
- /**
33
- * Get modal title
34
- */
35
- getTitle() {
36
- return this.title;
37
- }
38
- /**
39
- * Set close handler
40
- */
41
- onClose(handler) {
42
- this.closeHandler = handler;
43
- }
44
- /**
45
- * Close the modal
46
- */
47
- close() {
48
- this.closeHandler?.();
49
- }
50
- getPreferredSize() {
51
- return {
52
- width: this.modalWidth,
53
- height: this.modalHeight,
54
- };
55
- }
56
- getMinSize() {
57
- return { width: 10, height: 5 };
58
- }
59
- /**
60
- * Get the content bounds (inside the modal border)
61
- */
62
- getContentBounds() {
63
- return {
64
- x: this.bounds.x + 2,
65
- y: this.bounds.y + 2,
66
- width: Math.max(0, this.bounds.width - 4),
67
- height: Math.max(0, this.bounds.height - 4),
68
- };
69
- }
70
- render(canvas, bounds) {
71
- if (!this.visible)
72
- return;
73
- const theme = getTheme();
74
- // Center modal in available space
75
- const size = this.getPreferredSize();
76
- const modalBounds = centerInBounds(bounds, {
77
- width: Math.min(size.width, bounds.width),
78
- height: Math.min(size.height, bounds.height),
79
- });
80
- // Store bounds for hit testing
81
- this.setBounds(modalBounds);
82
- // Draw background/overlay
83
- this.renderOverlay(canvas, bounds);
84
- // Draw modal box
85
- this.renderModalBox(canvas, modalBounds);
86
- // Draw title
87
- if (this.title) {
88
- this.renderTitle(canvas, modalBounds);
89
- }
90
- // Render children in content area
91
- const contentBounds = this.getContentBounds();
92
- for (const child of this.children) {
93
- if (child.visible) {
94
- child.render(canvas, contentBounds);
95
- }
96
- }
97
- }
98
- renderOverlay(canvas, bounds) {
99
- // Semi-transparent overlay effect (using dim characters)
100
- for (let y = bounds.y; y < bounds.y + bounds.height; y++) {
101
- for (let x = bounds.x; x < bounds.x + bounds.width; x++) {
102
- const cell = canvas.getCell(x, y);
103
- if (cell) {
104
- // Keep character but dim it
105
- canvas.setCell(x, y, cell.char, { ...cell.style, dim: true });
106
- }
107
- }
108
- }
109
- }
110
- renderModalBox(canvas, bounds) {
111
- const theme = getTheme();
112
- // Draw border
113
- canvas.drawBox(bounds.x, bounds.y, bounds.width, bounds.height, {
114
- border: 'round',
115
- borderColor: theme.modalBorder,
116
- fill: ' ',
117
- fillColor: theme.modalBg,
118
- });
119
- // Draw close button if closable
120
- if (this.closable && bounds.width > 4) {
121
- canvas.setCell(bounds.x + bounds.width - 3, bounds.y, '×', {
122
- fg: theme.textMuted.fg,
123
- bold: true,
124
- });
125
- }
126
- }
127
- renderTitle(canvas, bounds) {
128
- const theme = getTheme();
129
- const maxTitleWidth = bounds.width - 6; // -4 for border, -2 for close button
130
- if (maxTitleWidth <= 0)
131
- return;
132
- const displayTitle = truncateWithEllipsis(this.title, maxTitleWidth);
133
- const titleX = bounds.x + 2;
134
- canvas.drawText(titleX, bounds.y, ` ${displayTitle} `, {
135
- fg: theme.text.fg,
136
- bold: true,
137
- });
138
- }
139
- handleKey(event) {
140
- // Handle escape to close
141
- if (event.key === 'escape' && this.closable) {
142
- this.close();
143
- return true;
144
- }
145
- // Delegate to children
146
- for (const child of this.children) {
147
- if (child.focused && child.handleKey(event)) {
148
- return true;
149
- }
150
- }
151
- return false;
152
- }
153
- isFocusable() {
154
- return this.visible;
155
- }
156
- }
157
- /**
158
- * Create a Modal component
159
- */
160
- export function createModal(props = {}) {
161
- return new Modal(props);
162
- }
163
- export class ConfirmModal extends Modal {
164
- message = '';
165
- confirmLabel = 'Confirm';
166
- cancelLabel = 'Cancel';
167
- dangerous = false;
168
- selectedButton = 0;
169
- confirmHandler = null;
170
- constructor(props = {}) {
171
- super({ ...props, height: props.height ?? 7 });
172
- this.message = props.message ?? '';
173
- this.confirmLabel = props.confirmLabel ?? 'Confirm';
174
- this.cancelLabel = props.cancelLabel ?? 'Cancel';
175
- this.dangerous = props.dangerous ?? false;
176
- }
177
- /**
178
- * Set confirmation handler
179
- */
180
- onConfirm(handler) {
181
- this.confirmHandler = handler;
182
- }
183
- render(canvas, bounds) {
184
- // Call parent render
185
- super.render(canvas, bounds);
186
- const theme = getTheme();
187
- const contentBounds = this.getContentBounds();
188
- // Draw message
189
- canvas.drawText(contentBounds.x, contentBounds.y, this.message, {
190
- fg: theme.text.fg,
191
- });
192
- // Draw buttons
193
- const buttonY = contentBounds.y + contentBounds.height - 1;
194
- const cancelStyle = this.selectedButton === 1
195
- ? { fg: theme.selectionActive.fg, bg: theme.selectionActive.bg }
196
- : { fg: theme.textMuted.fg };
197
- const confirmStyle = this.selectedButton === 0
198
- ? this.dangerous
199
- ? { fg: theme.error.fg, bg: theme.error.bg, bold: true }
200
- : { fg: theme.selectionActive.fg, bg: theme.selectionActive.bg }
201
- : this.dangerous
202
- ? { fg: theme.error.fg }
203
- : { fg: theme.text.fg };
204
- const cancelText = ` ${this.cancelLabel} `;
205
- const confirmText = ` ${this.confirmLabel} `;
206
- const cancelX = contentBounds.x;
207
- const confirmX = cancelX + cancelText.length + 2;
208
- canvas.drawText(cancelX, buttonY, cancelText, cancelStyle);
209
- canvas.drawText(confirmX, buttonY, confirmText, confirmStyle);
210
- }
211
- handleKey(event) {
212
- switch (event.key) {
213
- case 'left':
214
- case 'h':
215
- case 'tab':
216
- this.selectedButton = this.selectedButton === 0 ? 1 : 0;
217
- return true;
218
- case 'right':
219
- case 'l':
220
- case 'shift+tab':
221
- this.selectedButton = this.selectedButton === 0 ? 1 : 0;
222
- return true;
223
- case 'enter':
224
- this.confirmHandler?.(this.selectedButton === 0);
225
- this.close();
226
- return true;
227
- case 'escape':
228
- this.confirmHandler?.(false);
229
- this.close();
230
- return true;
231
- case 'y':
232
- this.confirmHandler?.(true);
233
- this.close();
234
- return true;
235
- case 'n':
236
- this.confirmHandler?.(false);
237
- this.close();
238
- return true;
239
- }
240
- return false;
241
- }
242
- }
243
- /**
244
- * Create a ConfirmModal component
245
- */
246
- export function createConfirmModal(props = {}) {
247
- return new ConfirmModal(props);
248
- }
249
- //# sourceMappingURL=modal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/ui/components/modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAa,kBAAkB,EAAuB,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAgB9C,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,OAAO,KAAM,SAAQ,kBAAkB;IACnC,KAAK,GAAW,EAAE,CAAC;IACnB,UAAU,GAAW,EAAE,CAAC;IACxB,WAAW,GAAW,EAAE,CAAC;IACzB,QAAQ,GAAY,IAAI,CAAC;IACzB,YAAY,GAA6B,IAAI,CAAC;IAEtD,YAAY,QAAoB,EAAE;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAA0B;QAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,IAAI,CAAC,WAAW;SACzB,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;YACpB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAc;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,kCAAkC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE;YACzC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;SAC7C,CAAC,CAAC;QAEH,+BAA+B;QAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE5B,0BAA0B;QAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEnC,iBAAiB;QACjB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEzC,aAAa;QACb,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;QAED,kCAAkC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAc,EAAE,MAAc;QAClD,yDAAyD;QACzD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClC,IAAI,IAAI,EAAE,CAAC;oBACT,4BAA4B;oBAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,MAAc;QACnD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,cAAc;QACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAC9D,MAAM,EAAE,OAAO;YACf,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,KAAK,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;gBACzD,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,MAAc;QAChD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,qCAAqC;QAE7E,IAAI,aAAa,IAAI,CAAC;YAAE,OAAO;QAE/B,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,YAAY,GAAG,EAAE;YACrD,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACjB,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAEQ,SAAS,CAAC,KAAe;QAChC,yBAAyB;QACzB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAoB,EAAE;IAChD,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAeD,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC7B,OAAO,GAAW,EAAE,CAAC;IACrB,YAAY,GAAW,SAAS,CAAC;IACjC,WAAW,GAAW,QAAQ,CAAC;IAC/B,SAAS,GAAY,KAAK,CAAC;IAC3B,cAAc,GAAW,CAAC,CAAC;IAC3B,cAAc,GAA0B,IAAI,CAAC;IAErD,YAAY,QAA2B,EAAE;QACvC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,SAAS,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAuB;QAC/B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAEQ,MAAM,CAAC,MAAc,EAAE,MAAc;QAC5C,qBAAqB;QACrB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,eAAe;QACf,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE;YAC9D,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;SAClB,CAAC,CAAC;QAEH,eAAe;QACf,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,MAAM,WAAW,GACf,IAAI,CAAC,cAAc,KAAK,CAAC;YACvB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE;YAChE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,YAAY,GAChB,IAAI,CAAC,cAAc,KAAK,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,SAAS;gBACd,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACxD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE;YAClE,CAAC,CAAC,IAAI,CAAC,SAAS;gBACd,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;gBACxB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;QAE7C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC;IAEQ,SAAS,CAAC,KAAe;QAChC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,GAAG,CAAC;YACT,KAAK,KAAK;gBACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,GAAG,CAAC;YACT,KAAK,WAAW;gBACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,KAAK,OAAO;gBACV,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA2B,EAAE;IAC9D,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
@@ -1,97 +0,0 @@
1
- /**
2
- * Tabs Component
3
- *
4
- * A horizontal tab bar with clickable tabs.
5
- */
6
- import type { Canvas } from '../renderer';
7
- import type { Bounds, Size } from '../layout';
8
- import { Component, type ComponentProps } from './base';
9
- import type { KeyEvent } from '../input/keyboard';
10
- import type { MouseEvent } from '../input/mouse';
11
- export interface Tab<T = unknown> {
12
- id: string;
13
- label: string;
14
- data?: T;
15
- closable?: boolean;
16
- }
17
- export interface TabsProps<T = unknown> extends ComponentProps {
18
- tabs?: Tab<T>[];
19
- activeIndex?: number;
20
- maxTabWidth?: number;
21
- }
22
- export type TabSelectHandler<T = unknown> = (tab: Tab<T>, index: number) => void;
23
- export type TabCloseHandler<T = unknown> = (tab: Tab<T>, index: number) => void;
24
- export declare class Tabs<T = unknown> extends Component {
25
- private tabs;
26
- private activeIndex;
27
- private maxTabWidth;
28
- private selectHandler;
29
- private closeHandler;
30
- constructor(props?: TabsProps<T>);
31
- /**
32
- * Set tabs
33
- */
34
- setTabs(tabs: Tab<T>[]): void;
35
- /**
36
- * Get tabs
37
- */
38
- getTabs(): Tab<T>[];
39
- /**
40
- * Add a tab
41
- */
42
- addTab(tab: Tab<T>): void;
43
- /**
44
- * Remove a tab by index
45
- */
46
- removeTab(index: number): void;
47
- /**
48
- * Set active tab
49
- */
50
- setActiveIndex(index: number): void;
51
- /**
52
- * Get active tab index
53
- */
54
- getActiveIndex(): number;
55
- /**
56
- * Get active tab
57
- */
58
- getActiveTab(): Tab<T> | undefined;
59
- /**
60
- * Select next tab
61
- */
62
- selectNext(): void;
63
- /**
64
- * Select previous tab
65
- */
66
- selectPrevious(): void;
67
- /**
68
- * Set selection handler
69
- */
70
- onSelect(handler: TabSelectHandler<T>): void;
71
- /**
72
- * Set close handler
73
- */
74
- onClose(handler: TabCloseHandler<T>): void;
75
- /**
76
- * Trigger selection
77
- */
78
- private triggerSelect;
79
- /**
80
- * Trigger close
81
- */
82
- private triggerClose;
83
- getPreferredSize(): Size;
84
- getMinSize(): Size;
85
- render(canvas: Canvas, bounds: Bounds): void;
86
- /**
87
- * Calculate tab widths to fit in available space
88
- */
89
- private calculateTabWidths;
90
- handleKey(event: KeyEvent): boolean;
91
- handleMouse(event: MouseEvent): boolean;
92
- }
93
- /**
94
- * Create a Tabs component
95
- */
96
- export declare function createTabs<T = unknown>(props?: TabsProps<T>): Tabs<T>;
97
- //# sourceMappingURL=tabs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/ui/components/tabs.ts"],"names":[],"mappings":"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"}
@@ -1,252 +0,0 @@
1
- /**
2
- * Tabs Component
3
- *
4
- * A horizontal tab bar with clickable tabs.
5
- */
6
- import { getTheme } from '../renderer/colors';
7
- import { Component } from './base';
8
- import { truncateWithEllipsis } from './text';
9
- // ============================================================================
10
- // Tabs Component
11
- // ============================================================================
12
- export class Tabs extends Component {
13
- tabs = [];
14
- activeIndex = 0;
15
- maxTabWidth = 20;
16
- selectHandler = null;
17
- closeHandler = null;
18
- constructor(props = {}) {
19
- super(props);
20
- this.tabs = props.tabs ?? [];
21
- this.activeIndex = props.activeIndex ?? 0;
22
- this.maxTabWidth = props.maxTabWidth ?? 20;
23
- }
24
- /**
25
- * Set tabs
26
- */
27
- setTabs(tabs) {
28
- this.tabs = tabs;
29
- if (this.activeIndex >= tabs.length) {
30
- this.activeIndex = Math.max(0, tabs.length - 1);
31
- }
32
- }
33
- /**
34
- * Get tabs
35
- */
36
- getTabs() {
37
- return this.tabs;
38
- }
39
- /**
40
- * Add a tab
41
- */
42
- addTab(tab) {
43
- this.tabs.push(tab);
44
- }
45
- /**
46
- * Remove a tab by index
47
- */
48
- removeTab(index) {
49
- if (index >= 0 && index < this.tabs.length) {
50
- this.tabs.splice(index, 1);
51
- if (this.activeIndex >= this.tabs.length) {
52
- this.activeIndex = Math.max(0, this.tabs.length - 1);
53
- }
54
- }
55
- }
56
- /**
57
- * Set active tab
58
- */
59
- setActiveIndex(index) {
60
- if (index >= 0 && index < this.tabs.length) {
61
- this.activeIndex = index;
62
- }
63
- }
64
- /**
65
- * Get active tab index
66
- */
67
- getActiveIndex() {
68
- return this.activeIndex;
69
- }
70
- /**
71
- * Get active tab
72
- */
73
- getActiveTab() {
74
- return this.tabs[this.activeIndex];
75
- }
76
- /**
77
- * Select next tab
78
- */
79
- selectNext() {
80
- if (this.tabs.length > 0) {
81
- this.activeIndex = (this.activeIndex + 1) % this.tabs.length;
82
- this.triggerSelect();
83
- }
84
- }
85
- /**
86
- * Select previous tab
87
- */
88
- selectPrevious() {
89
- if (this.tabs.length > 0) {
90
- this.activeIndex = (this.activeIndex - 1 + this.tabs.length) % this.tabs.length;
91
- this.triggerSelect();
92
- }
93
- }
94
- /**
95
- * Set selection handler
96
- */
97
- onSelect(handler) {
98
- this.selectHandler = handler;
99
- }
100
- /**
101
- * Set close handler
102
- */
103
- onClose(handler) {
104
- this.closeHandler = handler;
105
- }
106
- /**
107
- * Trigger selection
108
- */
109
- triggerSelect() {
110
- const tab = this.tabs[this.activeIndex];
111
- if (tab && this.selectHandler) {
112
- this.selectHandler(tab, this.activeIndex);
113
- }
114
- }
115
- /**
116
- * Trigger close
117
- */
118
- triggerClose(index) {
119
- const tab = this.tabs[index];
120
- if (tab && tab.closable && this.closeHandler) {
121
- this.closeHandler(tab, index);
122
- }
123
- }
124
- getPreferredSize() {
125
- let totalWidth = 0;
126
- for (const tab of this.tabs) {
127
- totalWidth += Math.min(tab.label.length + 4, this.maxTabWidth);
128
- }
129
- return {
130
- width: Math.max(totalWidth, 1),
131
- height: 1,
132
- };
133
- }
134
- getMinSize() {
135
- return { width: 1, height: 1 };
136
- }
137
- render(canvas, bounds) {
138
- if (!this.visible || bounds.height < 1)
139
- return;
140
- const theme = getTheme();
141
- // Calculate tab widths
142
- const tabWidths = this.calculateTabWidths(bounds.width);
143
- let x = bounds.x;
144
- for (let i = 0; i < this.tabs.length; i++) {
145
- const tab = this.tabs[i];
146
- const width = tabWidths[i];
147
- if (width <= 0)
148
- continue;
149
- // Determine style
150
- const isActive = i === this.activeIndex;
151
- const style = isActive
152
- ? { fg: theme.selectionActive.fg, bg: theme.selectionActive.bg, bold: true }
153
- : { fg: theme.text.fg };
154
- // Build label
155
- let label = tab.label;
156
- const closeSuffix = tab.closable ? ' ×' : '';
157
- const maxLabelWidth = width - closeSuffix.length - 2; // -2 for padding
158
- if (label.length > maxLabelWidth) {
159
- label = truncateWithEllipsis(label, maxLabelWidth);
160
- }
161
- // Render tab
162
- const displayText = ` ${label}${closeSuffix} `.padEnd(width);
163
- canvas.drawText(x, bounds.y, displayText, style);
164
- x += width;
165
- }
166
- // Fill remaining space
167
- if (x < bounds.x + bounds.width) {
168
- const remaining = bounds.x + bounds.width - x;
169
- canvas.drawText(x, bounds.y, ' '.repeat(remaining), {});
170
- }
171
- }
172
- /**
173
- * Calculate tab widths to fit in available space
174
- */
175
- calculateTabWidths(availableWidth) {
176
- if (this.tabs.length === 0)
177
- return [];
178
- // Start with natural widths
179
- const naturalWidths = this.tabs.map((tab) => {
180
- const closeSuffix = tab.closable ? ' ×' : '';
181
- return Math.min(tab.label.length + closeSuffix.length + 2, this.maxTabWidth);
182
- });
183
- // Calculate total
184
- let totalWidth = naturalWidths.reduce((sum, w) => sum + w, 0);
185
- // If fits, return natural widths
186
- if (totalWidth <= availableWidth) {
187
- return naturalWidths;
188
- }
189
- // Otherwise, shrink proportionally
190
- const ratio = availableWidth / totalWidth;
191
- const shrunkWidths = naturalWidths.map((w) => Math.max(1, Math.floor(w * ratio)));
192
- return shrunkWidths;
193
- }
194
- handleKey(event) {
195
- switch (event.key) {
196
- case 'left':
197
- case 'h':
198
- this.selectPrevious();
199
- return true;
200
- case 'right':
201
- case 'l':
202
- this.selectNext();
203
- return true;
204
- case 'ctrl+w':
205
- if (this.tabs[this.activeIndex]?.closable) {
206
- this.triggerClose(this.activeIndex);
207
- return true;
208
- }
209
- break;
210
- }
211
- // Number keys 1-9 for direct selection
212
- if (event.key >= '1' && event.key <= '9') {
213
- const index = parseInt(event.key, 10) - 1;
214
- if (index < this.tabs.length) {
215
- this.activeIndex = index;
216
- this.triggerSelect();
217
- return true;
218
- }
219
- }
220
- return false;
221
- }
222
- handleMouse(event) {
223
- if (event.action === 'press' && event.button === 'left') {
224
- const tabWidths = this.calculateTabWidths(this.bounds.width);
225
- let x = this.bounds.x;
226
- for (let i = 0; i < this.tabs.length; i++) {
227
- const width = tabWidths[i];
228
- if (event.x >= x && event.x < x + width) {
229
- // Check if clicking close button
230
- const tab = this.tabs[i];
231
- if (tab.closable && event.x >= x + width - 3) {
232
- this.triggerClose(i);
233
- }
234
- else {
235
- this.activeIndex = i;
236
- this.triggerSelect();
237
- }
238
- return true;
239
- }
240
- x += width;
241
- }
242
- }
243
- return false;
244
- }
245
- }
246
- /**
247
- * Create a Tabs component
248
- */
249
- export function createTabs(props = {}) {
250
- return new Tabs(props);
251
- }
252
- //# sourceMappingURL=tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/ui/components/tabs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAuB,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAwB9C,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,OAAO,IAAkB,SAAQ,SAAS;IACtC,IAAI,GAAa,EAAE,CAAC;IACpB,WAAW,GAAW,CAAC,CAAC;IACxB,WAAW,GAAW,EAAE,CAAC;IACzB,aAAa,GAA+B,IAAI,CAAC;IACjD,YAAY,GAA8B,IAAI,CAAC;IAEvD,YAAY,QAAsB,EAAE;QAClC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa;QAC1B,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7D,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAChF,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAA4B;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAA2B;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAa;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9B,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAc;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAE/C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,uBAAuB;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,IAAI,CAAC;gBAAE,SAAS;YAEzB,kBAAkB;YAClB,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;YACxC,MAAM,KAAK,GAAU,QAAQ;gBAC3B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBAC5E,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAE1B,cAAc;YACd,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB;YAEvE,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;gBACjC,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACrD,CAAC;YAED,aAAa;YACb,MAAM,WAAW,GAAG,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAEjD,CAAC,IAAI,KAAK,CAAC;QACb,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,cAAsB;QAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEtC,4BAA4B;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9D,iCAAiC;QACjC,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;YACjC,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,mCAAmC;QACnC,MAAM,KAAK,GAAG,cAAc,GAAG,UAAU,CAAC;QAC1C,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO,YAAY,CAAC;IACtB,CAAC;IAEQ,SAAS,CAAC,KAAe;QAChC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,GAAG;gBACN,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACpC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM;QACV,CAAC;QAED,uCAAuC;QACvC,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,WAAW,CAAC,KAAiB;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;oBACxC,iCAAiC;oBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;wBAC7C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,CAAC,IAAI,KAAK,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAc,QAAsB,EAAE;IAC9D,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}