@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,77 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useLayoutEffect, useRef, useState } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Self-focusing single-line input for rename / create flows in the tree.
|
|
5
|
+
* Enter commits, Escape cancels, blur commits (matches VSCode behavior —
|
|
6
|
+
* dismissing the input is an implicit commit so a typed name isn't lost).
|
|
7
|
+
*/
|
|
8
|
+
export function InlineInput({ initial, placeholder, onCommit, onCancel, }) {
|
|
9
|
+
const [value, setValue] = useState(initial);
|
|
10
|
+
const ref = useRef(null);
|
|
11
|
+
const committedRef = useRef(false);
|
|
12
|
+
const settledRef = useRef(false);
|
|
13
|
+
useLayoutEffect(() => {
|
|
14
|
+
const el = ref.current;
|
|
15
|
+
if (!el)
|
|
16
|
+
return;
|
|
17
|
+
// Two-tick focus to win against parent click handlers and Radix portal
|
|
18
|
+
// restorations that can steal focus right after mount. Until the second
|
|
19
|
+
// tick lands we treat the input as "unsettled" — any blur during that
|
|
20
|
+
// window is the portal teardown stealing focus, not the user dismissing
|
|
21
|
+
// the input, so we refocus instead of committing an empty value.
|
|
22
|
+
//
|
|
23
|
+
// preventScroll matters here (#123): the input mounts inside the
|
|
24
|
+
// sidebar's flex column, which is small enough that focus-scroll can
|
|
25
|
+
// nudge the parent's scroll position by a fraction of a pixel each
|
|
26
|
+
// cycle. Repeated open/cancel pairs accumulate and walk the tree off
|
|
27
|
+
// the left edge. We're already rendering the input where it should be
|
|
28
|
+
// visible — there is no scroll-into-view we need from focus().
|
|
29
|
+
const focus = () => {
|
|
30
|
+
el.focus({ preventScroll: true });
|
|
31
|
+
const dot = initial.lastIndexOf(".");
|
|
32
|
+
if (dot > 0)
|
|
33
|
+
el.setSelectionRange(0, dot);
|
|
34
|
+
else
|
|
35
|
+
el.select();
|
|
36
|
+
};
|
|
37
|
+
focus();
|
|
38
|
+
const raf = requestAnimationFrame(() => focus());
|
|
39
|
+
const timer = setTimeout(() => {
|
|
40
|
+
focus();
|
|
41
|
+
settledRef.current = true;
|
|
42
|
+
}, 170);
|
|
43
|
+
return () => {
|
|
44
|
+
cancelAnimationFrame(raf);
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
};
|
|
47
|
+
}, [initial]);
|
|
48
|
+
const commit = () => {
|
|
49
|
+
if (committedRef.current)
|
|
50
|
+
return;
|
|
51
|
+
committedRef.current = true;
|
|
52
|
+
onCommit(value);
|
|
53
|
+
};
|
|
54
|
+
const cancel = () => {
|
|
55
|
+
if (committedRef.current)
|
|
56
|
+
return;
|
|
57
|
+
committedRef.current = true;
|
|
58
|
+
onCancel();
|
|
59
|
+
};
|
|
60
|
+
return (_jsx("input", { ref: ref, value: value, placeholder: placeholder, onChange: (e) => setValue(e.target.value), onKeyDown: (e) => {
|
|
61
|
+
if (e.key === "Enter") {
|
|
62
|
+
e.preventDefault();
|
|
63
|
+
commit();
|
|
64
|
+
}
|
|
65
|
+
else if (e.key === "Escape") {
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
cancel();
|
|
68
|
+
}
|
|
69
|
+
}, onBlur: () => {
|
|
70
|
+
if (!settledRef.current) {
|
|
71
|
+
ref.current?.focus({ preventScroll: true });
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
commit();
|
|
75
|
+
}, className: "flex-1 min-w-0 truncate rounded-sm border border-border bg-background px-1.5 py-0.5 text-xs text-foreground outline-none ring-0 focus:border-ring" }));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=InlineInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineInput.js","sourceRoot":"","sources":["../../src/explorer/InlineInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export interface FileTreeActions {
|
|
2
|
+
beginCreate: (parentPath: string, kind: "file" | "dir") => void;
|
|
3
|
+
beginRename: (path: string) => void;
|
|
4
|
+
deletePath: (path: string) => void | Promise<void>;
|
|
5
|
+
deletePaths: (paths: string[]) => void | Promise<void>;
|
|
6
|
+
toggle: (path: string) => void;
|
|
7
|
+
copyPaths?: (sources: string[], targetDir: string, isCut?: boolean) => Promise<void>;
|
|
8
|
+
commitRename?: (newName: string) => Promise<void> | void;
|
|
9
|
+
cancelRename?: () => void;
|
|
10
|
+
commitCreate?: (name: string) => Promise<void> | void;
|
|
11
|
+
cancelCreate?: () => void;
|
|
12
|
+
renaming?: string | null;
|
|
13
|
+
pendingCreate?: any;
|
|
14
|
+
}
|
|
15
|
+
type Tree = FileTreeActions;
|
|
16
|
+
export type EntryRowProps = {
|
|
17
|
+
path: string;
|
|
18
|
+
name: string;
|
|
19
|
+
isDir: boolean;
|
|
20
|
+
isExpanded: boolean;
|
|
21
|
+
depth: number;
|
|
22
|
+
rootPath: string;
|
|
23
|
+
tree: Tree;
|
|
24
|
+
isSelected: boolean;
|
|
25
|
+
selectedPaths?: Set<string>;
|
|
26
|
+
isRenaming: boolean;
|
|
27
|
+
onOpenFile: (path: string, pin?: boolean) => void;
|
|
28
|
+
onSelectPath: (path: string, e?: React.MouseEvent) => void;
|
|
29
|
+
onRevealInTerminal?: (path: string) => void;
|
|
30
|
+
onOpenInActiveTerminal?: (path: string) => void;
|
|
31
|
+
onOpenInNewTerminal?: (path: string) => void;
|
|
32
|
+
onAttachToAgent?: (path: string) => void;
|
|
33
|
+
onOpenMarkdownPreview?: (path: string) => void;
|
|
34
|
+
onOpenInSplitPane?: (path: string, dir: "row" | "col", edge: "before" | "after") => void;
|
|
35
|
+
onNavigateRoot?: (path: string) => void;
|
|
36
|
+
/** Current clipboard state from the parent FileExplorer */
|
|
37
|
+
clipboard?: {
|
|
38
|
+
paths: string[];
|
|
39
|
+
isCut: boolean;
|
|
40
|
+
} | null;
|
|
41
|
+
/** Trigger copy (false) or cut (true) for the currently selected paths */
|
|
42
|
+
onCopy?: (isCut: boolean) => void;
|
|
43
|
+
/** Paste clipboard contents into `targetDir` */
|
|
44
|
+
onPaste?: (targetDir: string) => Promise<void>;
|
|
45
|
+
/** True when this row is the current drag-drop target */
|
|
46
|
+
isDropTarget?: boolean;
|
|
47
|
+
};
|
|
48
|
+
declare function EntryRowImpl(props: EntryRowProps): import("react").JSX.Element;
|
|
49
|
+
export declare const EntryRow: import("react").MemoExoticComponent<typeof EntryRowImpl>;
|
|
50
|
+
export type PendingRowProps = {
|
|
51
|
+
depth: number;
|
|
52
|
+
kind: "file" | "dir";
|
|
53
|
+
onCommit: (name: string) => void | Promise<void>;
|
|
54
|
+
onCancel: () => void;
|
|
55
|
+
};
|
|
56
|
+
export declare function PendingRow({ depth, kind, onCommit, onCancel, }: PendingRowProps): import("react").JSX.Element;
|
|
57
|
+
export type StatusRowProps = {
|
|
58
|
+
depth: number;
|
|
59
|
+
message: string;
|
|
60
|
+
tone: "muted" | "error";
|
|
61
|
+
};
|
|
62
|
+
export declare function StatusRow({ depth, message, tone, }: StatusRowProps): import("react").JSX.Element;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=TreeRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeRow.d.ts","sourceRoot":"","sources":["../../src/explorer/TreeRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, } from "../primitives/context-menu.js";
|
|
3
|
+
import { quoteShellArg } from "../utils/shellQuote.js";
|
|
4
|
+
import { cn } from "../utils/cn.js";
|
|
5
|
+
import { ArrowRight01Icon } from "@hugeicons/core-free-icons";
|
|
6
|
+
import { HugeiconsIcon } from "@hugeicons/react";
|
|
7
|
+
import { memo, useState } from "react";
|
|
8
|
+
import { InlineInput } from "./InlineInput.js";
|
|
9
|
+
import { copyToClipboard, openInExternalEditor, relativePath, revealInFinder, } from "./contextActions.js";
|
|
10
|
+
import { fileIconUrl, folderIconUrl } from "./iconResolver.js";
|
|
11
|
+
import { COMPACT_CONTENT, COMPACT_ITEM } from "./menuItemClass.js";
|
|
12
|
+
function isMarkdownPath(path) {
|
|
13
|
+
return /\.(md|markdown|mdx)$/i.test(path);
|
|
14
|
+
}
|
|
15
|
+
function isImagePath(path) {
|
|
16
|
+
return /\.(png|jpe?g|gif|webp|svg|bmp|ico)$/i.test(path);
|
|
17
|
+
}
|
|
18
|
+
function isPreviewablePath(path) {
|
|
19
|
+
return isMarkdownPath(path) || isImagePath(path);
|
|
20
|
+
}
|
|
21
|
+
function EntryRowImpl(props) {
|
|
22
|
+
const { path, name, isDir, isExpanded, depth, rootPath, tree, isSelected, selectedPaths, isRenaming, onOpenFile, onSelectPath, onRevealInTerminal, onOpenInActiveTerminal, onOpenInNewTerminal, onAttachToAgent, onOpenMarkdownPreview, onOpenInSplitPane, onNavigateRoot, clipboard, onCopy, onPaste, isDropTarget, } = props;
|
|
23
|
+
const [isConfirming, setIsConfirming] = useState(false);
|
|
24
|
+
const iconUrl = isDir ? folderIconUrl(name, isExpanded) : fileIconUrl(name);
|
|
25
|
+
const createTarget = isDir
|
|
26
|
+
? path
|
|
27
|
+
: path.slice(0, path.lastIndexOf("/")) || rootPath;
|
|
28
|
+
const targetDir = isDir
|
|
29
|
+
? path
|
|
30
|
+
: path.slice(0, path.lastIndexOf("/")) || rootPath;
|
|
31
|
+
const paddingLeft = 6 + depth * 12;
|
|
32
|
+
const handleClick = (e) => {
|
|
33
|
+
if (tree.renaming)
|
|
34
|
+
return;
|
|
35
|
+
onSelectPath(path, e);
|
|
36
|
+
// If performing a multi-select, don't open the file or toggle the directory
|
|
37
|
+
if (e.metaKey || e.ctrlKey || e.shiftKey)
|
|
38
|
+
return;
|
|
39
|
+
if (isDir)
|
|
40
|
+
tree.toggle(path);
|
|
41
|
+
else if (isImagePath(path) && onOpenMarkdownPreview)
|
|
42
|
+
onOpenMarkdownPreview(path);
|
|
43
|
+
else
|
|
44
|
+
onOpenFile(path);
|
|
45
|
+
};
|
|
46
|
+
const contextPaths = selectedPaths?.has(path)
|
|
47
|
+
? Array.from(selectedPaths)
|
|
48
|
+
: [path];
|
|
49
|
+
const isMulti = contextPaths.length > 1;
|
|
50
|
+
return (_jsxs(ContextMenu, { children: [_jsx(ContextMenuTrigger, { asChild: true, children: isRenaming ? (_jsxs("div", { className: "flex h-6 w-full min-w-0 items-center gap-2 px-1.5 text-[13px]", style: { paddingLeft }, children: [_jsx("span", { className: "size-3.5 shrink-0" }), iconUrl ? (_jsx("img", { src: iconUrl, alt: "", className: "size-4 shrink-0" })) : (_jsx("span", { className: "size-4 shrink-0" })), _jsx(InlineInput, { initial: name, onCommit: (val) => tree.commitRename?.(val), onCancel: () => tree.cancelRename?.() })] })) : (_jsxs("button", { type: "button", draggable: true, onDragStart: (e) => {
|
|
51
|
+
e.dataTransfer.setData("text/plain", quoteShellArg(path));
|
|
52
|
+
}, "data-fs-path": path, ...(isDir ? { "data-folder-path": path } : {}), onClick: handleClick, onDoubleClick: () => !isDir && tree.beginRename(path), className: cn("group flex h-6 w-full min-w-0 cursor-pointer items-center gap-2 rounded-sm px-1.5 text-left text-[13px] text-foreground/85 transition-colors hover:bg-accent/70", isSelected && "bg-accent text-foreground", isDropTarget && "ring-1 ring-inset ring-primary bg-primary/10"), style: { paddingLeft }, children: [_jsx("span", { className: "flex size-3.5 shrink-0 items-center justify-center text-muted-foreground", children: isDir ? (_jsx(HugeiconsIcon, { icon: ArrowRight01Icon, size: 12, strokeWidth: 2.25, className: cn("transition-transform", isExpanded && "rotate-90") })) : null }), iconUrl ? (_jsx("img", { src: iconUrl, alt: "", className: "size-4 shrink-0" })) : (_jsx("span", { className: "size-4 shrink-0" })), _jsx("span", { className: "min-w-0 flex-1 truncate", children: name })] })) }), _jsxs(ContextMenuContent, { className: COMPACT_CONTENT, onCloseAutoFocus: (e) => {
|
|
53
|
+
if (tree.renaming || tree.pendingCreate)
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
}, children: [!isDir && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onOpenFile(path, true), children: "Open" })), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => {
|
|
56
|
+
for (const p of contextPaths)
|
|
57
|
+
void openInExternalEditor(p);
|
|
58
|
+
}, children: isMulti
|
|
59
|
+
? `Open ${contextPaths.length} items in External Editor`
|
|
60
|
+
: "Open in External Editor" }), !isDir && isPreviewablePath(path) && onOpenMarkdownPreview && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onOpenMarkdownPreview(path), children: "Open Preview" })), !isDir && !isMulti && onOpenInSplitPane && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onOpenInSplitPane(path, "row", "after"), children: "Open to the Right" })), !isMulti && isDir && onNavigateRoot && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onNavigateRoot(path), children: "Focus Folder" })), !isMulti && (onOpenInActiveTerminal || onRevealInTerminal) && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => {
|
|
61
|
+
if (onOpenInActiveTerminal) {
|
|
62
|
+
onOpenInActiveTerminal(targetDir);
|
|
63
|
+
}
|
|
64
|
+
else if (onRevealInTerminal) {
|
|
65
|
+
onRevealInTerminal(targetDir);
|
|
66
|
+
}
|
|
67
|
+
}, children: "Open in Active Terminal" })), !isMulti && (onOpenInNewTerminal || onRevealInTerminal) && (_jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => {
|
|
68
|
+
if (onOpenInNewTerminal) {
|
|
69
|
+
onOpenInNewTerminal(targetDir);
|
|
70
|
+
}
|
|
71
|
+
else if (onRevealInTerminal) {
|
|
72
|
+
onRevealInTerminal(targetDir);
|
|
73
|
+
}
|
|
74
|
+
}, children: "Open in New Terminal" })), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => {
|
|
75
|
+
for (const p of contextPaths)
|
|
76
|
+
void revealInFinder(p);
|
|
77
|
+
}, children: isMulti
|
|
78
|
+
? `Reveal ${contextPaths.length} items in Finder`
|
|
79
|
+
: "Reveal in Finder" }), _jsx(ContextMenuSeparator, {}), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => tree.beginCreate(createTarget, "file"), children: "New File" }), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => tree.beginCreate(createTarget, "dir"), children: "New Folder" }), _jsx(ContextMenuSeparator, {}), onCopy && (_jsxs(_Fragment, { children: [_jsxs(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onCopy(false), children: ["Copy", isMulti ? ` ${contextPaths.length} Items` : ""] }), _jsxs(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onCopy(true), children: ["Cut", isMulti ? ` ${contextPaths.length} Items` : ""] })] })), clipboard && onPaste && isDir && (_jsxs(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => void onPaste(path), children: ["Paste", clipboard.isCut ? " (Move)" : ""] })), _jsxs(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => void copyToClipboard(contextPaths.join("\n")), children: ["Copy Path", isMulti ? "s" : ""] }), _jsxs(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => void copyToClipboard(contextPaths.map((p) => relativePath(rootPath, p)).join("\n")), children: ["Copy Relative Path", isMulti ? "s" : ""] }), _jsx(ContextMenuSeparator, {}), _jsx(ContextMenuItem, { className: COMPACT_ITEM, onSelect: () => onAttachToAgent?.(path), children: "Attach to Agent" }), _jsx(ContextMenuSeparator, {}), _jsx(ContextMenuItem, { className: COMPACT_ITEM, variant: "destructive", onSelect: (e) => {
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
if (isConfirming) {
|
|
82
|
+
void tree.deletePaths(contextPaths);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
setIsConfirming(true);
|
|
86
|
+
}
|
|
87
|
+
}, onMouseLeave: () => setTimeout(() => setIsConfirming(false), 1500), children: isConfirming
|
|
88
|
+
? "Click again to confirm"
|
|
89
|
+
: isMulti
|
|
90
|
+
? `Delete ${contextPaths.length} items`
|
|
91
|
+
: "Delete" })] })] }));
|
|
92
|
+
}
|
|
93
|
+
export const EntryRow = memo(EntryRowImpl);
|
|
94
|
+
export function PendingRow({ depth, kind, onCommit, onCancel, }) {
|
|
95
|
+
return (_jsxs("div", { className: "flex h-6 w-full min-w-0 items-center gap-2 px-1.5 text-[13px]", style: { paddingLeft: 6 + depth * 12 }, children: [_jsx("span", { className: "size-3.5 shrink-0" }), _jsx("img", { src: kind === "dir" ? folderIconUrl("", false) : fileIconUrl("untitled"), alt: "", className: "size-4 shrink-0 opacity-70" }), _jsx(InlineInput, { initial: "", placeholder: kind === "dir" ? "New folder" : "New file", onCommit: onCommit, onCancel: onCancel })] }));
|
|
96
|
+
}
|
|
97
|
+
export function StatusRow({ depth, message, tone, }) {
|
|
98
|
+
return (_jsx("div", { className: cn("h-6 truncate px-2 text-[11px] leading-6", tone === "error" ? "text-destructive" : "text-muted-foreground"), style: { paddingLeft: 6 + depth * 12 + 18 }, children: message }));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=TreeRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeRow.js","sourceRoot":"","sources":["../../src/explorer/TreeRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extension → VS Code language id, used by `iconResolver` as a fallback when
|
|
3
|
+
* material-icon-theme's `fileExtensions` map lacks an entry. material-icon-theme
|
|
4
|
+
* relies on VS Code's extension→languageId registry for many common files
|
|
5
|
+
* (ts, js, html, css, sh, sql…). Without this layer, plain `foo.ts` would
|
|
6
|
+
* fall back to the generic file icon.
|
|
7
|
+
*
|
|
8
|
+
* Add entries when a popular extension renders without an icon. Keys are
|
|
9
|
+
* lowercase, dot-less. Values must exist in `manifest.languageIds`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const EXT_TO_LANGUAGE_ID: Record<string, string>;
|
|
12
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/explorer/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4DrD,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extension → VS Code language id, used by `iconResolver` as a fallback when
|
|
3
|
+
* material-icon-theme's `fileExtensions` map lacks an entry. material-icon-theme
|
|
4
|
+
* relies on VS Code's extension→languageId registry for many common files
|
|
5
|
+
* (ts, js, html, css, sh, sql…). Without this layer, plain `foo.ts` would
|
|
6
|
+
* fall back to the generic file icon.
|
|
7
|
+
*
|
|
8
|
+
* Add entries when a popular extension renders without an icon. Keys are
|
|
9
|
+
* lowercase, dot-less. Values must exist in `manifest.languageIds`.
|
|
10
|
+
*/
|
|
11
|
+
export const EXT_TO_LANGUAGE_ID = {
|
|
12
|
+
ts: "typescript",
|
|
13
|
+
cts: "typescript",
|
|
14
|
+
mts: "typescript",
|
|
15
|
+
tsx: "typescriptreact",
|
|
16
|
+
js: "javascript",
|
|
17
|
+
cjs: "javascript",
|
|
18
|
+
mjs: "javascript",
|
|
19
|
+
jsx: "javascriptreact",
|
|
20
|
+
html: "html",
|
|
21
|
+
htm: "html",
|
|
22
|
+
css: "css",
|
|
23
|
+
scss: "scss",
|
|
24
|
+
sass: "sass",
|
|
25
|
+
less: "less",
|
|
26
|
+
json: "json",
|
|
27
|
+
jsonc: "jsonc",
|
|
28
|
+
md: "markdown",
|
|
29
|
+
markdown: "markdown",
|
|
30
|
+
py: "python",
|
|
31
|
+
rs: "rust",
|
|
32
|
+
go: "go",
|
|
33
|
+
java: "java",
|
|
34
|
+
kt: "kotlin",
|
|
35
|
+
kts: "kotlin",
|
|
36
|
+
rb: "ruby",
|
|
37
|
+
php: "php",
|
|
38
|
+
c: "c",
|
|
39
|
+
h: "c",
|
|
40
|
+
cpp: "cpp",
|
|
41
|
+
cc: "cpp",
|
|
42
|
+
cxx: "cpp",
|
|
43
|
+
hpp: "cpp",
|
|
44
|
+
cs: "csharp",
|
|
45
|
+
swift: "swift",
|
|
46
|
+
sh: "shellscript",
|
|
47
|
+
bash: "shellscript",
|
|
48
|
+
zsh: "shellscript",
|
|
49
|
+
fish: "shellscript",
|
|
50
|
+
sql: "sql",
|
|
51
|
+
xml: "xml",
|
|
52
|
+
yaml: "yaml",
|
|
53
|
+
yml: "yaml",
|
|
54
|
+
toml: "toml",
|
|
55
|
+
vue: "vue",
|
|
56
|
+
svelte: "svelte",
|
|
57
|
+
astro: "astro",
|
|
58
|
+
lua: "lua",
|
|
59
|
+
dart: "dart",
|
|
60
|
+
r: "r",
|
|
61
|
+
pl: "perl",
|
|
62
|
+
ex: "elixir",
|
|
63
|
+
exs: "elixir",
|
|
64
|
+
elm: "elm",
|
|
65
|
+
hs: "haskell",
|
|
66
|
+
clj: "clojure",
|
|
67
|
+
scala: "scala",
|
|
68
|
+
zig: "zig",
|
|
69
|
+
nim: "nim",
|
|
70
|
+
log: "log",
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/explorer/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,iBAAiB;IACtB,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,QAAQ;IACZ,GAAG,EAAE,QAAQ;IACb,EAAE,EAAE,MAAM;IACV,GAAG,EAAE,KAAK;IACV,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,KAAK;IACT,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,CAAC,EAAE,GAAG;IACN,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,QAAQ;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,SAAS;IACb,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACX,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function copyToClipboard(text: string): Promise<void>;
|
|
2
|
+
export declare function relativePath(rootPath: string, path: string): string;
|
|
3
|
+
export declare function revealInFinder(path: string): Promise<void>;
|
|
4
|
+
export declare function openInExternalEditor(path: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=contextActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextActions.d.ts","sourceRoot":"","sources":["../../src/explorer/contextActions.ts"],"names":[],"mappings":"AAAA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAShE;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export async function copyToClipboard(text) {
|
|
2
|
+
try {
|
|
3
|
+
await navigator.clipboard.writeText(text);
|
|
4
|
+
}
|
|
5
|
+
catch {
|
|
6
|
+
// Best-effort; ignore in environments without clipboard permission.
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function relativePath(rootPath, path) {
|
|
10
|
+
if (path === rootPath)
|
|
11
|
+
return ".";
|
|
12
|
+
if (path.startsWith(`${rootPath}/`))
|
|
13
|
+
return path.slice(rootPath.length + 1);
|
|
14
|
+
return path;
|
|
15
|
+
}
|
|
16
|
+
export async function revealInFinder(path) {
|
|
17
|
+
try {
|
|
18
|
+
const w = typeof window !== "undefined" ? window : undefined;
|
|
19
|
+
if (w?.__TAURI_INTERNALS__?.invoke) {
|
|
20
|
+
await w.__TAURI_INTERNALS__.invoke("plugin:opener|reveal_item_in_dir", { path });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
console.warn("revealInFinder not available in this environment:", e);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function openInExternalEditor(path) {
|
|
28
|
+
try {
|
|
29
|
+
const w = typeof window !== "undefined" ? window : undefined;
|
|
30
|
+
if (w?.__TAURI_INTERNALS__?.invoke) {
|
|
31
|
+
await w.__TAURI_INTERNALS__.invoke("plugin:opener|open_path", { path });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.warn("openInExternalEditor not available in this environment:", e);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=contextActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextActions.js","sourceRoot":"","sources":["../../src/explorer/contextActions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IACzD,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAClC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAE,MAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAE,MAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|