@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.
- package/LICENSE +201 -0
- package/dist/ai/AgentStatusPill.d.ts +13 -0
- package/dist/ai/AgentStatusPill.d.ts.map +1 -0
- package/dist/ai/AgentStatusPill.js +28 -0
- package/dist/ai/AgentStatusPill.js.map +1 -0
- package/dist/ai/AiToolApproval.d.ts +12 -0
- package/dist/ai/AiToolApproval.d.ts.map +1 -0
- package/dist/ai/AiToolApproval.js +63 -0
- package/dist/ai/AiToolApproval.js.map +1 -0
- package/dist/ai/Chip.d.ts +17 -0
- package/dist/ai/Chip.d.ts.map +1 -0
- package/dist/ai/Chip.js +39 -0
- package/dist/ai/Chip.js.map +1 -0
- package/dist/ai/ChipsRow.d.ts +35 -0
- package/dist/ai/ChipsRow.d.ts.map +1 -0
- package/dist/ai/ChipsRow.js +32 -0
- package/dist/ai/ChipsRow.js.map +1 -0
- package/dist/ai/TodoStrip.d.ts +11 -0
- package/dist/ai/TodoStrip.d.ts.map +1 -0
- package/dist/ai/TodoStrip.js +27 -0
- package/dist/ai/TodoStrip.js.map +1 -0
- package/dist/ai/index.d.ts +6 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +6 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/command-palette/CommandPaletteDialog.d.ts +19 -0
- package/dist/command-palette/CommandPaletteDialog.d.ts.map +1 -0
- package/dist/command-palette/CommandPaletteDialog.js +23 -0
- package/dist/command-palette/CommandPaletteDialog.js.map +1 -0
- package/dist/command-palette/index.d.ts +2 -0
- package/dist/command-palette/index.d.ts.map +1 -0
- package/dist/command-palette/index.js +2 -0
- package/dist/command-palette/index.js.map +1 -0
- package/dist/explorer/ExplorerSearch.d.ts +35 -0
- package/dist/explorer/ExplorerSearch.d.ts.map +1 -0
- package/dist/explorer/ExplorerSearch.js +153 -0
- package/dist/explorer/ExplorerSearch.js.map +1 -0
- package/dist/explorer/FileTree.d.ts +65 -0
- package/dist/explorer/FileTree.d.ts.map +1 -0
- package/dist/explorer/FileTree.js +205 -0
- package/dist/explorer/FileTree.js.map +1 -0
- package/dist/explorer/InlineInput.d.ts +14 -0
- package/dist/explorer/InlineInput.d.ts.map +1 -0
- package/dist/explorer/InlineInput.js +77 -0
- package/dist/explorer/InlineInput.js.map +1 -0
- package/dist/explorer/TreeRow.d.ts +64 -0
- package/dist/explorer/TreeRow.d.ts.map +1 -0
- package/dist/explorer/TreeRow.js +100 -0
- package/dist/explorer/TreeRow.js.map +1 -0
- package/dist/explorer/constants.d.ts +12 -0
- package/dist/explorer/constants.d.ts.map +1 -0
- package/dist/explorer/constants.js +72 -0
- package/dist/explorer/constants.js.map +1 -0
- package/dist/explorer/contextActions.d.ts +5 -0
- package/dist/explorer/contextActions.d.ts.map +1 -0
- package/dist/explorer/contextActions.js +38 -0
- package/dist/explorer/contextActions.js.map +1 -0
- package/dist/explorer/iconMap.json +1 -0
- package/dist/explorer/iconResolver.d.ts +3 -0
- package/dist/explorer/iconResolver.d.ts.map +1 -0
- package/dist/explorer/iconResolver.js +98 -0
- package/dist/explorer/iconResolver.js.map +1 -0
- package/dist/explorer/index.d.ts +8 -0
- package/dist/explorer/index.d.ts.map +1 -0
- package/dist/explorer/index.js +8 -0
- package/dist/explorer/index.js.map +1 -0
- package/dist/explorer/menuItemClass.d.ts +3 -0
- package/dist/explorer/menuItemClass.d.ts.map +1 -0
- package/dist/explorer/menuItemClass.js +6 -0
- package/dist/explorer/menuItemClass.js.map +1 -0
- package/dist/explorer/types.d.ts +2 -0
- package/dist/explorer/types.d.ts.map +1 -0
- package/dist/explorer/types.js +2 -0
- package/dist/explorer/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/PaneChip.d.ts +13 -0
- package/dist/layout/PaneChip.d.ts.map +1 -0
- package/dist/layout/PaneChip.js +19 -0
- package/dist/layout/PaneChip.js.map +1 -0
- package/dist/layout/TabBar.d.ts +36 -0
- package/dist/layout/TabBar.d.ts.map +1 -0
- package/dist/layout/TabBar.js +237 -0
- package/dist/layout/TabBar.js.map +1 -0
- package/dist/layout/TabItem.d.ts +19 -0
- package/dist/layout/TabItem.d.ts.map +1 -0
- package/dist/layout/TabItem.js +66 -0
- package/dist/layout/TabItem.js.map +1 -0
- package/dist/layout/index.d.ts +7 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +7 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/leafState.d.ts +15 -0
- package/dist/layout/leafState.d.ts.map +1 -0
- package/dist/layout/leafState.js +70 -0
- package/dist/layout/leafState.js.map +1 -0
- package/dist/layout/resizable.d.ts +31 -0
- package/dist/layout/resizable.d.ts.map +1 -0
- package/dist/layout/resizable.js +16 -0
- package/dist/layout/resizable.js.map +1 -0
- package/dist/layout/tabLabel.d.ts +9 -0
- package/dist/layout/tabLabel.d.ts.map +1 -0
- package/dist/layout/tabLabel.js +31 -0
- package/dist/layout/tabLabel.js.map +1 -0
- package/dist/primitives/alert-dialog.d.ts +19 -0
- package/dist/primitives/alert-dialog.d.ts.map +1 -0
- package/dist/primitives/alert-dialog.js +42 -0
- package/dist/primitives/alert-dialog.js.map +1 -0
- package/dist/primitives/alert.d.ts +11 -0
- package/dist/primitives/alert.d.ts.map +1 -0
- package/dist/primitives/alert.js +28 -0
- package/dist/primitives/alert.js.map +1 -0
- package/dist/primitives/badge.d.ts +10 -0
- package/dist/primitives/badge.d.ts.map +1 -0
- package/dist/primitives/badge.js +25 -0
- package/dist/primitives/badge.js.map +1 -0
- package/dist/primitives/breadcrumb.d.ts +12 -0
- package/dist/primitives/breadcrumb.d.ts.map +1 -0
- package/dist/primitives/breadcrumb.js +29 -0
- package/dist/primitives/breadcrumb.js.map +1 -0
- package/dist/primitives/button-group.d.ts +12 -0
- package/dist/primitives/button-group.d.ts.map +1 -0
- package/dist/primitives/button-group.js +28 -0
- package/dist/primitives/button-group.js.map +1 -0
- package/dist/primitives/button.d.ts +11 -0
- package/dist/primitives/button.d.ts.map +1 -0
- package/dist/primitives/button.js +36 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/card.d.ts +12 -0
- package/dist/primitives/card.d.ts.map +1 -0
- package/dist/primitives/card.js +25 -0
- package/dist/primitives/card.js.map +1 -0
- package/dist/primitives/checkbox.d.ts +5 -0
- package/dist/primitives/checkbox.d.ts.map +1 -0
- package/dist/primitives/checkbox.js +10 -0
- package/dist/primitives/checkbox.js.map +1 -0
- package/dist/primitives/collapsible.d.ts +6 -0
- package/dist/primitives/collapsible.d.ts.map +1 -0
- package/dist/primitives/collapsible.js +13 -0
- package/dist/primitives/collapsible.js.map +1 -0
- package/dist/primitives/command.d.ts +36 -0
- package/dist/primitives/command.d.ts.map +1 -0
- package/dist/primitives/command.js +103 -0
- package/dist/primitives/command.js.map +1 -0
- package/dist/primitives/context-menu.d.ts +41 -0
- package/dist/primitives/context-menu.d.ts.map +1 -0
- package/dist/primitives/context-menu.js +83 -0
- package/dist/primitives/context-menu.js.map +1 -0
- package/dist/primitives/dialog.d.ts +18 -0
- package/dist/primitives/dialog.d.ts.map +1 -0
- package/dist/primitives/dialog.js +38 -0
- package/dist/primitives/dialog.js.map +1 -0
- package/dist/primitives/dropdown-menu.d.ts +30 -0
- package/dist/primitives/dropdown-menu.d.ts.map +1 -0
- package/dist/primitives/dropdown-menu.js +52 -0
- package/dist/primitives/dropdown-menu.js.map +1 -0
- package/dist/primitives/empty.d.ts +12 -0
- package/dist/primitives/empty.d.ts.map +1 -0
- package/dist/primitives/empty.js +34 -0
- package/dist/primitives/empty.js.map +1 -0
- package/dist/primitives/hover-card.d.ts +7 -0
- package/dist/primitives/hover-card.d.ts.map +1 -0
- package/dist/primitives/hover-card.js +14 -0
- package/dist/primitives/hover-card.js.map +1 -0
- package/dist/primitives/index.d.ts +40 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +40 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/input-group.d.ts +17 -0
- package/dist/primitives/input-group.d.ts.map +1 -0
- package/dist/primitives/input-group.js +59 -0
- package/dist/primitives/input-group.js.map +1 -0
- package/dist/primitives/input.d.ts +4 -0
- package/dist/primitives/input.d.ts.map +1 -0
- package/dist/primitives/input.js +7 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/item.d.ts +24 -0
- package/dist/primitives/item.d.ts.map +1 -0
- package/dist/primitives/item.js +68 -0
- package/dist/primitives/item.js.map +1 -0
- package/dist/primitives/kbd.d.ts +4 -0
- package/dist/primitives/kbd.d.ts.map +1 -0
- package/dist/primitives/kbd.js +10 -0
- package/dist/primitives/kbd.js.map +1 -0
- package/dist/primitives/label.d.ts +5 -0
- package/dist/primitives/label.d.ts.map +1 -0
- package/dist/primitives/label.js +8 -0
- package/dist/primitives/label.js.map +1 -0
- package/dist/primitives/menubar.d.ts +31 -0
- package/dist/primitives/menubar.d.ts.map +1 -0
- package/dist/primitives/menubar.js +55 -0
- package/dist/primitives/menubar.js.map +1 -0
- package/dist/primitives/popover.d.ts +11 -0
- package/dist/primitives/popover.d.ts.map +1 -0
- package/dist/primitives/popover.js +27 -0
- package/dist/primitives/popover.js.map +1 -0
- package/dist/primitives/progress.d.ts +5 -0
- package/dist/primitives/progress.d.ts.map +1 -0
- package/dist/primitives/progress.js +8 -0
- package/dist/primitives/progress.js.map +1 -0
- package/dist/primitives/radio-group.d.ts +6 -0
- package/dist/primitives/radio-group.d.ts.map +1 -0
- package/dist/primitives/radio-group.js +11 -0
- package/dist/primitives/radio-group.js.map +1 -0
- package/dist/primitives/resizable.d.ts +31 -0
- package/dist/primitives/resizable.d.ts.map +1 -0
- package/dist/primitives/resizable.js +16 -0
- package/dist/primitives/resizable.js.map +1 -0
- package/dist/primitives/scroll-area.d.ts +6 -0
- package/dist/primitives/scroll-area.d.ts.map +1 -0
- package/dist/primitives/scroll-area.js +11 -0
- package/dist/primitives/scroll-area.js.map +1 -0
- package/dist/primitives/select.d.ts +16 -0
- package/dist/primitives/select.d.ts.map +1 -0
- package/dist/primitives/select.js +37 -0
- package/dist/primitives/select.js.map +1 -0
- package/dist/primitives/separator.d.ts +5 -0
- package/dist/primitives/separator.d.ts.map +1 -0
- package/dist/primitives/separator.js +8 -0
- package/dist/primitives/separator.js.map +1 -0
- package/dist/primitives/sheet.d.ts +15 -0
- package/dist/primitives/sheet.d.ts.map +1 -0
- package/dist/primitives/sheet.js +38 -0
- package/dist/primitives/sheet.js.map +1 -0
- package/dist/primitives/skeleton.d.ts +3 -0
- package/dist/primitives/skeleton.d.ts.map +1 -0
- package/dist/primitives/skeleton.js +7 -0
- package/dist/primitives/skeleton.js.map +1 -0
- package/dist/primitives/slider.d.ts +5 -0
- package/dist/primitives/slider.d.ts.map +1 -0
- package/dist/primitives/slider.js +14 -0
- package/dist/primitives/slider.js.map +1 -0
- package/dist/primitives/sonner.d.ts +5 -0
- package/dist/primitives/sonner.d.ts.map +1 -0
- package/dist/primitives/sonner.js +12 -0
- package/dist/primitives/sonner.js.map +1 -0
- package/dist/primitives/spinner.d.ts +3 -0
- package/dist/primitives/spinner.d.ts.map +1 -0
- package/dist/primitives/spinner.js +11 -0
- package/dist/primitives/spinner.js.map +1 -0
- package/dist/primitives/switch.d.ts +7 -0
- package/dist/primitives/switch.d.ts.map +1 -0
- package/dist/primitives/switch.js +18 -0
- package/dist/primitives/switch.js.map +1 -0
- package/dist/primitives/tabs.d.ts +12 -0
- package/dist/primitives/tabs.d.ts.map +1 -0
- package/dist/primitives/tabs.js +29 -0
- package/dist/primitives/tabs.js.map +1 -0
- package/dist/primitives/textarea.d.ts +4 -0
- package/dist/primitives/textarea.d.ts.map +1 -0
- package/dist/primitives/textarea.js +7 -0
- package/dist/primitives/textarea.js.map +1 -0
- package/dist/primitives/toggle-group.d.ts +11 -0
- package/dist/primitives/toggle-group.d.ts.map +1 -0
- package/dist/primitives/toggle-group.js +24 -0
- package/dist/primitives/toggle-group.js.map +1 -0
- package/dist/primitives/toggle.d.ts +10 -0
- package/dist/primitives/toggle.d.ts.map +1 -0
- package/dist/primitives/toggle.js +26 -0
- package/dist/primitives/toggle.js.map +1 -0
- package/dist/primitives/tooltip.d.ts +8 -0
- package/dist/primitives/tooltip.d.ts.map +1 -0
- package/dist/primitives/tooltip.js +18 -0
- package/dist/primitives/tooltip.js.map +1 -0
- package/dist/settings/SettingGroup.d.ts +8 -0
- package/dist/settings/SettingGroup.d.ts.map +1 -0
- package/dist/settings/SettingGroup.js +7 -0
- package/dist/settings/SettingGroup.js.map +1 -0
- package/dist/settings/SettingRow.d.ts +58 -0
- package/dist/settings/SettingRow.d.ts.map +1 -0
- package/dist/settings/SettingRow.js +54 -0
- package/dist/settings/SettingRow.js.map +1 -0
- package/dist/settings/SettingsFormBuilder.d.ts +11 -0
- package/dist/settings/SettingsFormBuilder.d.ts.map +1 -0
- package/dist/settings/SettingsFormBuilder.js +43 -0
- package/dist/settings/SettingsFormBuilder.js.map +1 -0
- package/dist/settings/index.d.ts +4 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +4 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/shell/HeaderBar.d.ts +10 -0
- package/dist/shell/HeaderBar.d.ts.map +1 -0
- package/dist/shell/HeaderBar.js +6 -0
- package/dist/shell/HeaderBar.js.map +1 -0
- package/dist/shell/StatusBar.d.ts +9 -0
- package/dist/shell/StatusBar.d.ts.map +1 -0
- package/dist/shell/StatusBar.js +6 -0
- package/dist/shell/StatusBar.js.map +1 -0
- package/dist/shell/index.d.ts +3 -0
- package/dist/shell/index.d.ts.map +1 -0
- package/dist/shell/index.js +3 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/source-control/BranchSwitcher.d.ts +14 -0
- package/dist/source-control/BranchSwitcher.d.ts.map +1 -0
- package/dist/source-control/BranchSwitcher.js +10 -0
- package/dist/source-control/BranchSwitcher.js.map +1 -0
- package/dist/source-control/CommitRow.d.ts +15 -0
- package/dist/source-control/CommitRow.d.ts.map +1 -0
- package/dist/source-control/CommitRow.js +20 -0
- package/dist/source-control/CommitRow.js.map +1 -0
- package/dist/source-control/EntryRow.d.ts +25 -0
- package/dist/source-control/EntryRow.d.ts.map +1 -0
- package/dist/source-control/EntryRow.js +67 -0
- package/dist/source-control/EntryRow.js.map +1 -0
- package/dist/source-control/GraphRail.d.ts +14 -0
- package/dist/source-control/GraphRail.d.ts.map +1 -0
- package/dist/source-control/GraphRail.js +49 -0
- package/dist/source-control/GraphRail.js.map +1 -0
- package/dist/source-control/InlineHunkView.d.ts +22 -0
- package/dist/source-control/InlineHunkView.d.ts.map +1 -0
- package/dist/source-control/InlineHunkView.js +95 -0
- package/dist/source-control/InlineHunkView.js.map +1 -0
- package/dist/source-control/SourceControlActions.d.ts +15 -0
- package/dist/source-control/SourceControlActions.d.ts.map +1 -0
- package/dist/source-control/SourceControlActions.js +38 -0
- package/dist/source-control/SourceControlActions.js.map +1 -0
- package/dist/source-control/SourceControlPanel.d.ts +21 -0
- package/dist/source-control/SourceControlPanel.d.ts.map +1 -0
- package/dist/source-control/SourceControlPanel.js +300 -0
- package/dist/source-control/SourceControlPanel.js.map +1 -0
- package/dist/source-control/SourceControlStatusViews.d.ts +20 -0
- package/dist/source-control/SourceControlStatusViews.d.ts.map +1 -0
- package/dist/source-control/SourceControlStatusViews.js +18 -0
- package/dist/source-control/SourceControlStatusViews.js.map +1 -0
- package/dist/source-control/StashSection.d.ts +13 -0
- package/dist/source-control/StashSection.d.ts.map +1 -0
- package/dist/source-control/StashSection.js +14 -0
- package/dist/source-control/StashSection.js.map +1 -0
- package/dist/source-control/highlight.d.ts +8 -0
- package/dist/source-control/highlight.d.ts.map +1 -0
- package/dist/source-control/highlight.js +15 -0
- package/dist/source-control/highlight.js.map +1 -0
- package/dist/source-control/index.d.ts +12 -0
- package/dist/source-control/index.d.ts.map +1 -0
- package/dist/source-control/index.js +12 -0
- package/dist/source-control/index.js.map +1 -0
- package/dist/source-control/sourceControlHelpers.d.ts +27 -0
- package/dist/source-control/sourceControlHelpers.d.ts.map +1 -0
- package/dist/source-control/sourceControlHelpers.js +51 -0
- package/dist/source-control/sourceControlHelpers.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/isTauri.d.ts +2 -0
- package/dist/utils/isTauri.d.ts.map +1 -0
- package/dist/utils/isTauri.js +2 -0
- package/dist/utils/isTauri.js.map +1 -0
- package/dist/utils/mockCore.d.ts +6 -0
- package/dist/utils/mockCore.d.ts.map +1 -0
- package/dist/utils/mockCore.js +3 -0
- package/dist/utils/mockCore.js.map +1 -0
- package/dist/utils/mockFs.d.ts +10 -0
- package/dist/utils/mockFs.d.ts.map +1 -0
- package/dist/utils/mockFs.js +10 -0
- package/dist/utils/mockFs.js.map +1 -0
- package/dist/utils/mockSettings.d.ts +3 -0
- package/dist/utils/mockSettings.d.ts.map +1 -0
- package/dist/utils/mockSettings.js +3 -0
- package/dist/utils/mockSettings.js.map +1 -0
- package/dist/utils/mockShortcuts.d.ts +2 -0
- package/dist/utils/mockShortcuts.d.ts.map +1 -0
- package/dist/utils/mockShortcuts.js +2 -0
- package/dist/utils/mockShortcuts.js.map +1 -0
- package/dist/utils/mockSpaces.d.ts +4 -0
- package/dist/utils/mockSpaces.d.ts.map +1 -0
- package/dist/utils/mockSpaces.js +2 -0
- package/dist/utils/mockSpaces.js.map +1 -0
- package/dist/utils/mockTauri.d.ts +5 -0
- package/dist/utils/mockTauri.d.ts.map +1 -0
- package/dist/utils/mockTauri.js +3 -0
- package/dist/utils/mockTauri.js.map +1 -0
- package/dist/utils/mockWorkspace.d.ts +2 -0
- package/dist/utils/mockWorkspace.d.ts.map +1 -0
- package/dist/utils/mockWorkspace.js +2 -0
- package/dist/utils/mockWorkspace.js.map +1 -0
- package/dist/utils/platform.d.ts +5 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +8 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/shellQuote.d.ts +2 -0
- package/dist/utils/shellQuote.d.ts.map +1 -0
- package/dist/utils/shellQuote.js +7 -0
- package/dist/utils/shellQuote.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command-palette/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|