@termaxjs/web-ui-components 0.1.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 (391) hide show
  1. package/LICENSE +201 -0
  2. package/dist/ai/AgentStatusPill.d.ts +13 -0
  3. package/dist/ai/AgentStatusPill.d.ts.map +1 -0
  4. package/dist/ai/AgentStatusPill.js +28 -0
  5. package/dist/ai/AgentStatusPill.js.map +1 -0
  6. package/dist/ai/AiToolApproval.d.ts +12 -0
  7. package/dist/ai/AiToolApproval.d.ts.map +1 -0
  8. package/dist/ai/AiToolApproval.js +63 -0
  9. package/dist/ai/AiToolApproval.js.map +1 -0
  10. package/dist/ai/Chip.d.ts +17 -0
  11. package/dist/ai/Chip.d.ts.map +1 -0
  12. package/dist/ai/Chip.js +39 -0
  13. package/dist/ai/Chip.js.map +1 -0
  14. package/dist/ai/ChipsRow.d.ts +35 -0
  15. package/dist/ai/ChipsRow.d.ts.map +1 -0
  16. package/dist/ai/ChipsRow.js +32 -0
  17. package/dist/ai/ChipsRow.js.map +1 -0
  18. package/dist/ai/TodoStrip.d.ts +11 -0
  19. package/dist/ai/TodoStrip.d.ts.map +1 -0
  20. package/dist/ai/TodoStrip.js +27 -0
  21. package/dist/ai/TodoStrip.js.map +1 -0
  22. package/dist/ai/index.d.ts +6 -0
  23. package/dist/ai/index.d.ts.map +1 -0
  24. package/dist/ai/index.js +6 -0
  25. package/dist/ai/index.js.map +1 -0
  26. package/dist/command-palette/CommandPaletteDialog.d.ts +19 -0
  27. package/dist/command-palette/CommandPaletteDialog.d.ts.map +1 -0
  28. package/dist/command-palette/CommandPaletteDialog.js +23 -0
  29. package/dist/command-palette/CommandPaletteDialog.js.map +1 -0
  30. package/dist/command-palette/index.d.ts +2 -0
  31. package/dist/command-palette/index.d.ts.map +1 -0
  32. package/dist/command-palette/index.js +2 -0
  33. package/dist/command-palette/index.js.map +1 -0
  34. package/dist/explorer/ExplorerSearch.d.ts +35 -0
  35. package/dist/explorer/ExplorerSearch.d.ts.map +1 -0
  36. package/dist/explorer/ExplorerSearch.js +153 -0
  37. package/dist/explorer/ExplorerSearch.js.map +1 -0
  38. package/dist/explorer/FileTree.d.ts +65 -0
  39. package/dist/explorer/FileTree.d.ts.map +1 -0
  40. package/dist/explorer/FileTree.js +205 -0
  41. package/dist/explorer/FileTree.js.map +1 -0
  42. package/dist/explorer/InlineInput.d.ts +14 -0
  43. package/dist/explorer/InlineInput.d.ts.map +1 -0
  44. package/dist/explorer/InlineInput.js +77 -0
  45. package/dist/explorer/InlineInput.js.map +1 -0
  46. package/dist/explorer/TreeRow.d.ts +64 -0
  47. package/dist/explorer/TreeRow.d.ts.map +1 -0
  48. package/dist/explorer/TreeRow.js +100 -0
  49. package/dist/explorer/TreeRow.js.map +1 -0
  50. package/dist/explorer/constants.d.ts +12 -0
  51. package/dist/explorer/constants.d.ts.map +1 -0
  52. package/dist/explorer/constants.js +72 -0
  53. package/dist/explorer/constants.js.map +1 -0
  54. package/dist/explorer/contextActions.d.ts +5 -0
  55. package/dist/explorer/contextActions.d.ts.map +1 -0
  56. package/dist/explorer/contextActions.js +38 -0
  57. package/dist/explorer/contextActions.js.map +1 -0
  58. package/dist/explorer/iconMap.json +1 -0
  59. package/dist/explorer/iconResolver.d.ts +3 -0
  60. package/dist/explorer/iconResolver.d.ts.map +1 -0
  61. package/dist/explorer/iconResolver.js +98 -0
  62. package/dist/explorer/iconResolver.js.map +1 -0
  63. package/dist/explorer/index.d.ts +8 -0
  64. package/dist/explorer/index.d.ts.map +1 -0
  65. package/dist/explorer/index.js +8 -0
  66. package/dist/explorer/index.js.map +1 -0
  67. package/dist/explorer/menuItemClass.d.ts +3 -0
  68. package/dist/explorer/menuItemClass.d.ts.map +1 -0
  69. package/dist/explorer/menuItemClass.js +6 -0
  70. package/dist/explorer/menuItemClass.js.map +1 -0
  71. package/dist/explorer/types.d.ts +2 -0
  72. package/dist/explorer/types.d.ts.map +1 -0
  73. package/dist/explorer/types.js +2 -0
  74. package/dist/explorer/types.js.map +1 -0
  75. package/dist/index.d.ts +11 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +11 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/layout/PaneChip.d.ts +13 -0
  80. package/dist/layout/PaneChip.d.ts.map +1 -0
  81. package/dist/layout/PaneChip.js +19 -0
  82. package/dist/layout/PaneChip.js.map +1 -0
  83. package/dist/layout/TabBar.d.ts +36 -0
  84. package/dist/layout/TabBar.d.ts.map +1 -0
  85. package/dist/layout/TabBar.js +237 -0
  86. package/dist/layout/TabBar.js.map +1 -0
  87. package/dist/layout/TabItem.d.ts +19 -0
  88. package/dist/layout/TabItem.d.ts.map +1 -0
  89. package/dist/layout/TabItem.js +66 -0
  90. package/dist/layout/TabItem.js.map +1 -0
  91. package/dist/layout/index.d.ts +7 -0
  92. package/dist/layout/index.d.ts.map +1 -0
  93. package/dist/layout/index.js +7 -0
  94. package/dist/layout/index.js.map +1 -0
  95. package/dist/layout/leafState.d.ts +15 -0
  96. package/dist/layout/leafState.d.ts.map +1 -0
  97. package/dist/layout/leafState.js +70 -0
  98. package/dist/layout/leafState.js.map +1 -0
  99. package/dist/layout/resizable.d.ts +31 -0
  100. package/dist/layout/resizable.d.ts.map +1 -0
  101. package/dist/layout/resizable.js +16 -0
  102. package/dist/layout/resizable.js.map +1 -0
  103. package/dist/layout/tabLabel.d.ts +9 -0
  104. package/dist/layout/tabLabel.d.ts.map +1 -0
  105. package/dist/layout/tabLabel.js +31 -0
  106. package/dist/layout/tabLabel.js.map +1 -0
  107. package/dist/primitives/alert-dialog.d.ts +19 -0
  108. package/dist/primitives/alert-dialog.d.ts.map +1 -0
  109. package/dist/primitives/alert-dialog.js +42 -0
  110. package/dist/primitives/alert-dialog.js.map +1 -0
  111. package/dist/primitives/alert.d.ts +11 -0
  112. package/dist/primitives/alert.d.ts.map +1 -0
  113. package/dist/primitives/alert.js +28 -0
  114. package/dist/primitives/alert.js.map +1 -0
  115. package/dist/primitives/badge.d.ts +10 -0
  116. package/dist/primitives/badge.d.ts.map +1 -0
  117. package/dist/primitives/badge.js +25 -0
  118. package/dist/primitives/badge.js.map +1 -0
  119. package/dist/primitives/breadcrumb.d.ts +12 -0
  120. package/dist/primitives/breadcrumb.d.ts.map +1 -0
  121. package/dist/primitives/breadcrumb.js +29 -0
  122. package/dist/primitives/breadcrumb.js.map +1 -0
  123. package/dist/primitives/button-group.d.ts +12 -0
  124. package/dist/primitives/button-group.d.ts.map +1 -0
  125. package/dist/primitives/button-group.js +28 -0
  126. package/dist/primitives/button-group.js.map +1 -0
  127. package/dist/primitives/button.d.ts +11 -0
  128. package/dist/primitives/button.d.ts.map +1 -0
  129. package/dist/primitives/button.js +36 -0
  130. package/dist/primitives/button.js.map +1 -0
  131. package/dist/primitives/card.d.ts +12 -0
  132. package/dist/primitives/card.d.ts.map +1 -0
  133. package/dist/primitives/card.js +25 -0
  134. package/dist/primitives/card.js.map +1 -0
  135. package/dist/primitives/checkbox.d.ts +5 -0
  136. package/dist/primitives/checkbox.d.ts.map +1 -0
  137. package/dist/primitives/checkbox.js +10 -0
  138. package/dist/primitives/checkbox.js.map +1 -0
  139. package/dist/primitives/collapsible.d.ts +6 -0
  140. package/dist/primitives/collapsible.d.ts.map +1 -0
  141. package/dist/primitives/collapsible.js +13 -0
  142. package/dist/primitives/collapsible.js.map +1 -0
  143. package/dist/primitives/command.d.ts +36 -0
  144. package/dist/primitives/command.d.ts.map +1 -0
  145. package/dist/primitives/command.js +103 -0
  146. package/dist/primitives/command.js.map +1 -0
  147. package/dist/primitives/context-menu.d.ts +41 -0
  148. package/dist/primitives/context-menu.d.ts.map +1 -0
  149. package/dist/primitives/context-menu.js +83 -0
  150. package/dist/primitives/context-menu.js.map +1 -0
  151. package/dist/primitives/dialog.d.ts +18 -0
  152. package/dist/primitives/dialog.d.ts.map +1 -0
  153. package/dist/primitives/dialog.js +38 -0
  154. package/dist/primitives/dialog.js.map +1 -0
  155. package/dist/primitives/dropdown-menu.d.ts +30 -0
  156. package/dist/primitives/dropdown-menu.d.ts.map +1 -0
  157. package/dist/primitives/dropdown-menu.js +52 -0
  158. package/dist/primitives/dropdown-menu.js.map +1 -0
  159. package/dist/primitives/empty.d.ts +12 -0
  160. package/dist/primitives/empty.d.ts.map +1 -0
  161. package/dist/primitives/empty.js +34 -0
  162. package/dist/primitives/empty.js.map +1 -0
  163. package/dist/primitives/hover-card.d.ts +7 -0
  164. package/dist/primitives/hover-card.d.ts.map +1 -0
  165. package/dist/primitives/hover-card.js +14 -0
  166. package/dist/primitives/hover-card.js.map +1 -0
  167. package/dist/primitives/index.d.ts +40 -0
  168. package/dist/primitives/index.d.ts.map +1 -0
  169. package/dist/primitives/index.js +40 -0
  170. package/dist/primitives/index.js.map +1 -0
  171. package/dist/primitives/input-group.d.ts +17 -0
  172. package/dist/primitives/input-group.d.ts.map +1 -0
  173. package/dist/primitives/input-group.js +59 -0
  174. package/dist/primitives/input-group.js.map +1 -0
  175. package/dist/primitives/input.d.ts +4 -0
  176. package/dist/primitives/input.d.ts.map +1 -0
  177. package/dist/primitives/input.js +7 -0
  178. package/dist/primitives/input.js.map +1 -0
  179. package/dist/primitives/item.d.ts +24 -0
  180. package/dist/primitives/item.d.ts.map +1 -0
  181. package/dist/primitives/item.js +68 -0
  182. package/dist/primitives/item.js.map +1 -0
  183. package/dist/primitives/kbd.d.ts +4 -0
  184. package/dist/primitives/kbd.d.ts.map +1 -0
  185. package/dist/primitives/kbd.js +10 -0
  186. package/dist/primitives/kbd.js.map +1 -0
  187. package/dist/primitives/label.d.ts +5 -0
  188. package/dist/primitives/label.d.ts.map +1 -0
  189. package/dist/primitives/label.js +8 -0
  190. package/dist/primitives/label.js.map +1 -0
  191. package/dist/primitives/menubar.d.ts +31 -0
  192. package/dist/primitives/menubar.d.ts.map +1 -0
  193. package/dist/primitives/menubar.js +55 -0
  194. package/dist/primitives/menubar.js.map +1 -0
  195. package/dist/primitives/popover.d.ts +11 -0
  196. package/dist/primitives/popover.d.ts.map +1 -0
  197. package/dist/primitives/popover.js +27 -0
  198. package/dist/primitives/popover.js.map +1 -0
  199. package/dist/primitives/progress.d.ts +5 -0
  200. package/dist/primitives/progress.d.ts.map +1 -0
  201. package/dist/primitives/progress.js +8 -0
  202. package/dist/primitives/progress.js.map +1 -0
  203. package/dist/primitives/radio-group.d.ts +6 -0
  204. package/dist/primitives/radio-group.d.ts.map +1 -0
  205. package/dist/primitives/radio-group.js +11 -0
  206. package/dist/primitives/radio-group.js.map +1 -0
  207. package/dist/primitives/resizable.d.ts +31 -0
  208. package/dist/primitives/resizable.d.ts.map +1 -0
  209. package/dist/primitives/resizable.js +16 -0
  210. package/dist/primitives/resizable.js.map +1 -0
  211. package/dist/primitives/scroll-area.d.ts +6 -0
  212. package/dist/primitives/scroll-area.d.ts.map +1 -0
  213. package/dist/primitives/scroll-area.js +11 -0
  214. package/dist/primitives/scroll-area.js.map +1 -0
  215. package/dist/primitives/select.d.ts +16 -0
  216. package/dist/primitives/select.d.ts.map +1 -0
  217. package/dist/primitives/select.js +37 -0
  218. package/dist/primitives/select.js.map +1 -0
  219. package/dist/primitives/separator.d.ts +5 -0
  220. package/dist/primitives/separator.d.ts.map +1 -0
  221. package/dist/primitives/separator.js +8 -0
  222. package/dist/primitives/separator.js.map +1 -0
  223. package/dist/primitives/sheet.d.ts +15 -0
  224. package/dist/primitives/sheet.d.ts.map +1 -0
  225. package/dist/primitives/sheet.js +38 -0
  226. package/dist/primitives/sheet.js.map +1 -0
  227. package/dist/primitives/skeleton.d.ts +3 -0
  228. package/dist/primitives/skeleton.d.ts.map +1 -0
  229. package/dist/primitives/skeleton.js +7 -0
  230. package/dist/primitives/skeleton.js.map +1 -0
  231. package/dist/primitives/slider.d.ts +5 -0
  232. package/dist/primitives/slider.d.ts.map +1 -0
  233. package/dist/primitives/slider.js +14 -0
  234. package/dist/primitives/slider.js.map +1 -0
  235. package/dist/primitives/sonner.d.ts +5 -0
  236. package/dist/primitives/sonner.d.ts.map +1 -0
  237. package/dist/primitives/sonner.js +12 -0
  238. package/dist/primitives/sonner.js.map +1 -0
  239. package/dist/primitives/spinner.d.ts +3 -0
  240. package/dist/primitives/spinner.d.ts.map +1 -0
  241. package/dist/primitives/spinner.js +11 -0
  242. package/dist/primitives/spinner.js.map +1 -0
  243. package/dist/primitives/switch.d.ts +7 -0
  244. package/dist/primitives/switch.d.ts.map +1 -0
  245. package/dist/primitives/switch.js +18 -0
  246. package/dist/primitives/switch.js.map +1 -0
  247. package/dist/primitives/tabs.d.ts +12 -0
  248. package/dist/primitives/tabs.d.ts.map +1 -0
  249. package/dist/primitives/tabs.js +29 -0
  250. package/dist/primitives/tabs.js.map +1 -0
  251. package/dist/primitives/textarea.d.ts +4 -0
  252. package/dist/primitives/textarea.d.ts.map +1 -0
  253. package/dist/primitives/textarea.js +7 -0
  254. package/dist/primitives/textarea.js.map +1 -0
  255. package/dist/primitives/toggle-group.d.ts +11 -0
  256. package/dist/primitives/toggle-group.d.ts.map +1 -0
  257. package/dist/primitives/toggle-group.js +24 -0
  258. package/dist/primitives/toggle-group.js.map +1 -0
  259. package/dist/primitives/toggle.d.ts +10 -0
  260. package/dist/primitives/toggle.d.ts.map +1 -0
  261. package/dist/primitives/toggle.js +26 -0
  262. package/dist/primitives/toggle.js.map +1 -0
  263. package/dist/primitives/tooltip.d.ts +8 -0
  264. package/dist/primitives/tooltip.d.ts.map +1 -0
  265. package/dist/primitives/tooltip.js +18 -0
  266. package/dist/primitives/tooltip.js.map +1 -0
  267. package/dist/settings/SettingGroup.d.ts +8 -0
  268. package/dist/settings/SettingGroup.d.ts.map +1 -0
  269. package/dist/settings/SettingGroup.js +7 -0
  270. package/dist/settings/SettingGroup.js.map +1 -0
  271. package/dist/settings/SettingRow.d.ts +58 -0
  272. package/dist/settings/SettingRow.d.ts.map +1 -0
  273. package/dist/settings/SettingRow.js +54 -0
  274. package/dist/settings/SettingRow.js.map +1 -0
  275. package/dist/settings/SettingsFormBuilder.d.ts +11 -0
  276. package/dist/settings/SettingsFormBuilder.d.ts.map +1 -0
  277. package/dist/settings/SettingsFormBuilder.js +43 -0
  278. package/dist/settings/SettingsFormBuilder.js.map +1 -0
  279. package/dist/settings/index.d.ts +4 -0
  280. package/dist/settings/index.d.ts.map +1 -0
  281. package/dist/settings/index.js +4 -0
  282. package/dist/settings/index.js.map +1 -0
  283. package/dist/shell/HeaderBar.d.ts +10 -0
  284. package/dist/shell/HeaderBar.d.ts.map +1 -0
  285. package/dist/shell/HeaderBar.js +6 -0
  286. package/dist/shell/HeaderBar.js.map +1 -0
  287. package/dist/shell/StatusBar.d.ts +9 -0
  288. package/dist/shell/StatusBar.d.ts.map +1 -0
  289. package/dist/shell/StatusBar.js +6 -0
  290. package/dist/shell/StatusBar.js.map +1 -0
  291. package/dist/shell/index.d.ts +3 -0
  292. package/dist/shell/index.d.ts.map +1 -0
  293. package/dist/shell/index.js +3 -0
  294. package/dist/shell/index.js.map +1 -0
  295. package/dist/source-control/BranchSwitcher.d.ts +14 -0
  296. package/dist/source-control/BranchSwitcher.d.ts.map +1 -0
  297. package/dist/source-control/BranchSwitcher.js +10 -0
  298. package/dist/source-control/BranchSwitcher.js.map +1 -0
  299. package/dist/source-control/CommitRow.d.ts +15 -0
  300. package/dist/source-control/CommitRow.d.ts.map +1 -0
  301. package/dist/source-control/CommitRow.js +20 -0
  302. package/dist/source-control/CommitRow.js.map +1 -0
  303. package/dist/source-control/EntryRow.d.ts +25 -0
  304. package/dist/source-control/EntryRow.d.ts.map +1 -0
  305. package/dist/source-control/EntryRow.js +67 -0
  306. package/dist/source-control/EntryRow.js.map +1 -0
  307. package/dist/source-control/GraphRail.d.ts +14 -0
  308. package/dist/source-control/GraphRail.d.ts.map +1 -0
  309. package/dist/source-control/GraphRail.js +49 -0
  310. package/dist/source-control/GraphRail.js.map +1 -0
  311. package/dist/source-control/InlineHunkView.d.ts +22 -0
  312. package/dist/source-control/InlineHunkView.d.ts.map +1 -0
  313. package/dist/source-control/InlineHunkView.js +95 -0
  314. package/dist/source-control/InlineHunkView.js.map +1 -0
  315. package/dist/source-control/SourceControlActions.d.ts +15 -0
  316. package/dist/source-control/SourceControlActions.d.ts.map +1 -0
  317. package/dist/source-control/SourceControlActions.js +38 -0
  318. package/dist/source-control/SourceControlActions.js.map +1 -0
  319. package/dist/source-control/SourceControlPanel.d.ts +21 -0
  320. package/dist/source-control/SourceControlPanel.d.ts.map +1 -0
  321. package/dist/source-control/SourceControlPanel.js +300 -0
  322. package/dist/source-control/SourceControlPanel.js.map +1 -0
  323. package/dist/source-control/SourceControlStatusViews.d.ts +20 -0
  324. package/dist/source-control/SourceControlStatusViews.d.ts.map +1 -0
  325. package/dist/source-control/SourceControlStatusViews.js +18 -0
  326. package/dist/source-control/SourceControlStatusViews.js.map +1 -0
  327. package/dist/source-control/StashSection.d.ts +13 -0
  328. package/dist/source-control/StashSection.d.ts.map +1 -0
  329. package/dist/source-control/StashSection.js +14 -0
  330. package/dist/source-control/StashSection.js.map +1 -0
  331. package/dist/source-control/highlight.d.ts +8 -0
  332. package/dist/source-control/highlight.d.ts.map +1 -0
  333. package/dist/source-control/highlight.js +15 -0
  334. package/dist/source-control/highlight.js.map +1 -0
  335. package/dist/source-control/index.d.ts +12 -0
  336. package/dist/source-control/index.d.ts.map +1 -0
  337. package/dist/source-control/index.js +12 -0
  338. package/dist/source-control/index.js.map +1 -0
  339. package/dist/source-control/sourceControlHelpers.d.ts +27 -0
  340. package/dist/source-control/sourceControlHelpers.d.ts.map +1 -0
  341. package/dist/source-control/sourceControlHelpers.js +51 -0
  342. package/dist/source-control/sourceControlHelpers.js.map +1 -0
  343. package/dist/utils/cn.d.ts +3 -0
  344. package/dist/utils/cn.d.ts.map +1 -0
  345. package/dist/utils/cn.js +6 -0
  346. package/dist/utils/cn.js.map +1 -0
  347. package/dist/utils/index.d.ts +2 -0
  348. package/dist/utils/index.d.ts.map +1 -0
  349. package/dist/utils/index.js +2 -0
  350. package/dist/utils/index.js.map +1 -0
  351. package/dist/utils/isTauri.d.ts +2 -0
  352. package/dist/utils/isTauri.d.ts.map +1 -0
  353. package/dist/utils/isTauri.js +2 -0
  354. package/dist/utils/isTauri.js.map +1 -0
  355. package/dist/utils/mockCore.d.ts +6 -0
  356. package/dist/utils/mockCore.d.ts.map +1 -0
  357. package/dist/utils/mockCore.js +3 -0
  358. package/dist/utils/mockCore.js.map +1 -0
  359. package/dist/utils/mockFs.d.ts +10 -0
  360. package/dist/utils/mockFs.d.ts.map +1 -0
  361. package/dist/utils/mockFs.js +10 -0
  362. package/dist/utils/mockFs.js.map +1 -0
  363. package/dist/utils/mockSettings.d.ts +3 -0
  364. package/dist/utils/mockSettings.d.ts.map +1 -0
  365. package/dist/utils/mockSettings.js +3 -0
  366. package/dist/utils/mockSettings.js.map +1 -0
  367. package/dist/utils/mockShortcuts.d.ts +2 -0
  368. package/dist/utils/mockShortcuts.d.ts.map +1 -0
  369. package/dist/utils/mockShortcuts.js +2 -0
  370. package/dist/utils/mockShortcuts.js.map +1 -0
  371. package/dist/utils/mockSpaces.d.ts +4 -0
  372. package/dist/utils/mockSpaces.d.ts.map +1 -0
  373. package/dist/utils/mockSpaces.js +2 -0
  374. package/dist/utils/mockSpaces.js.map +1 -0
  375. package/dist/utils/mockTauri.d.ts +5 -0
  376. package/dist/utils/mockTauri.d.ts.map +1 -0
  377. package/dist/utils/mockTauri.js +3 -0
  378. package/dist/utils/mockTauri.js.map +1 -0
  379. package/dist/utils/mockWorkspace.d.ts +2 -0
  380. package/dist/utils/mockWorkspace.d.ts.map +1 -0
  381. package/dist/utils/mockWorkspace.js +2 -0
  382. package/dist/utils/mockWorkspace.js.map +1 -0
  383. package/dist/utils/platform.d.ts +5 -0
  384. package/dist/utils/platform.d.ts.map +1 -0
  385. package/dist/utils/platform.js +8 -0
  386. package/dist/utils/platform.js.map +1 -0
  387. package/dist/utils/shellQuote.d.ts +2 -0
  388. package/dist/utils/shellQuote.d.ts.map +1 -0
  389. package/dist/utils/shellQuote.js +7 -0
  390. package/dist/utils/shellQuote.js.map +1 -0
  391. package/package.json +118 -0
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandShortcut, } from "../primitives/command.js";
3
+ import { ScrollArea } from "../primitives/scroll-area.js";
4
+ import { HugeiconsIcon } from "@hugeicons/react";
5
+ import React, { useState } from "react";
6
+ export function CommandPaletteDialog({ open, onOpenChange, actions, placeholder = "Type a command or search...", emptyText = "No commands found.", }) {
7
+ const [query, setQuery] = useState("");
8
+ const groups = React.useMemo(() => {
9
+ const map = new Map();
10
+ for (const action of actions) {
11
+ const g = action.group || "General";
12
+ if (!map.has(g))
13
+ map.set(g, []);
14
+ map.get(g).push(action);
15
+ }
16
+ return Array.from(map.entries());
17
+ }, [actions]);
18
+ return (_jsxs(CommandDialog, { open: open, onOpenChange: onOpenChange, children: [_jsx(CommandInput, { placeholder: placeholder, value: query, onValueChange: setQuery }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyText }), _jsx(ScrollArea, { className: "max-h-[340px]", children: groups.map(([groupName, groupActions]) => (_jsx(CommandGroup, { heading: groupName, children: groupActions.map((action) => (_jsxs(CommandItem, { value: `${action.group || ""} ${action.title}`, onSelect: () => {
19
+ onOpenChange(false);
20
+ action.onSelect();
21
+ }, className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [action.icon && (_jsx(HugeiconsIcon, { icon: action.icon, size: 14, className: "shrink-0 text-muted-foreground" })), _jsx("span", { className: "truncate", children: action.title })] }), action.shortcut && action.shortcut.length > 0 && (_jsx(CommandShortcut, { children: action.shortcut.join(" ") }))] }, action.id))) }, groupName))) })] })] }));
22
+ }
23
+ //# sourceMappingURL=CommandPaletteDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandPaletteDialog.js","sourceRoot":"","sources":["../../src/command-palette/CommandPaletteDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAoBxC,MAAM,UAAU,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,WAAW,GAAG,6BAA6B,EAC3C,SAAS,GAAG,oBAAoB,GACN;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkC,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,MAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,aACnD,KAAC,YAAY,IACX,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,QAAQ,GACvB,EACF,MAAC,WAAW,eACV,KAAC,YAAY,cAAE,SAAS,GAAgB,EACxC,KAAC,UAAU,IAAC,SAAS,EAAC,eAAe,YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CACzC,KAAC,YAAY,IAAiB,OAAO,EAAE,SAAS,YAC7C,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC5B,MAAC,WAAW,IAEV,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,EAC9C,QAAQ,EAAE,GAAG,EAAE;oCACb,YAAY,CAAC,KAAK,CAAC,CAAC;oCACpB,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACpB,CAAC,EACD,SAAS,EAAC,mCAAmC,aAE7C,eAAK,SAAS,EAAC,iCAAiC,aAC7C,MAAM,CAAC,IAAI,IAAI,CACd,KAAC,aAAa,IACZ,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,gCAAgC,GAC1C,CACH,EACD,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,CAAC,KAAK,GAAQ,IAC5C,EACL,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAChD,KAAC,eAAe,cACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GACV,CACnB,KAtBI,MAAM,CAAC,EAAE,CAuBF,CACf,CAAC,IA3Be,SAAS,CA4Bb,CAChB,CAAC,GACS,IACD,IACA,CACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./CommandPaletteDialog.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command-palette/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./CommandPaletteDialog.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command-palette/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,35 @@
1
+ export type SearchHit = {
2
+ path: string;
3
+ rel: string;
4
+ name: string;
5
+ is_dir: boolean;
6
+ };
7
+ export type SearchResult = {
8
+ hits: SearchHit[];
9
+ truncated: boolean;
10
+ };
11
+ type Props = {
12
+ onSearch?: (opts: {
13
+ root: string;
14
+ query: string;
15
+ limit: number;
16
+ showHidden?: boolean;
17
+ }) => Promise<SearchResult>;
18
+ showHidden?: boolean;
19
+ rootPath: string;
20
+ onOpenFile: (path: string) => void;
21
+ open: boolean;
22
+ onRequestClose: () => void;
23
+ onActiveChange?: (active: boolean) => void;
24
+ onRevealInTerminal?: (path: string) => void;
25
+ onOpenInActiveTerminal?: (path: string) => void;
26
+ onOpenInNewTerminal?: (path: string) => void;
27
+ onAttachToAgent?: (path: string) => void;
28
+ };
29
+ export type ExplorerSearchHandle = {
30
+ focus: () => void;
31
+ isFocused: () => boolean;
32
+ };
33
+ export declare const ExplorerSearch: import("react").ForwardRefExoticComponent<Props & import("react").RefAttributes<ExplorerSearchHandle>>;
34
+ export {};
35
+ //# sourceMappingURL=ExplorerSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExplorerSearch.d.ts","sourceRoot":"","sources":["../../src/explorer/ExplorerSearch.tsx"],"names":[],"mappings":"AAqCA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACjH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,cAAc,wGAwT1B,CAAC"}
@@ -0,0 +1,153 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, } from "../primitives/context-menu.js";
3
+ import { Input } from "../primitives/input.js";
4
+ import { ScrollArea } from "../primitives/scroll-area.js";
5
+ import { cn } from "../utils/cn.js";
6
+ import { Cancel01Icon, Folder01Icon, Search01Icon, } from "@hugeicons/core-free-icons";
7
+ import { HugeiconsIcon } from "@hugeicons/react";
8
+ import { forwardRef, useEffect, useImperativeHandle, useRef, useState, } from "react";
9
+ import { copyToClipboard, openInExternalEditor, revealInFinder, } from "./contextActions.js";
10
+ import { fileIconUrl } from "./iconResolver.js";
11
+ import { COMPACT_CONTENT, COMPACT_ITEM } from "./menuItemClass.js";
12
+ const MIN_QUERY_LEN = 2;
13
+ const DEBOUNCE_MS = 300;
14
+ export const ExplorerSearch = forwardRef(function ExplorerSearch({ rootPath, onOpenFile, open, onRequestClose, onActiveChange, onRevealInTerminal, onOpenInActiveTerminal, onOpenInNewTerminal, onAttachToAgent, onSearch, showHidden = false, }, ref) {
15
+ const [query, setQuery] = useState("");
16
+ const [results, setResults] = useState([]);
17
+ const [selectedIndex, setSelectedIndex] = useState(0);
18
+ const [searching, setSearching] = useState(false);
19
+ const [truncated, setTruncated] = useState(false);
20
+ const inputRef = useRef(null);
21
+ const scrollRef = useRef(null);
22
+ const lastKeyboardNavAt = useRef(0);
23
+ const active = query.trim().length > 0;
24
+ useEffect(() => {
25
+ onActiveChange?.(active);
26
+ }, [active, onActiveChange]);
27
+ useEffect(() => {
28
+ if (open) {
29
+ inputRef.current?.focus();
30
+ }
31
+ else {
32
+ setQuery("");
33
+ setResults([]);
34
+ setSelectedIndex(0);
35
+ setSearching(false);
36
+ setTruncated(false);
37
+ }
38
+ }, [open]);
39
+ useEffect(() => {
40
+ const q = query.trim();
41
+ if (q.length < MIN_QUERY_LEN) {
42
+ setResults([]);
43
+ setSelectedIndex(0);
44
+ setSearching(false);
45
+ setTruncated(false);
46
+ return;
47
+ }
48
+ setSearching(true);
49
+ let alive = true;
50
+ const handle = setTimeout(async () => {
51
+ try {
52
+ const res = onSearch
53
+ ? await onSearch({ root: rootPath, query: q, limit: 200, showHidden })
54
+ : { hits: [], truncated: false };
55
+ if (alive) {
56
+ setResults(res.hits);
57
+ setTruncated(res.truncated);
58
+ setSelectedIndex(0);
59
+ }
60
+ }
61
+ catch (e) {
62
+ if (alive) {
63
+ console.error("fs_search failed:", e);
64
+ setResults([]);
65
+ setTruncated(false);
66
+ setSelectedIndex(0);
67
+ }
68
+ }
69
+ finally {
70
+ if (alive)
71
+ setSearching(false);
72
+ }
73
+ }, DEBOUNCE_MS);
74
+ return () => {
75
+ alive = false;
76
+ clearTimeout(handle);
77
+ };
78
+ }, [query, rootPath, showHidden, onSearch]);
79
+ useImperativeHandle(ref, () => ({
80
+ focus: () => {
81
+ requestAnimationFrame(() => {
82
+ inputRef.current?.focus();
83
+ });
84
+ },
85
+ isFocused: () => document.activeElement === inputRef.current,
86
+ }), []);
87
+ useEffect(() => {
88
+ if (active && results.length > 0) {
89
+ const el = scrollRef.current?.querySelector(`[data-index="${selectedIndex}"]`);
90
+ el?.scrollIntoView({ block: "nearest" });
91
+ }
92
+ }, [selectedIndex, results, active]);
93
+ const handleSelect = (hit) => {
94
+ if (!hit.is_dir) {
95
+ onOpenFile(hit.path);
96
+ }
97
+ };
98
+ return (_jsxs("div", { className: "flex flex-col", children: [open ? (_jsxs("div", { className: "relative shrink-0 px-2 py-1.5 animate-in fade-in-0 slide-in-from-top-3 duration-200 ease-out", children: [_jsx(HugeiconsIcon, { icon: Search01Icon, size: 13, strokeWidth: 2, className: "absolute top-1/2 left-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { ref: inputRef, value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: (e) => {
99
+ if (e.key === "Escape") {
100
+ e.preventDefault();
101
+ e.stopPropagation();
102
+ onRequestClose();
103
+ return;
104
+ }
105
+ if (results.length > 0) {
106
+ if (e.key === "ArrowDown") {
107
+ e.preventDefault();
108
+ lastKeyboardNavAt.current = Date.now();
109
+ setSelectedIndex((prev) => (prev + 1) % results.length);
110
+ }
111
+ else if (e.key === "ArrowUp") {
112
+ e.preventDefault();
113
+ lastKeyboardNavAt.current = Date.now();
114
+ setSelectedIndex((prev) => (prev - 1 + results.length) % results.length);
115
+ }
116
+ else if (e.key === "Enter") {
117
+ e.preventDefault();
118
+ handleSelect(results[selectedIndex]);
119
+ }
120
+ }
121
+ }, placeholder: "Search files\u2026", className: "h-7 pr-7 pl-6.5 text-xs" }), query ? (_jsx("button", { type: "button", onClick: () => setQuery(""), className: "absolute top-1/2 right-3.5 -translate-y-1/2 rounded p-0.5 text-muted-foreground hover:bg-accent hover:text-foreground", "aria-label": "Clear search", children: _jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 11, strokeWidth: 2 }) })) : null] })) : null, active ? (_jsx(ScrollArea, { className: "min-h-0 flex-1", children: _jsxs("div", { className: "py-1", ref: scrollRef, children: [searching && results.length === 0 ? (_jsx("div", { className: "px-3 py-2 text-[11px] text-muted-foreground", children: "Searching\u2026" })) : results.length === 0 ? (_jsx("div", { className: "px-3 py-2 text-[11px] text-muted-foreground", children: "No matches" })) : (results.map((hit, index) => {
122
+ const url = hit.is_dir ? null : fileIconUrl(hit.name);
123
+ const isSelected = index === selectedIndex;
124
+ return (_jsxs(ContextMenu, { children: [_jsx(ContextMenuTrigger, { asChild: true, children: _jsxs("button", { type: "button", "data-index": index, onClick: () => handleSelect(hit), onMouseEnter: () => {
125
+ if (Date.now() - lastKeyboardNavAt.current > 250) {
126
+ setSelectedIndex(index);
127
+ }
128
+ }, className: cn("flex w-full items-center gap-1.5 px-2 py-1 text-left text-xs transition-colors", isSelected
129
+ ? "bg-accent text-foreground"
130
+ : "hover:bg-accent/50 text-foreground/80"), title: hit.path, children: [url ? (_jsx("img", { src: url, alt: "", className: "size-3.5 shrink-0" })) : (_jsx(HugeiconsIcon, { icon: Folder01Icon, size: 13, strokeWidth: 1.75, className: "shrink-0 text-muted-foreground" })), _jsx("span", { className: "truncate", children: hit.name }), _jsx("span", { className: "ml-auto truncate text-[10px] text-muted-foreground", children: hit.rel })] }) }), _jsxs(ContextMenuContent, { className: COMPACT_CONTENT, children: [!hit.is_dir && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onOpenFile(hit.path), children: "Open" })), (onOpenInActiveTerminal || onRevealInTerminal) && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => {
131
+ const target = hit.is_dir
132
+ ? hit.path
133
+ : hit.path.slice(0, hit.path.lastIndexOf("/")) || rootPath;
134
+ if (onOpenInActiveTerminal) {
135
+ onOpenInActiveTerminal(target);
136
+ }
137
+ else if (onRevealInTerminal) {
138
+ onRevealInTerminal(target);
139
+ }
140
+ }, children: "Open in Active Terminal" })), (onOpenInNewTerminal || onRevealInTerminal) && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => {
141
+ const target = hit.is_dir
142
+ ? hit.path
143
+ : hit.path.slice(0, hit.path.lastIndexOf("/")) || rootPath;
144
+ if (onOpenInNewTerminal) {
145
+ onOpenInNewTerminal(target);
146
+ }
147
+ else if (onRevealInTerminal) {
148
+ onRevealInTerminal(target);
149
+ }
150
+ }, children: "Open in New Terminal" })), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => void revealInFinder(hit.path), children: "Reveal in Finder" }), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => void openInExternalEditor(hit.path), children: "Open in External Editor" }), _jsx(ContextMenuSeparator, {}), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => void copyToClipboard(hit.path), children: "Copy Path" }), _jsx(ContextMenuSeparator, {}), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onAttachToAgent?.(hit.path), children: "Attach to Agent" })] })] }, hit.path));
151
+ })), truncated && results.length > 0 ? (_jsx("div", { className: "px-3 py-1.5 text-[10px] text-muted-foreground", children: "Showing partial results \u2014 refine your query." })) : null] }) })) : null] }));
152
+ });
153
+ //# sourceMappingURL=ExplorerSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExplorerSearch.js","sourceRoot":"","sources":["../../src/explorer/ExplorerSearch.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAGpC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,WAAW,GAAG,GAAG,CAAC;AAiCxB,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CACrB,EACE,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,UAAU,GAAG,KAAK,GACZ,EACR,GAAG;IAGH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,QAAQ;oBAC5B,CAAC,CAAC,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;oBACtE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACzB,IAAI,KAAK,EAAE,CAAC;oBACV,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrB,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5B,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;oBACtC,UAAU,CAAC,EAAE,CAAC,CAAC;oBACf,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,EAAE,WAAW,CAAC,CAAC;QAEhB,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAC;YACd,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE5C,mBAAmB,CACjB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,EAAE,GAAG,EAAE;YACV,qBAAqB,CAAC,GAAG,EAAE;gBACzB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,OAAO;KAC7D,CAAC,EACF,EAAE,CACH,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CACzC,gBAAgB,aAAa,IAAI,CAClC,CAAC;YACF,EAAE,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAErC,MAAM,YAAY,GAAG,CAAC,GAAc,EAAE,EAAE;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC3B,IAAI,CAAC,CAAC,CAAC,CACN,eAAK,SAAS,EAAC,8FAA8F,aAC3G,KAAC,aAAa,IACZ,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,EAAE,EACR,WAAW,EAAE,CAAC,EACd,SAAS,EAAC,gEAAgE,GAC1E,EACF,KAAC,KAAK,IACJ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;4BACf,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gCACvB,CAAC,CAAC,cAAc,EAAE,CAAC;gCACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gCACpB,cAAc,EAAE,CAAC;gCACjB,OAAO;4BACT,CAAC;4BACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACvB,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;oCAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;oCACnB,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oCACvC,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gCAC1D,CAAC;qCAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oCAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;oCACnB,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oCACvC,gBAAgB,CACd,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CACvD,CAAC;gCACJ,CAAC;qCAAM,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oCAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;oCACnB,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;gCACvC,CAAC;4BACH,CAAC;wBACH,CAAC,EACD,WAAW,EAAC,oBAAe,EAC3B,SAAS,EAAC,yBAAyB,GACnC,EACD,KAAK,CAAC,CAAC,CAAC,CACP,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC3B,SAAS,EAAC,uHAAuH,gBACtH,cAAc,YAEzB,KAAC,aAAa,IAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,GAAI,GACxD,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,UAAU,IAAC,SAAS,EAAC,gBAAgB,YACpC,eAAK,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,SAAS,aACjC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnC,cAAK,SAAS,EAAC,6CAA6C,gCAEtD,CACP,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACzB,cAAK,SAAS,EAAC,6CAA6C,2BAEtD,CACP,CAAC,CAAC,CAAC,CACF,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;4BACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACtD,MAAM,UAAU,GAAG,KAAK,KAAK,aAAa,CAAC;4BAC3C,OAAO,CACL,MAAC,WAAW,eACV,KAAC,kBAAkB,IAAC,OAAO,kBACzB,kBACE,IAAI,EAAC,QAAQ,gBACD,KAAK,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAChC,YAAY,EAAE,GAAG,EAAE;gDACjB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;oDACjD,gBAAgB,CAAC,KAAK,CAAC,CAAC;gDAC1B,CAAC;4CACH,CAAC,EACD,SAAS,EAAE,EAAE,CACX,gFAAgF,EAChF,UAAU;gDACR,CAAC,CAAC,2BAA2B;gDAC7B,CAAC,CAAC,uCAAuC,CAC5C,EACD,KAAK,EAAE,GAAG,CAAC,IAAI,aAEd,GAAG,CAAC,CAAC,CAAC,CACL,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAC,EAAE,EACN,SAAS,EAAC,mBAAmB,GAC7B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IACZ,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,EAAE,EACR,WAAW,EAAE,IAAI,EACjB,SAAS,EAAC,gCAAgC,GAC1C,CACH,EACD,eAAM,SAAS,EAAC,UAAU,YAAE,GAAG,CAAC,IAAI,GAAQ,EAC5C,eAAM,SAAS,EAAC,oDAAoD,YACjE,GAAG,CAAC,GAAG,GACH,IACA,GACU,EACrB,MAAC,kBAAkB,IAAC,SAAS,EAAE,eAAe,aAC3C,CAAC,GAAG,CAAC,MAAM,IAAI,CACd,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,qBAGpB,CACnB,EACA,CAAC,sBAAsB,IAAI,kBAAkB,CAAC,IAAI,CACjD,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE;oDACb,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;wDACvB,CAAC,CAAC,GAAG,CAAC,IAAI;wDACV,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CACZ,CAAC,EACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAC1B,IAAI,QAAQ,CAAC;oDAClB,IAAI,sBAAsB,EAAE,CAAC;wDAC3B,sBAAsB,CAAC,MAAM,CAAC,CAAC;oDACjC,CAAC;yDAAM,IAAI,kBAAkB,EAAE,CAAC;wDAC9B,kBAAkB,CAAC,MAAM,CAAC,CAAC;oDAC7B,CAAC;gDACH,CAAC,wCAGe,CACnB,EACA,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,IAAI,CAC9C,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE;oDACb,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;wDACvB,CAAC,CAAC,GAAG,CAAC,IAAI;wDACV,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CACZ,CAAC,EACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAC1B,IAAI,QAAQ,CAAC;oDAClB,IAAI,mBAAmB,EAAE,CAAC;wDACxB,mBAAmB,CAAC,MAAM,CAAC,CAAC;oDAC9B,CAAC;yDAAM,IAAI,kBAAkB,EAAE,CAAC;wDAC9B,kBAAkB,CAAC,MAAM,CAAC,CAAC;oDAC7B,CAAC;gDACH,CAAC,qCAGe,CACnB,EACD,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,iCAG7B,EAClB,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,wCAGnC,EAClB,KAAC,oBAAoB,KAAG,EACxB,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,0BAG9B,EAClB,KAAC,oBAAoB,KAAG,EACxB,KAAC,eAAe,IACd,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gCAG3B,IACC,KAlHL,GAAG,CAAC,IAAI,CAmHZ,CACf,CAAC;wBACJ,CAAC,CAAC,CACH,EACA,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,cAAK,SAAS,EAAC,+CAA+C,kEAExD,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,GACK,CACd,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,65 @@
1
+ import * as React from "react";
2
+ import { type FileTreeActions } from "./TreeRow.js";
3
+ import type { TreeState } from "@termaxjs/web-core";
4
+ export type Row = {
5
+ kind: "entry";
6
+ key: string;
7
+ path: string;
8
+ name: string;
9
+ isDir: boolean;
10
+ isExpanded: boolean;
11
+ depth: number;
12
+ } | {
13
+ kind: "rename";
14
+ key: string;
15
+ path: string;
16
+ name: string;
17
+ isDir: boolean;
18
+ depth: number;
19
+ } | {
20
+ kind: "pending";
21
+ key: string;
22
+ depth: number;
23
+ pendingKind: "file" | "dir";
24
+ } | {
25
+ kind: "status";
26
+ key: string;
27
+ depth: number;
28
+ tone: "muted" | "error";
29
+ message: string;
30
+ };
31
+ export declare function measureContentWidth(rows: Row[]): number;
32
+ export interface TreeData extends FileTreeActions {
33
+ nodes: TreeState;
34
+ expanded: Set<string>;
35
+ joinPath: (parent: string, name: string) => string;
36
+ }
37
+ export declare function buildRows(rootPath: string, tree: TreeData): {
38
+ rows: Row[];
39
+ entryIndexByPath: Map<string, number>;
40
+ };
41
+ export type FileTreeProps = {
42
+ rootPath: string | null;
43
+ tree: TreeData;
44
+ activeFilePath?: string | null;
45
+ selectedPaths: Set<string>;
46
+ onSelectPath: (path: string, e?: React.MouseEvent) => void;
47
+ onOpenFile: (path: string, pin?: boolean) => void;
48
+ onRevealInTerminal?: (path: string) => void;
49
+ onOpenInActiveTerminal?: (path: string) => void;
50
+ onOpenInNewTerminal?: (path: string) => void;
51
+ onAttachToAgent?: (path: string) => void;
52
+ onOpenMarkdownPreview?: (path: string) => void;
53
+ onOpenInSplitPane?: (path: string, dir: "row" | "col", edge: "before" | "after") => void;
54
+ onNavigateRoot?: (path: string) => void;
55
+ clipboard?: {
56
+ paths: string[];
57
+ isCut: boolean;
58
+ } | null;
59
+ onCopy?: (isCut: boolean) => void;
60
+ onPaste?: (targetDir: string) => Promise<void>;
61
+ onContentWidth?: (px: number) => void;
62
+ className?: string;
63
+ };
64
+ export declare const FileTree: React.ForwardRefExoticComponent<FileTreeProps & React.RefAttributes<HTMLDivElement>>;
65
+ //# sourceMappingURL=FileTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileTree.d.ts","sourceRoot":"","sources":["../../src/explorer/FileTree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { useVirtualizer } from "@tanstack/react-virtual";
4
+ import { EntryRow, PendingRow, StatusRow } from "./TreeRow.js";
5
+ import { cn } from "../utils/cn.js";
6
+ const ROW_HEIGHT = 24;
7
+ const OVERSCAN = 8;
8
+ const ROW_INDENT_PX = 12;
9
+ const ROW_CHEVRON_PX = 18;
10
+ const ROW_ICON_PX = 22;
11
+ const ROW_PADDING_PX = 10;
12
+ const ROW_RIGHT_MARGIN = 20;
13
+ export function measureContentWidth(rows) {
14
+ try {
15
+ const canvas = document.createElement("canvas");
16
+ const ctx = canvas.getContext("2d");
17
+ if (!ctx)
18
+ return 0;
19
+ ctx.font = '12px Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif';
20
+ let max = 0;
21
+ for (const row of rows) {
22
+ if (row.kind !== "entry" && row.kind !== "rename")
23
+ continue;
24
+ const indent = ROW_PADDING_PX +
25
+ row.depth * ROW_INDENT_PX +
26
+ ROW_CHEVRON_PX +
27
+ ROW_ICON_PX;
28
+ const textW = ctx.measureText(row.name).width;
29
+ const total = indent + textW + ROW_RIGHT_MARGIN;
30
+ if (total > max)
31
+ max = total;
32
+ }
33
+ return Math.ceil(max);
34
+ }
35
+ catch {
36
+ return 0;
37
+ }
38
+ }
39
+ export function buildRows(rootPath, tree) {
40
+ const rows = [];
41
+ const entryIndexByPath = new Map();
42
+ const walk = (parent, depth) => {
43
+ const node = tree.nodes[parent];
44
+ if (node?.status !== "loaded")
45
+ return;
46
+ for (const entry of node.entries) {
47
+ const path = tree.joinPath(parent, entry.name);
48
+ const isDir = entry.kind === "dir";
49
+ const expanded = isDir && tree.expanded.has(path);
50
+ const isRenaming = tree.renaming === path;
51
+ if (isRenaming) {
52
+ rows.push({
53
+ kind: "rename",
54
+ key: `rename:${path}`,
55
+ path,
56
+ name: entry.name,
57
+ isDir,
58
+ depth,
59
+ });
60
+ }
61
+ else {
62
+ entryIndexByPath.set(path, rows.length);
63
+ rows.push({
64
+ kind: "entry",
65
+ key: path,
66
+ path,
67
+ name: entry.name,
68
+ isDir,
69
+ isExpanded: expanded,
70
+ depth,
71
+ });
72
+ }
73
+ if (isDir && expanded) {
74
+ const child = tree.nodes[path];
75
+ if (tree.pendingCreate?.parentPath === path) {
76
+ rows.push({
77
+ kind: "pending",
78
+ key: `pending:${path}`,
79
+ depth: depth + 1,
80
+ pendingKind: tree.pendingCreate.kind,
81
+ });
82
+ }
83
+ if (child?.status === "loading") {
84
+ rows.push({
85
+ kind: "status",
86
+ key: `loading:${path}`,
87
+ depth: depth + 1,
88
+ tone: "muted",
89
+ message: "Loading...",
90
+ });
91
+ }
92
+ else if (child?.status === "error") {
93
+ rows.push({
94
+ kind: "status",
95
+ key: `error:${path}`,
96
+ depth: depth + 1,
97
+ tone: "error",
98
+ message: child.message,
99
+ });
100
+ }
101
+ else if (child?.status === "loaded" &&
102
+ child.entries.length === 0 &&
103
+ tree.pendingCreate?.parentPath !== path) {
104
+ rows.push({
105
+ kind: "status",
106
+ key: `empty:${path}`,
107
+ depth: depth + 1,
108
+ tone: "muted",
109
+ message: "Empty directory",
110
+ });
111
+ }
112
+ else if (child?.status === "loaded") {
113
+ walk(path, depth + 1);
114
+ }
115
+ }
116
+ }
117
+ };
118
+ const root = tree.nodes[rootPath];
119
+ if (tree.pendingCreate?.parentPath === rootPath) {
120
+ rows.push({
121
+ kind: "pending",
122
+ key: `pending:${rootPath}`,
123
+ depth: 0,
124
+ pendingKind: tree.pendingCreate.kind,
125
+ });
126
+ }
127
+ if (!root || root.status === "loading" || root.status === "idle") {
128
+ rows.push({
129
+ kind: "status",
130
+ key: `loading:${rootPath}`,
131
+ depth: 0,
132
+ tone: "muted",
133
+ message: "Loading...",
134
+ });
135
+ }
136
+ else if (root.status === "error") {
137
+ rows.push({
138
+ kind: "status",
139
+ key: `error:${rootPath}`,
140
+ depth: 0,
141
+ tone: "error",
142
+ message: root.message,
143
+ });
144
+ }
145
+ else if (root.status === "loaded" && root.entries.length === 0 && tree.pendingCreate?.parentPath !== rootPath) {
146
+ rows.push({
147
+ kind: "status",
148
+ key: `empty:${rootPath}`,
149
+ depth: 0,
150
+ tone: "muted",
151
+ message: "Empty directory",
152
+ });
153
+ }
154
+ else if (root.status === "loaded") {
155
+ walk(rootPath, 0);
156
+ }
157
+ return { rows, entryIndexByPath };
158
+ }
159
+ export const FileTree = React.forwardRef(function FileTree({ rootPath, tree, selectedPaths, onSelectPath, onOpenFile, onRevealInTerminal, onOpenInActiveTerminal, onOpenInNewTerminal, onAttachToAgent, onOpenMarkdownPreview, onOpenInSplitPane, onNavigateRoot, clipboard, onCopy, onPaste, onContentWidth, className, }, ref) {
160
+ const scrollRef = React.useRef(null);
161
+ const { rows, entryIndexByPath } = React.useMemo(() => {
162
+ if (!rootPath) {
163
+ return {
164
+ rows: [],
165
+ entryIndexByPath: new Map(),
166
+ };
167
+ }
168
+ return buildRows(rootPath, tree);
169
+ }, [rootPath, tree]);
170
+ React.useEffect(() => {
171
+ if (onContentWidth && rootPath && rows.length > 0) {
172
+ const w = measureContentWidth(rows);
173
+ if (w > 0)
174
+ onContentWidth(w);
175
+ }
176
+ }, [rootPath, rows, onContentWidth]);
177
+ const virtualizer = useVirtualizer({
178
+ count: rows.length,
179
+ getScrollElement: () => scrollRef.current,
180
+ estimateSize: () => ROW_HEIGHT,
181
+ overscan: OVERSCAN,
182
+ getItemKey: (index) => rows[index]?.key ?? index,
183
+ });
184
+ if (!rootPath) {
185
+ return (_jsx("div", { className: "flex flex-1 items-center justify-center p-4 text-xs text-muted-foreground", children: "No directory open" }));
186
+ }
187
+ return (_jsx("section", { ref: ref, "aria-label": "File explorer", className: cn("flex-1 overflow-auto outline-none select-none", className), children: _jsx("div", { ref: scrollRef, className: "h-full w-full overflow-auto", children: _jsx("div", { style: {
188
+ height: `${virtualizer.getTotalSize()}px`,
189
+ width: "100%",
190
+ position: "relative",
191
+ }, children: virtualizer.getVirtualItems().map((item) => {
192
+ const row = rows[item.index];
193
+ if (!row)
194
+ return null;
195
+ return (_jsx("div", { style: {
196
+ position: "absolute",
197
+ top: 0,
198
+ left: 0,
199
+ width: "100%",
200
+ height: `${item.size}px`,
201
+ transform: `translateY(${item.start}px)`,
202
+ }, children: row.kind === "entry" ? (_jsx(EntryRow, { path: row.path, name: row.name, isDir: row.isDir, isExpanded: row.isExpanded, depth: row.depth, rootPath: rootPath, tree: tree, isSelected: selectedPaths.has(row.path), selectedPaths: selectedPaths, isRenaming: false, onOpenFile: onOpenFile, onSelectPath: onSelectPath, onRevealInTerminal: onRevealInTerminal, onOpenInActiveTerminal: onOpenInActiveTerminal, onOpenInNewTerminal: onOpenInNewTerminal, onAttachToAgent: onAttachToAgent, onOpenMarkdownPreview: onOpenMarkdownPreview, onOpenInSplitPane: onOpenInSplitPane, onNavigateRoot: onNavigateRoot, clipboard: clipboard, onCopy: onCopy, onPaste: onPaste })) : row.kind === "rename" ? (_jsx(EntryRow, { path: row.path, name: row.name, isDir: row.isDir, isExpanded: false, depth: row.depth, rootPath: rootPath, tree: tree, isSelected: selectedPaths.has(row.path), selectedPaths: selectedPaths, isRenaming: true, onOpenFile: onOpenFile, onSelectPath: onSelectPath })) : row.kind === "pending" ? (_jsx(PendingRow, { depth: row.depth, kind: row.pendingKind, onCommit: (name) => tree.commitCreate?.(name), onCancel: () => tree.cancelCreate?.() })) : (_jsx(StatusRow, { depth: row.depth, tone: row.tone, message: row.message })) }, row.key));
203
+ }) }) }) }));
204
+ });
205
+ //# sourceMappingURL=FileTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileTree.js","sourceRoot":"","sources":["../../src/explorer/FileTree.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAwB,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AA8BpC,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,UAAU,mBAAmB,CAAC,IAAW;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QACnB,GAAG,CAAC,IAAI,GAAG,uEAAuE,CAAC;QACnF,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAC5D,MAAM,MAAM,GACV,cAAc;gBACd,GAAG,CAAC,KAAK,GAAG,aAAa;gBACzB,cAAc;gBACd,WAAW,CAAC;YACd,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAC9C,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,gBAAgB,CAAC;YAChD,IAAI,KAAK,GAAG,GAAG;gBAAE,GAAG,GAAG,KAAK,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,IAAc;IAEd,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEnD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ;YAAE,OAAO;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YACnC,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;YAC1C,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,UAAU,IAAI,EAAE;oBACrB,IAAI;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK;oBACL,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,IAAI;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK;oBACL,UAAU,EAAE,QAAQ;oBACpB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;YACD,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,EAAE,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,SAAS;wBACf,GAAG,EAAE,WAAW,IAAI,EAAE;wBACtB,KAAK,EAAE,KAAK,GAAG,CAAC;wBAChB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;qBACrC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,WAAW,IAAI,EAAE;wBACtB,KAAK,EAAE,KAAK,GAAG,CAAC;wBAChB,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,YAAY;qBACtB,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,SAAS,IAAI,EAAE;wBACpB,KAAK,EAAE,KAAK,GAAG,CAAC;wBAChB,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,KAAK,EAAE,MAAM,KAAK,QAAQ;oBAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;oBAC1B,IAAI,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,EACvC,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,SAAS,IAAI,EAAE;wBACpB,KAAK,EAAE,KAAK,GAAG,CAAC;wBAChB,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,iBAAiB;qBAC3B,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACtC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,WAAW,QAAQ,EAAE;YAC1B,KAAK,EAAE,CAAC;YACR,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;SACrC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,WAAW,QAAQ,EAAE;YAC1B,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,SAAS,QAAQ,EAAE;YACxB,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChH,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,SAAS,QAAQ,EAAE;YACxB,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACpC,CAAC;AA2BD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CACtC,SAAS,QAAQ,CACf,EACE,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,MAAM,EACN,OAAO,EACP,cAAc,EACd,SAAS,GACK,EAChB,GAAG;IAEH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAErD,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,IAAI,EAAE,EAAW;gBACjB,gBAAgB,EAAE,IAAI,GAAG,EAAkB;aAC5C,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAErB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,cAAc,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC;gBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAErC,MAAM,WAAW,GAAG,cAAc,CAAC;QACjC,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QACzC,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU;QAC9B,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK;KACjD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,kCAEpF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,kBACE,GAAG,EAAE,GAAG,gBACG,eAAe,EAC1B,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,SAAS,CAAC,YAEzE,cAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,6BAA6B,YAC1D,cACE,KAAK,EAAE;oBACL,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI;oBACzC,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,UAAU;iBACrB,YAEA,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,IAAI,CAAC,GAAG;wBAAE,OAAO,IAAI,CAAC;oBAEtB,OAAO,CACL,cAEE,KAAK,EAAE;4BACL,QAAQ,EAAE,UAAU;4BACpB,GAAG,EAAE,CAAC;4BACN,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI;4BACxB,SAAS,EAAE,cAAc,IAAI,CAAC,KAAK,KAAK;yBACzC,YAEA,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACtB,KAAC,QAAQ,IACP,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EACvC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,KAAK,EACjB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,CACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC1B,KAAC,QAAQ,IACP,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,UAAU,EAAE,KAAK,EACjB,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EACvC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC3B,KAAC,UAAU,IACT,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,IAAI,EAAE,GAAG,CAAC,WAAW,EACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAC7C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GACrC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IACR,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,OAAO,EAAE,GAAG,CAAC,OAAO,GACpB,CACH,IA/DI,GAAG,CAAC,GAAG,CAgER,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,GACF,GACE,CACX,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ type Props = {
2
+ initial: string;
3
+ placeholder?: string;
4
+ onCommit: (value: string) => void;
5
+ onCancel: () => void;
6
+ };
7
+ /**
8
+ * Self-focusing single-line input for rename / create flows in the tree.
9
+ * Enter commits, Escape cancels, blur commits (matches VSCode behavior —
10
+ * dismissing the input is an implicit commit so a typed name isn't lost).
11
+ */
12
+ export declare function InlineInput({ initial, placeholder, onCommit, onCancel, }: Props): import("react").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=InlineInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineInput.d.ts","sourceRoot":"","sources":["../../src/explorer/InlineInput.tsx"],"names":[],"mappings":"AAEA,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,GACT,EAAE,KAAK,+BA2EP"}