From bb40406978fc279349f6105b0588e8768e137b23 Mon Sep 17 00:00:00 2001 From: Konv Suu <2583695112@qq.com> Date: Tue, 5 Aug 2025 10:27:51 +0800 Subject: [PATCH 1/2] Refactor import paths to use absolute imports for better readability --- .vscode/settings.json | 7 ++++ src/components/ai-chat/ai-chat-input-bar.tsx | 6 ++-- src/components/ai-chat/ai-chat.tsx | 14 ++++---- src/components/ai-chat/chat-history-modal.tsx | 2 +- .../ai-chat/file-mention-dropdown.tsx | 13 ++++--- src/components/ai-chat/mention-utils.ts | 2 +- src/components/ai-chat/tool-call-display.tsx | 2 +- src/components/ai-chat/types.ts | 4 +-- .../command/components/command-bar.tsx | 12 +++---- .../command/components/command-palette.tsx | 4 +-- .../command/components/theme-selector.tsx | 4 +-- src/components/diff-viewer/diff-header.tsx | 2 +- .../diff-viewer/diff-hunk-header.tsx | 2 +- src/components/diff-viewer/diff-line.tsx | 2 +- src/components/diff-viewer/diff-viewer.tsx | 4 +-- .../diff-viewer/hooks/useDiffData.ts | 20 +++++------ .../diff-viewer/image-diff-viewer.tsx | 2 +- .../diff-viewer/multi-file-diff-viewer.tsx | 2 +- .../diff-viewer/text-diff-viewer.tsx | 2 +- .../diff-viewer/utils/diff-helpers.ts | 2 +- src/components/diff-viewer/utils/types.ts | 2 +- src/components/editor/breadcrumb.tsx | 34 +++++++++---------- src/components/editor/code-editor.tsx | 26 +++++++------- src/components/editor/core/editor-layers.tsx | 2 +- .../editor/core/line-based-editor.tsx | 14 ++++---- src/components/editor/core/text-editor.tsx | 33 ++++++++---------- .../editor/overlays/completion-dropdown.tsx | 12 +++---- src/components/editor/overlays/cursor.tsx | 6 ++-- .../editor/overlays/decoration-layer.tsx | 14 ++++---- .../editor/overlays/editor-context-menu.tsx | 2 +- .../editor/overlays/hover-tooltip.tsx | 6 ++-- .../editor/rendering/editor-viewport.tsx | 12 +++---- .../editor/rendering/line-gutter.tsx | 4 +-- .../editor/rendering/line-renderer.tsx | 2 +- .../editor/rendering/line-with-content.tsx | 2 +- src/components/git/git-actions-menu.tsx | 4 +-- src/components/git/git-branch-manager.tsx | 8 +---- src/components/git/git-commit-history.tsx | 4 +-- src/components/git/git-commit-panel.tsx | 4 +-- src/components/git/git-remote-manager.tsx | 2 +- src/components/git/git-stash-manager.tsx | 2 +- src/components/git/git-status-panel.tsx | 2 +- src/components/git/git-tag-manager.tsx | 2 +- src/components/git/git-view.tsx | 6 ++-- src/components/image-viewer/image-viewer.tsx | 2 +- src/components/layout/main-layout.tsx | 20 +++++------ src/components/layout/main-sidebar.tsx | 16 ++++----- .../layout/sidebar-pane-selector.tsx | 2 +- src/components/remote/connection-list.tsx | 2 +- .../remote/remote-connection-view.tsx | 2 +- .../resizable-sidebar/resizable-sidebar.css | 4 +-- .../resizable-sidebar/resizable-sidebar.tsx | 2 +- src/components/tab-bar/tab-bar-item.tsx | 6 ++-- src/components/tab-bar/tab-bar.tsx | 6 ++-- src/components/tab-bar/tab-context-menu.tsx | 2 +- src/components/tab-bar/tab-drag-preview.tsx | 4 +-- .../terminal/terminal-container.tsx | 4 +-- src/components/terminal/terminal-search.tsx | 2 +- src/components/terminal/terminal-session.tsx | 2 +- src/components/terminal/terminal-tab-bar.tsx | 4 +-- src/components/terminal/terminal.tsx | 10 +++--- src/components/ui/button.tsx | 2 +- src/components/ui/dropdown.tsx | 2 +- src/components/ui/input.tsx | 2 +- src/components/ui/keybinding-badge.tsx | 2 +- src/components/ui/section.tsx | 2 +- src/components/ui/switch.tsx | 2 +- src/components/ui/toggle.tsx | 2 +- .../views/file-tree-custom-dnd.tsx | 6 ++-- src/file-explorer/views/file-tree.tsx | 12 +++---- src/file-system/controllers/store.ts | 22 ++++++------ src/file-system/models/interface.ts | 2 +- .../components/tabs/editor-settings.tsx | 2 +- .../components/tabs/general-settings.tsx | 2 +- .../components/tabs/theme-settings.tsx | 8 ++--- src/settings/stores/settings-store.ts | 2 +- src/stores/ai-chat/store.ts | 8 ++--- src/stores/ai-chat/types.ts | 4 +-- 78 files changed, 241 insertions(+), 244 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..dcac4fed1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "quickFix.biome": "explicit", + "source.organizeImports.biome": "explicit" + }, +} diff --git a/src/components/ai-chat/ai-chat-input-bar.tsx b/src/components/ai-chat/ai-chat-input-bar.tsx index a2209860c..16df5cbd7 100644 --- a/src/components/ai-chat/ai-chat-input-bar.tsx +++ b/src/components/ai-chat/ai-chat-input-bar.tsx @@ -1,9 +1,9 @@ import { ChevronDown, Database, FileText, Send, Square, X } from "lucide-react"; import type React from "react"; import { useCallback, useEffect, useRef } from "react"; -import { usePersistentSettingsStore } from "../../settings/stores/persistent-settings-store"; -import { useAIChatStore } from "../../stores/ai-chat/store"; -import { cn } from "../../utils/cn"; +import { usePersistentSettingsStore } from "@/settings/stores/persistent-settings-store"; +import { useAIChatStore } from "@/stores/ai-chat/store"; +import { cn } from "@/utils/cn"; import ModelProviderSelector from "../model-provider-selector"; import Button from "../ui/button"; import { FileMentionDropdown } from "./file-mention-dropdown"; diff --git a/src/components/ai-chat/ai-chat.tsx b/src/components/ai-chat/ai-chat.tsx index 728d3519d..45dffec6b 100644 --- a/src/components/ai-chat/ai-chat.tsx +++ b/src/components/ai-chat/ai-chat.tsx @@ -2,17 +2,17 @@ import { invoke } from "@tauri-apps/api/core"; import { MessageSquare, Plus, Sparkles } from "lucide-react"; import type React from "react"; import { useCallback, useEffect, useRef } from "react"; -import { usePersistentSettingsStore } from "../../settings/stores/persistent-settings-store"; -import { useAIChatStore } from "../../stores/ai-chat/store"; -import { useProjectStore } from "../../stores/project-store"; +import { usePersistentSettingsStore } from "@/settings/stores/persistent-settings-store"; +import { useAIChatStore } from "@/stores/ai-chat/store"; +import { useProjectStore } from "@/stores/project-store"; import { getAvailableProviders, getProviderById, setClaudeCodeAvailability, -} from "../../types/ai-provider"; -import type { ClaudeStatus } from "../../types/claude"; -import { getChatCompletionStream } from "../../utils/ai-chat"; -import { cn } from "../../utils/cn"; +} from "@/types/ai-provider"; +import type { ClaudeStatus } from "@/types/claude"; +import { getChatCompletionStream } from "@/utils/ai-chat"; +import { cn } from "@/utils/cn"; import ApiKeyModal from "../api-key-modal"; import AIChatInputBar from "./ai-chat-input-bar"; import ChatHistoryModal from "./chat-history-modal"; diff --git a/src/components/ai-chat/chat-history-modal.tsx b/src/components/ai-chat/chat-history-modal.tsx index b6aab9b20..3b54fa9ed 100644 --- a/src/components/ai-chat/chat-history-modal.tsx +++ b/src/components/ai-chat/chat-history-modal.tsx @@ -1,6 +1,6 @@ import { MessageSquare, Search, Trash2, X } from "lucide-react"; import { useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import type { ChatHistoryModalProps } from "./types"; import { getRelativeTime } from "./utils"; diff --git a/src/components/ai-chat/file-mention-dropdown.tsx b/src/components/ai-chat/file-mention-dropdown.tsx index cc757c650..02a52100f 100644 --- a/src/components/ai-chat/file-mention-dropdown.tsx +++ b/src/components/ai-chat/file-mention-dropdown.tsx @@ -1,8 +1,8 @@ import React, { useEffect, useMemo, useRef } from "react"; -import FileIcon from "../../file-explorer/views/file.icon"; -import type { FileEntry } from "../../file-system/models/app"; -import { useAIChatStore } from "../../stores/ai-chat/store"; -import { useProjectStore } from "../../stores/project-store"; +import FileIcon from "@/file-explorer/views/file.icon"; +import type { FileEntry } from "@/file-system/models/app"; +import { useAIChatStore } from "@/stores/ai-chat/store"; +import { useProjectStore } from "@/stores/project-store"; interface FileMentionDropdownProps { files: FileEntry[]; @@ -141,9 +141,8 @@ export const FileMentionDropdown = React.memo(function FileMentionDropdown({ {filteredFiles.map((file, index) => (
{ e.preventDefault(); e.stopPropagation(); diff --git a/src/components/ai-chat/mention-utils.ts b/src/components/ai-chat/mention-utils.ts index 13a7115e2..a3688894a 100644 --- a/src/components/ai-chat/mention-utils.ts +++ b/src/components/ai-chat/mention-utils.ts @@ -1,5 +1,5 @@ import { invoke } from "@tauri-apps/api/core"; -import type { FileEntry } from "../../file-system/models/app"; +import type { FileEntry } from "@/file-system/models/app"; interface MentionedFile { name: string; diff --git a/src/components/ai-chat/tool-call-display.tsx b/src/components/ai-chat/tool-call-display.tsx index c456e10c8..e084e5d23 100644 --- a/src/components/ai-chat/tool-call-display.tsx +++ b/src/components/ai-chat/tool-call-display.tsx @@ -15,7 +15,7 @@ import { } from "lucide-react"; import type React from "react"; import { useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import "./tool-call-display.css"; interface ToolCallDisplayProps { diff --git a/src/components/ai-chat/types.ts b/src/components/ai-chat/types.ts index f675fa210..13cdf3e8d 100644 --- a/src/components/ai-chat/types.ts +++ b/src/components/ai-chat/types.ts @@ -1,6 +1,6 @@ import type React from "react"; -import type { FileEntry } from "../../file-system/models/app"; -import type { Buffer } from "../../types/buffer"; +import type { FileEntry } from "@/file-system/models/app"; +import type { Buffer } from "@/types/buffer"; interface ToolCall { name: string; diff --git a/src/components/command/components/command-bar.tsx b/src/components/command/components/command-bar.tsx index ff996e515..6de0a90cb 100644 --- a/src/components/command/components/command-bar.tsx +++ b/src/components/command/components/command-bar.tsx @@ -1,10 +1,10 @@ import { ClockIcon, File } from "lucide-react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { IGNORED_PATTERNS } from "@/components/command/constants/ignored-patterns"; -import { useRecentFilesStore } from "../../../file-system/controllers/recent-files-store"; -import { useFileSystemStore } from "../../../file-system/controllers/store"; -import { useBufferStore } from "../../../stores/buffer-store"; -import { useUIState } from "../../../stores/ui-state-store"; +import { useRecentFilesStore } from "@/file-system/controllers/recent-files-store"; +import { useFileSystemStore } from "@/file-system/controllers/store"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useUIState } from "@/stores/ui-state-store"; import Command, { CommandEmpty, CommandHeader, @@ -385,8 +385,8 @@ const CommandBar = () => { {openBufferFiles.length === 0 && - recentFilesInResults.length === 0 && - otherFiles.length === 0 ? ( + recentFilesInResults.length === 0 && + otherFiles.length === 0 ? (
{query ? "No matching files found" : "No files available"} diff --git a/src/components/command/components/command-palette.tsx b/src/components/command/components/command-palette.tsx index 47af06a35..09f77917b 100644 --- a/src/components/command/components/command-palette.tsx +++ b/src/components/command/components/command-palette.tsx @@ -1,8 +1,8 @@ import { Palette, Settings, Sparkles } from "lucide-react"; import type React from "react"; import { useEffect, useRef, useState } from "react"; -import { useAppStore } from "../../../stores/app-store"; -import { useUIState } from "../../../stores/ui-state-store"; +import { useAppStore } from "@/stores/app-store"; +import { useUIState } from "@/stores/ui-state-store"; import Command, { CommandEmpty, CommandHeader, diff --git a/src/components/command/components/theme-selector.tsx b/src/components/command/components/theme-selector.tsx index 646fc3ae8..8884cfa3a 100644 --- a/src/components/command/components/theme-selector.tsx +++ b/src/components/command/components/theme-selector.tsx @@ -1,8 +1,8 @@ import { Monitor, Moon, Palette, Sun, Upload } from "lucide-react"; import type React from "react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { themeRegistry } from "../../../extensions/themes/theme-registry"; -import type { ThemeDefinition } from "../../../extensions/themes/types"; +import { themeRegistry } from "@/extensions/themes/theme-registry"; +import type { ThemeDefinition } from "@/extensions/themes/types"; import Button from "../../ui/button"; import Command, { CommandEmpty, diff --git a/src/components/diff-viewer/diff-header.tsx b/src/components/diff-viewer/diff-header.tsx index 1b04f2d83..90b8ebd18 100644 --- a/src/components/diff-viewer/diff-header.tsx +++ b/src/components/diff-viewer/diff-header.tsx @@ -1,6 +1,6 @@ import { Edit3, Eye, EyeOff, FileIcon, FilePlus, FileX, Hash, X } from "lucide-react"; import { memo } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import { getFileStatus } from "./utils/diff-helpers"; import type { DiffHeaderProps } from "./utils/types"; diff --git a/src/components/diff-viewer/diff-hunk-header.tsx b/src/components/diff-viewer/diff-hunk-header.tsx index 403ec615f..a23a7744b 100644 --- a/src/components/diff-viewer/diff-hunk-header.tsx +++ b/src/components/diff-viewer/diff-hunk-header.tsx @@ -1,5 +1,5 @@ import { ChevronDown, ChevronRight, Copy, Minus, Plus } from "lucide-react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import { copyLineContent, createGitHunk } from "./utils/diff-helpers"; import type { DiffHunkHeaderProps } from "./utils/types"; diff --git a/src/components/diff-viewer/diff-line.tsx b/src/components/diff-viewer/diff-line.tsx index a51a1e0ca..9b6a74e7f 100644 --- a/src/components/diff-viewer/diff-line.tsx +++ b/src/components/diff-viewer/diff-line.tsx @@ -1,6 +1,6 @@ import { Copy } from "lucide-react"; import { memo } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import { copyLineContent } from "./utils/diff-helpers"; import type { DiffLineProps } from "./utils/types"; diff --git a/src/components/diff-viewer/diff-viewer.tsx b/src/components/diff-viewer/diff-viewer.tsx index bbd721231..331c5dbf7 100644 --- a/src/components/diff-viewer/diff-viewer.tsx +++ b/src/components/diff-viewer/diff-viewer.tsx @@ -1,7 +1,7 @@ import { RefreshCw, X } from "lucide-react"; import { useCallback, useState } from "react"; -import { useBufferStore } from "../../stores/buffer-store"; -import { cn } from "../../utils/cn"; +import { useBufferStore } from "@/stores/buffer-store"; +import { cn } from "@/utils/cn"; import { DiffHeader } from "./diff-header"; import { useDiffData } from "./hooks/useDiffData"; import { useDiffViewState } from "./hooks/useDiffViewState"; diff --git a/src/components/diff-viewer/hooks/useDiffData.ts b/src/components/diff-viewer/hooks/useDiffData.ts index 5013215ee..708f88141 100644 --- a/src/components/diff-viewer/hooks/useDiffData.ts +++ b/src/components/diff-viewer/hooks/useDiffData.ts @@ -1,8 +1,8 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { useFileSystemStore } from "../../../file-system/controllers/store"; -import { useBufferStore } from "../../../stores/buffer-store"; -import type { GitDiff } from "../../../utils/git"; -import { getFileDiff } from "../../../utils/git"; +import { useFileSystemStore } from "@/file-system/controllers/store"; +import { useBufferStore } from "@/stores/buffer-store"; +import type { GitDiff } from "@/utils/git"; +import { getFileDiff } from "@/utils/git"; interface UseDiffDataReturn { diff: GitDiff | null; @@ -32,12 +32,12 @@ export const useDiffData = (): UseDiffDataReturn => { activeBuffer?.diffData || (activeBuffer?.isDiff && activeBuffer.content ? (() => { - try { - return JSON.parse(activeBuffer.content) as GitDiff; - } catch { - return null; - } - })() + try { + return JSON.parse(activeBuffer.content) as GitDiff; + } catch { + return null; + } + })() : null); // Filter out MultiFileDiff since this hook handles single file diffs only diff --git a/src/components/diff-viewer/image-diff-viewer.tsx b/src/components/diff-viewer/image-diff-viewer.tsx index b38307fe6..edcce997f 100644 --- a/src/components/diff-viewer/image-diff-viewer.tsx +++ b/src/components/diff-viewer/image-diff-viewer.tsx @@ -1,6 +1,6 @@ import { FileIcon, FilePlus, FileX, Minus, Plus, RotateCcw, X } from "lucide-react"; import { memo, useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import Button from "../ui/button"; import { getImgSrc } from "./utils/diff-helpers"; import type { ImageContainerProps, ImageDiffViewerProps } from "./utils/types"; diff --git a/src/components/diff-viewer/multi-file-diff-viewer.tsx b/src/components/diff-viewer/multi-file-diff-viewer.tsx index ce1e4c5ae..452bf12e5 100644 --- a/src/components/diff-viewer/multi-file-diff-viewer.tsx +++ b/src/components/diff-viewer/multi-file-diff-viewer.tsx @@ -1,6 +1,6 @@ import { ChevronDown, ChevronRight, FileIcon, FilePlus, FileText, FileX } from "lucide-react"; import { memo, useCallback, useMemo, useState } from "react"; -import type { GitDiff } from "../../utils/git"; +import type { GitDiff } from "@/utils/git"; import { DiffHeader } from "./diff-header"; import { ImageDiffViewer } from "./image-diff-viewer"; import { TextDiffViewer } from "./text-diff-viewer"; diff --git a/src/components/diff-viewer/text-diff-viewer.tsx b/src/components/diff-viewer/text-diff-viewer.tsx index 471adc725..097d6d59a 100644 --- a/src/components/diff-viewer/text-diff-viewer.tsx +++ b/src/components/diff-viewer/text-diff-viewer.tsx @@ -1,6 +1,6 @@ import { FileIcon } from "lucide-react"; import { memo } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import { DiffHunkHeader } from "./diff-hunk-header"; import { DiffLine } from "./diff-line"; import { useDiffViewState } from "./hooks/useDiffViewState"; diff --git a/src/components/diff-viewer/utils/diff-helpers.ts b/src/components/diff-viewer/utils/diff-helpers.ts index f46a3f6f3..db1c8f723 100644 --- a/src/components/diff-viewer/utils/diff-helpers.ts +++ b/src/components/diff-viewer/utils/diff-helpers.ts @@ -1,4 +1,4 @@ -import type { GitDiff, GitDiffLine, GitHunk } from "../../../utils/git"; +import type { GitDiff, GitDiffLine, GitHunk } from "@/utils/git"; import type { ParsedHunk } from "./types"; export const createGitHunk = ( diff --git a/src/components/diff-viewer/utils/types.ts b/src/components/diff-viewer/utils/types.ts index e313e6867..85e6119a2 100644 --- a/src/components/diff-viewer/utils/types.ts +++ b/src/components/diff-viewer/utils/types.ts @@ -1,4 +1,4 @@ -import type { GitDiff, GitDiffLine, GitHunk } from "../../../utils/git"; +import type { GitDiff, GitDiffLine, GitHunk } from "@/utils/git"; export interface DiffViewerProps { onStageHunk?: (hunk: GitHunk) => void; diff --git a/src/components/editor/breadcrumb.tsx b/src/components/editor/breadcrumb.tsx index a11c40a08..b8272bcc7 100644 --- a/src/components/editor/breadcrumb.tsx +++ b/src/components/editor/breadcrumb.tsx @@ -1,13 +1,13 @@ import { ArrowLeft, ChevronRight, Search } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { createPortal } from "react-dom"; -import { EDITOR_CONSTANTS } from "../../constants/editor-constants"; -import FileIcon from "../../file-explorer/views/file.icon"; -import { readDirectory } from "../../file-system/controllers/platform"; -import { useFileSystemStore } from "../../file-system/controllers/store"; -import type { FileEntry } from "../../file-system/models/app"; -import { useBufferStore } from "../../stores/buffer-store"; -import { useUIState } from "../../stores/ui-state-store"; +import { EDITOR_CONSTANTS } from "@/constants/editor-constants"; +import FileIcon from "@/file-explorer/views/file.icon"; +import { readDirectory } from "@/file-system/controllers/platform"; +import { useFileSystemStore } from "@/file-system/controllers/store"; +import type { FileEntry } from "@/file-system/models/app"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useUIState } from "@/stores/ui-state-store"; export default function Breadcrumb() { const buffers = useBufferStore.use.buffers(); @@ -87,11 +87,11 @@ export default function Breadcrumb() { setDropdown((prev) => prev ? { - ...prev, - items: fileEntries, - currentPath: previousPath, - navigationStack: prev.navigationStack.slice(0, -1), - } + ...prev, + items: fileEntries, + currentPath: previousPath, + navigationStack: prev.navigationStack.slice(0, -1), + } : null, ); } catch (error) { @@ -271,11 +271,11 @@ export default function Breadcrumb() { setDropdown((prev) => prev ? { - ...prev, - items: fileEntries, - currentPath: item.path, - navigationStack: [...prev.navigationStack, prev.currentPath], - } + ...prev, + items: fileEntries, + currentPath: item.path, + navigationStack: [...prev.navigationStack, prev.currentPath], + } : null, ); } catch (error) { diff --git a/src/components/editor/code-editor.tsx b/src/components/editor/code-editor.tsx index 1400d043c..d281b6895 100644 --- a/src/components/editor/code-editor.tsx +++ b/src/components/editor/code-editor.tsx @@ -1,17 +1,17 @@ import type React from "react"; import { useEffect, useMemo, useRef } from "react"; -import { useFileSystemStore } from "../../file-system/controllers/store"; -import { useEditorScroll } from "../../hooks/use-editor-scroll"; -import { useHover } from "../../hooks/use-hover"; -import { LspClient } from "../../lib/lsp/lsp-client"; -import { usePersistentSettingsStore } from "../../settings/stores/persistent-settings-store"; -import { useAppStore } from "../../stores/app-store"; -import { useBufferStore } from "../../stores/buffer-store"; -import { useEditorCursorStore } from "../../stores/editor-cursor-store"; -import { useEditorInstanceStore } from "../../stores/editor-instance-store"; -import { useEditorSearchStore } from "../../stores/editor-search-store"; -import { useEditorSettingsStore } from "../../stores/editor-settings-store"; -import { useLspStore } from "../../stores/lsp-store"; +import { useFileSystemStore } from "@/file-system/controllers/store"; +import { useEditorScroll } from "@/hooks/use-editor-scroll"; +import { useHover } from "@/hooks/use-hover"; +import { LspClient } from "@/lib/lsp/lsp-client"; +import { usePersistentSettingsStore } from "@/settings/stores/persistent-settings-store"; +import { useAppStore } from "@/stores/app-store"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; +import { useEditorInstanceStore } from "@/stores/editor-instance-store"; +import { useEditorSearchStore } from "@/stores/editor-search-store"; +import { useEditorSettingsStore } from "@/stores/editor-settings-store"; +import { useLspStore } from "@/stores/lsp-store"; import FindBar from "../find-bar"; import Breadcrumb from "./breadcrumb"; import { TextEditor } from "./core/text-editor"; @@ -53,7 +53,7 @@ const CodeEditor = ({ className }: CodeEditorProps) => { // Extract values from active buffer or use defaults const value = activeBuffer?.content || ""; const filePath = activeBuffer?.path || ""; - const onChange = activeBuffer ? handleContentChange : () => {}; + const onChange = activeBuffer ? handleContentChange : () => { }; // Initialize refs in store useEffect(() => { diff --git a/src/components/editor/core/editor-layers.tsx b/src/components/editor/core/editor-layers.tsx index 626dac4bf..7febd3523 100644 --- a/src/components/editor/core/editor-layers.tsx +++ b/src/components/editor/core/editor-layers.tsx @@ -1,6 +1,6 @@ import type React from "react"; import { createContext, memo, useContext, useMemo } from "react"; -import { EDITOR_CONSTANTS } from "../../../constants/editor-constants"; +import { EDITOR_CONSTANTS } from "@/constants/editor-constants"; type LayerType = "base" | "decoration" | "selection" | "overlay"; diff --git a/src/components/editor/core/line-based-editor.tsx b/src/components/editor/core/line-based-editor.tsx index 15643ab25..c907c856c 100644 --- a/src/components/editor/core/line-based-editor.tsx +++ b/src/components/editor/core/line-based-editor.tsx @@ -1,15 +1,15 @@ import { memo, useEffect, useRef } from "react"; -import { useEditorInteractions } from "../../../hooks/use-editor-interactions"; -import { useEditorLayout } from "../../../hooks/use-editor-layout"; -import { useEditorLayoutStore } from "../../../stores/editor-layout-store"; -import { useEditorSettingsStore } from "../../../stores/editor-settings-store"; -import type { Position } from "../../../types/editor-types"; +import { useEditorInteractions } from "@/hooks/use-editor-interactions"; +import { useEditorLayout } from "@/hooks/use-editor-layout"; +import { useEditorLayoutStore } from "@/stores/editor-layout-store"; +import { useEditorSettingsStore } from "@/stores/editor-settings-store"; +import type { Position } from "@/types/editor-types"; import { Cursor } from "../overlays/cursor"; import { DecorationLayer } from "../overlays/decoration-layer"; import { EditorViewport } from "../rendering/editor-viewport"; import { EditorLayer, EditorLayers } from "./editor-layers"; -import "../../../styles/editor-line-based.css"; -import "../../../styles/token-theme.css"; +import "@/styles/editor-line-based.css"; +import "@/styles/token-theme.css"; interface LineBasedEditorProps { onPositionClick?: (position: Position) => void; diff --git a/src/components/editor/core/text-editor.tsx b/src/components/editor/core/text-editor.tsx index b4d64a09d..02173991e 100644 --- a/src/components/editor/core/text-editor.tsx +++ b/src/components/editor/core/text-editor.tsx @@ -1,25 +1,22 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { basicEditingExtension } from "../../../extensions/basic-editing-extension"; -import { editorAPI } from "../../../extensions/editor-api"; -import { extensionManager } from "../../../extensions/extension-manager"; +import { basicEditingExtension } from "@/extensions/basic-editing-extension"; +import { editorAPI } from "@/extensions/editor-api"; +import { extensionManager } from "@/extensions/extension-manager"; import { setSyntaxHighlightingFilePath, syntaxHighlightingExtension, -} from "../../../extensions/syntax-highlighting-extension"; -import { useEditorLayout } from "../../../hooks/use-editor-layout"; -import { useBufferStore } from "../../../stores/buffer-store"; -import { useEditorCompletionStore } from "../../../stores/editor-completion-store"; -import { useEditorCursorStore } from "../../../stores/editor-cursor-store"; -import { useEditorInstanceStore } from "../../../stores/editor-instance-store"; -import { useEditorLayoutStore } from "../../../stores/editor-layout-store"; -import { useEditorSettingsStore } from "../../../stores/editor-settings-store"; -import { useEditorViewStore } from "../../../stores/editor-view-store"; -import { useLspStore } from "../../../stores/lsp-store"; -import type { Position } from "../../../types/editor-types"; -import { - calculateCursorPosition, - calculateOffsetFromPosition, -} from "../../../utils/editor-position"; +} from "@/extensions/syntax-highlighting-extension"; +import { useEditorLayout } from "@/hooks/use-editor-layout"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useEditorCompletionStore } from "@/stores/editor-completion-store"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; +import { useEditorInstanceStore } from "@/stores/editor-instance-store"; +import { useEditorLayoutStore } from "@/stores/editor-layout-store"; +import { useEditorSettingsStore } from "@/stores/editor-settings-store"; +import { useEditorViewStore } from "@/stores/editor-view-store"; +import { useLspStore } from "@/stores/lsp-store"; +import type { Position } from "@/types/editor-types"; +import { calculateCursorPosition, calculateOffsetFromPosition } from "@/utils/editor-position"; import { CompletionDropdown } from "../overlays/completion-dropdown"; import EditorContextMenu from "../overlays/editor-context-menu"; import { LineBasedEditor } from "./line-based-editor"; diff --git a/src/components/editor/overlays/completion-dropdown.tsx b/src/components/editor/overlays/completion-dropdown.tsx index ce8c48fad..a8b87045a 100644 --- a/src/components/editor/overlays/completion-dropdown.tsx +++ b/src/components/editor/overlays/completion-dropdown.tsx @@ -1,11 +1,11 @@ import { memo } from "react"; import type { CompletionItem } from "vscode-languageserver-protocol"; -import { EDITOR_CONSTANTS } from "../../../constants/editor-constants"; -import { useEditorLayout } from "../../../hooks/use-editor-layout"; -import { useEditorCompletionStore } from "../../../stores/editor-completion-store"; -import { useEditorCursorStore } from "../../../stores/editor-cursor-store"; -import { useEditorLayoutStore } from "../../../stores/editor-layout-store"; -import { highlightMatches } from "../../../utils/fuzzy-matcher"; +import { EDITOR_CONSTANTS } from "@/constants/editor-constants"; +import { useEditorLayout } from "@/hooks/use-editor-layout"; +import { useEditorCompletionStore } from "@/stores/editor-completion-store"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; +import { useEditorLayoutStore } from "@/stores/editor-layout-store"; +import { highlightMatches } from "@/utils/fuzzy-matcher"; interface CompletionDropdownProps { onApplyCompletion?: (completion: CompletionItem) => void; diff --git a/src/components/editor/overlays/cursor.tsx b/src/components/editor/overlays/cursor.tsx index 1d11af480..d2f4026a0 100644 --- a/src/components/editor/overlays/cursor.tsx +++ b/src/components/editor/overlays/cursor.tsx @@ -1,7 +1,7 @@ import { useEffect, useRef } from "react"; -import { useEditorLayout } from "../../../hooks/use-editor-layout"; -import { useEditorCursorStore } from "../../../stores/editor-cursor-store"; -import { useEditorLayoutStore } from "../../../stores/editor-layout-store"; +import { useEditorLayout } from "@/hooks/use-editor-layout"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; +import { useEditorLayoutStore } from "@/stores/editor-layout-store"; interface CursorRendererProps { visible?: boolean; diff --git a/src/components/editor/overlays/decoration-layer.tsx b/src/components/editor/overlays/decoration-layer.tsx index 11a00e6a5..d1befcace 100644 --- a/src/components/editor/overlays/decoration-layer.tsx +++ b/src/components/editor/overlays/decoration-layer.tsx @@ -1,12 +1,12 @@ import { useMemo } from "react"; import { useShallow } from "zustand/react/shallow"; -import { extensionManager } from "../../../extensions/extension-manager"; -import { useEditorLayout } from "../../../hooks/use-editor-layout"; -import { useEditorCursorStore } from "../../../stores/editor-cursor-store"; -import { useEditorDecorationsStore } from "../../../stores/editor-decorations-store"; -import { useEditorLayoutStore } from "../../../stores/editor-layout-store"; -import { useEditorViewStore } from "../../../stores/editor-view-store"; -import type { Decoration, Position } from "../../../types/editor-types"; +import { extensionManager } from "@/extensions/extension-manager"; +import { useEditorLayout } from "@/hooks/use-editor-layout"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; +import { useEditorDecorationsStore } from "@/stores/editor-decorations-store"; +import { useEditorLayoutStore } from "@/stores/editor-layout-store"; +import { useEditorViewStore } from "@/stores/editor-view-store"; +import type { Decoration, Position } from "@/types/editor-types"; interface RenderedDecoration { key: string; diff --git a/src/components/editor/overlays/editor-context-menu.tsx b/src/components/editor/overlays/editor-context-menu.tsx index 5293b0f08..f7e95ade7 100644 --- a/src/components/editor/overlays/editor-context-menu.tsx +++ b/src/components/editor/overlays/editor-context-menu.tsx @@ -17,7 +17,7 @@ import { Type, } from "lucide-react"; import { useEffect, useRef } from "react"; -import { useEditorCursorStore } from "../../../stores/editor-cursor-store"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; import KeybindingBadge from "../../ui/keybinding-badge"; interface EditorContextMenuProps { diff --git a/src/components/editor/overlays/hover-tooltip.tsx b/src/components/editor/overlays/hover-tooltip.tsx index f69188f14..561517038 100644 --- a/src/components/editor/overlays/hover-tooltip.tsx +++ b/src/components/editor/overlays/hover-tooltip.tsx @@ -1,7 +1,7 @@ import { memo } from "react"; -import { EDITOR_CONSTANTS } from "../../../constants/editor-constants"; -import { useEditorCompletionStore } from "../../../stores/editor-completion-store"; -import { useEditorSettingsStore } from "../../../stores/editor-settings-store"; +import { EDITOR_CONSTANTS } from "@/constants/editor-constants"; +import { useEditorCompletionStore } from "@/stores/editor-completion-store"; +import { useEditorSettingsStore } from "@/stores/editor-settings-store"; export const HoverTooltip = memo(() => { const fontSize = useEditorSettingsStore((state) => state.fontSize); diff --git a/src/components/editor/rendering/editor-viewport.tsx b/src/components/editor/rendering/editor-viewport.tsx index b24d7e37e..5f52c5b48 100644 --- a/src/components/editor/rendering/editor-viewport.tsx +++ b/src/components/editor/rendering/editor-viewport.tsx @@ -1,11 +1,11 @@ import type React from "react"; import { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react"; -import { EDITOR_CONSTANTS } from "../../../constants/editor-constants"; -import { useEditorLayout } from "../../../hooks/use-editor-layout"; -import { useEditorCursorStore } from "../../../stores/editor-cursor-store"; -import { useEditorLayoutStore } from "../../../stores/editor-layout-store"; -import { useEditorSettingsStore } from "../../../stores/editor-settings-store"; -import { useEditorViewStore } from "../../../stores/editor-view-store"; +import { EDITOR_CONSTANTS } from "@/constants/editor-constants"; +import { useEditorLayout } from "@/hooks/use-editor-layout"; +import { useEditorCursorStore } from "@/stores/editor-cursor-store"; +import { useEditorLayoutStore } from "@/stores/editor-layout-store"; +import { useEditorSettingsStore } from "@/stores/editor-settings-store"; +import { useEditorViewStore } from "@/stores/editor-view-store"; import { LineWithContent } from "./line-with-content"; interface EditorViewportProps { diff --git a/src/components/editor/rendering/line-gutter.tsx b/src/components/editor/rendering/line-gutter.tsx index c2ec355f0..bb7c58f6d 100644 --- a/src/components/editor/rendering/line-gutter.tsx +++ b/src/components/editor/rendering/line-gutter.tsx @@ -1,5 +1,5 @@ -import type { Decoration } from "../../../types/editor-types"; -import { cn } from "../../../utils/cn"; +import type { Decoration } from "@/types/editor-types"; +import { cn } from "@/utils/cn"; interface LineGutterProps { lineNumber: number; diff --git a/src/components/editor/rendering/line-renderer.tsx b/src/components/editor/rendering/line-renderer.tsx index 6e5306d90..ce6d8f2c8 100644 --- a/src/components/editor/rendering/line-renderer.tsx +++ b/src/components/editor/rendering/line-renderer.tsx @@ -1,5 +1,5 @@ import type React from "react"; -import type { Decoration, LineToken } from "../../../types/editor-types"; +import type { Decoration, LineToken } from "@/types/editor-types"; interface LineRendererProps { lineNumber: number; diff --git a/src/components/editor/rendering/line-with-content.tsx b/src/components/editor/rendering/line-with-content.tsx index 392c25117..a0e516c87 100644 --- a/src/components/editor/rendering/line-with-content.tsx +++ b/src/components/editor/rendering/line-with-content.tsx @@ -1,6 +1,6 @@ import { memo } from "react"; import { useEditorDecorationsStore } from "@/stores/editor-decorations-store"; -import { useEditorViewStore } from "../../../stores/editor-view-store"; +import { useEditorViewStore } from "@/stores/editor-view-store"; import { LineGutter } from "./line-gutter"; import { LineRenderer } from "./line-renderer"; diff --git a/src/components/git/git-actions-menu.tsx b/src/components/git/git-actions-menu.tsx index e21fa4ba5..e53f31168 100644 --- a/src/components/git/git-actions-menu.tsx +++ b/src/components/git/git-actions-menu.tsx @@ -10,15 +10,15 @@ import { Upload, } from "lucide-react"; import { useState } from "react"; +import { useGitStore } from "@/stores/git-store"; import { cn } from "@/utils/cn"; -import { useGitStore } from "../../stores/git-store"; import { discardAllChanges, fetchChanges, initRepository, pullChanges, pushChanges, -} from "../../utils/git"; +} from "@/utils/git"; interface GitActionsMenuProps { isOpen: boolean; diff --git a/src/components/git/git-branch-manager.tsx b/src/components/git/git-branch-manager.tsx index c6cb3720d..1cc6d3f47 100644 --- a/src/components/git/git-branch-manager.tsx +++ b/src/components/git/git-branch-manager.tsx @@ -2,13 +2,7 @@ import { Check, ChevronDown, GitBranch, Plus, Trash2, X } from "lucide-react"; import { useEffect, useState } from "react"; import { useToast } from "@/contexts/toast-context"; import { cn } from "@/utils/cn"; -import { - checkoutBranch, - createBranch, - createStash, - deleteBranch, - getBranches, -} from "../../utils/git"; +import { checkoutBranch, createBranch, createStash, deleteBranch, getBranches } from "@/utils/git"; interface GitBranchManagerProps { currentBranch?: string; diff --git a/src/components/git/git-commit-history.tsx b/src/components/git/git-commit-history.tsx index 35f8f13fd..6219d24d0 100644 --- a/src/components/git/git-commit-history.tsx +++ b/src/components/git/git-commit-history.tsx @@ -1,7 +1,7 @@ import { ChevronDown, ChevronRight, Clock, Hash, User } from "lucide-react"; import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { useGitStore } from "../../stores/git-store"; -import { getCommitDiff } from "../../utils/git"; +import { useGitStore } from "@/stores/git-store"; +import { getCommitDiff } from "@/utils/git"; interface GitCommitHistoryProps { onViewCommitDiff?: (commitHash: string, filePath?: string) => void; diff --git a/src/components/git/git-commit-panel.tsx b/src/components/git/git-commit-panel.tsx index 8379f9baf..2997dc52a 100644 --- a/src/components/git/git-commit-panel.tsx +++ b/src/components/git/git-commit-panel.tsx @@ -1,8 +1,8 @@ import { AlertCircle, GitCommit as GitCommitIcon, Send } from "lucide-react"; import type React from "react"; import { useState } from "react"; -import { cn } from "../../utils/cn"; -import { commitChanges } from "../../utils/git"; +import { cn } from "@/utils/cn"; +import { commitChanges } from "@/utils/git"; interface GitCommitPanelProps { stagedFilesCount: number; diff --git a/src/components/git/git-remote-manager.tsx b/src/components/git/git-remote-manager.tsx index 583464032..51061209a 100644 --- a/src/components/git/git-remote-manager.tsx +++ b/src/components/git/git-remote-manager.tsx @@ -1,7 +1,7 @@ import { Globe, Plus, Server, Trash2, X } from "lucide-react"; import { useEffect, useState } from "react"; import { cn } from "@/utils/cn"; -import { addRemote, type GitRemote, getRemotes, removeRemote } from "../../utils/git"; +import { addRemote, type GitRemote, getRemotes, removeRemote } from "@/utils/git"; interface GitRemoteManagerProps { isOpen: boolean; diff --git a/src/components/git/git-stash-manager.tsx b/src/components/git/git-stash-manager.tsx index 4dd4aa11c..9e348828d 100644 --- a/src/components/git/git-stash-manager.tsx +++ b/src/components/git/git-stash-manager.tsx @@ -8,7 +8,7 @@ import { type GitStash, getStashes, popStash, -} from "../../utils/git"; +} from "@/utils/git"; interface GitStashManagerProps { isOpen: boolean; diff --git a/src/components/git/git-status-panel.tsx b/src/components/git/git-status-panel.tsx index 4bc85c417..34e431691 100644 --- a/src/components/git/git-status-panel.tsx +++ b/src/components/git/git-status-panel.tsx @@ -19,7 +19,7 @@ import { stageFile, unstageAllFiles, unstageFile, -} from "../../utils/git"; +} from "@/utils/git"; interface GitStatusPanelProps { files: GitFile[]; diff --git a/src/components/git/git-tag-manager.tsx b/src/components/git/git-tag-manager.tsx index 3f331e8eb..da4b7f4ed 100644 --- a/src/components/git/git-tag-manager.tsx +++ b/src/components/git/git-tag-manager.tsx @@ -1,7 +1,7 @@ import { Calendar, GitCommit, Plus, Tag, Trash2, X } from "lucide-react"; import { useEffect, useState } from "react"; import { cn } from "@/utils/cn"; -import { createTag, deleteTag, type GitTag, getTags } from "../../utils/git"; +import { createTag, deleteTag, type GitTag, getTags } from "@/utils/git"; interface GitTagManagerProps { isOpen: boolean; diff --git a/src/components/git/git-view.tsx b/src/components/git/git-view.tsx index e65b8ccd9..a8d7a951b 100644 --- a/src/components/git/git-view.tsx +++ b/src/components/git/git-view.tsx @@ -1,9 +1,9 @@ import { GitBranch, RefreshCw } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useGitStore } from "@/stores/git-store"; import { cn } from "@/utils/cn"; -import { useBufferStore } from "../../stores/buffer-store"; -import { useGitStore } from "../../stores/git-store"; -import { getBranches, getCommitDiff, getFileDiff, getGitLog, getGitStatus } from "../../utils/git"; +import { getBranches, getCommitDiff, getFileDiff, getGitLog, getGitStatus } from "@/utils/git"; import type { MultiFileDiff } from "../diff-viewer/utils/types"; // Import modular components diff --git a/src/components/image-viewer/image-viewer.tsx b/src/components/image-viewer/image-viewer.tsx index 932db7f33..3e7f839fe 100644 --- a/src/components/image-viewer/image-viewer.tsx +++ b/src/components/image-viewer/image-viewer.tsx @@ -1,7 +1,7 @@ import { convertFileSrc } from "@tauri-apps/api/core"; import { FileIcon, Minus, Plus, RotateCcw, X } from "lucide-react"; import { useEffect, useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import Button from "../ui/button"; interface ImageViewerProps { diff --git a/src/components/layout/main-layout.tsx b/src/components/layout/main-layout.tsx index 24cdea8a5..1507263f3 100644 --- a/src/components/layout/main-layout.tsx +++ b/src/components/layout/main-layout.tsx @@ -1,14 +1,14 @@ import { useState } from "react"; -import SQLiteViewer from "../../database/sqlite-viewer"; -import { useFileSystemStore } from "../../file-system/controllers/store"; -import { ProjectNameMenu } from "../../hooks/use-context-menus"; -import { useKeyboardShortcutsWrapper } from "../../hooks/use-keyboard-shortcuts-wrapper"; -import { useMenuEventsWrapper } from "../../hooks/use-menu-events-wrapper"; -import SettingsDialog from "../../settings/components/settings-dialog"; -import { usePersistentSettingsStore } from "../../settings/stores/persistent-settings-store"; -import { useSettingsStore } from "../../settings/stores/settings-store"; -import { useBufferStore } from "../../stores/buffer-store"; -import { useUIState } from "../../stores/ui-state-store"; +import SQLiteViewer from "@/database/sqlite-viewer"; +import { useFileSystemStore } from "@/file-system/controllers/store"; +import { ProjectNameMenu } from "@/hooks/use-context-menus"; +import { useKeyboardShortcutsWrapper } from "@/hooks/use-keyboard-shortcuts-wrapper"; +import { useMenuEventsWrapper } from "@/hooks/use-menu-events-wrapper"; +import SettingsDialog from "@/settings/components/settings-dialog"; +import { usePersistentSettingsStore } from "@/settings/stores/persistent-settings-store"; +import { useSettingsStore } from "@/settings/stores/settings-store"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useUIState } from "@/stores/ui-state-store"; import { type GitHunk, stageHunk, unstageHunk } from "../../utils/git"; import AIChat from "../ai-chat/ai-chat"; import BottomPane from "../bottom-pane"; diff --git a/src/components/layout/main-sidebar.tsx b/src/components/layout/main-sidebar.tsx index f61499f02..a428a79f6 100644 --- a/src/components/layout/main-sidebar.tsx +++ b/src/components/layout/main-sidebar.tsx @@ -2,14 +2,14 @@ import { FilePlus, FolderOpen, FolderPlus, Server } from "lucide-react"; import type React from "react"; import { useMemo } from "react"; import { cn } from "@/utils/cn"; -import FileTree from "../../file-explorer/views/file-tree"; -import { useFileSystemStore } from "../../file-system/controllers/store"; -import type { FileEntry } from "../../file-system/models/app"; -import { usePersistentSettingsStore } from "../../settings/stores/persistent-settings-store"; -import { useBufferStore } from "../../stores/buffer-store"; -import { useProjectStore } from "../../stores/project-store"; -import { useSidebarStore } from "../../stores/sidebar-store"; -import { useUIState } from "../../stores/ui-state-store"; +import FileTree from "@/file-explorer/views/file-tree"; +import { useFileSystemStore } from "@/file-system/controllers/store"; +import type { FileEntry } from "@/file-system/models/app"; +import { usePersistentSettingsStore } from "@/settings/stores/persistent-settings-store"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useProjectStore } from "@/stores/project-store"; +import { useSidebarStore } from "@/stores/sidebar-store"; +import { useUIState } from "@/stores/ui-state-store"; import GitView from "../git/git-view"; import RemoteConnectionView from "../remote/remote-connection-view"; import SearchView from "../search-view"; diff --git a/src/components/layout/sidebar-pane-selector.tsx b/src/components/layout/sidebar-pane-selector.tsx index ffd06b954..bb939cfab 100644 --- a/src/components/layout/sidebar-pane-selector.tsx +++ b/src/components/layout/sidebar-pane-selector.tsx @@ -1,5 +1,5 @@ import { Folder, GitBranch, Package, Search, Server } from "lucide-react"; -import type { CoreFeaturesState } from "../../settings/models/feature.types"; +import type { CoreFeaturesState } from "@/settings/models/feature.types"; import Button from "../ui/button"; interface SidebarPaneSelectorProps { diff --git a/src/components/remote/connection-list.tsx b/src/components/remote/connection-list.tsx index 81db1c847..505af54f0 100644 --- a/src/components/remote/connection-list.tsx +++ b/src/components/remote/connection-list.tsx @@ -1,6 +1,6 @@ import { Edit, FolderOpen, Plus, Server, Trash2, Wifi } from "lucide-react"; import React, { useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import Button from "../ui/button"; import type { RemoteConnection } from "./types"; diff --git a/src/components/remote/remote-connection-view.tsx b/src/components/remote/remote-connection-view.tsx index 894d95b18..9a5ad5440 100644 --- a/src/components/remote/remote-connection-view.tsx +++ b/src/components/remote/remote-connection-view.tsx @@ -1,6 +1,6 @@ import { invoke } from "@tauri-apps/api/core"; import { useEffect, useState } from "react"; -import { safeLocalStorageSetItem } from "../../utils/storage"; +import { safeLocalStorageSetItem } from "@/utils/storage"; import ConnectionDialog from "./connection-dialog"; import ConnectionList from "./connection-list"; import type { RemoteConnection, RemoteConnectionFormData } from "./types"; diff --git a/src/components/resizable-sidebar/resizable-sidebar.css b/src/components/resizable-sidebar/resizable-sidebar.css index b75a28e60..aced65e7c 100644 --- a/src/components/resizable-sidebar/resizable-sidebar.css +++ b/src/components/resizable-sidebar/resizable-sidebar.css @@ -1,4 +1,4 @@ -@import "../../styles.css"; +@import "@/styles.css"; /* Resizable handle styles */ @@ -25,4 +25,4 @@ .resize-handle:hover .resize-handle__indicator { @apply opacity-100; -} \ No newline at end of file +} diff --git a/src/components/resizable-sidebar/resizable-sidebar.tsx b/src/components/resizable-sidebar/resizable-sidebar.tsx index 0a845da7f..2d3e95955 100644 --- a/src/components/resizable-sidebar/resizable-sidebar.tsx +++ b/src/components/resizable-sidebar/resizable-sidebar.tsx @@ -1,6 +1,6 @@ import type React from "react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; import "./resizable-sidebar.css"; interface ResizableSidebarProps { diff --git a/src/components/tab-bar/tab-bar-item.tsx b/src/components/tab-bar/tab-bar-item.tsx index 3d330dc5e..9bc20e283 100644 --- a/src/components/tab-bar/tab-bar-item.tsx +++ b/src/components/tab-bar/tab-bar-item.tsx @@ -1,8 +1,8 @@ import { Database, Package, Pin, X } from "lucide-react"; import { memo } from "react"; -import FileIcon from "../../file-explorer/views/file.icon"; -import type { Buffer } from "../../types/buffer"; -import { cn } from "../../utils/cn"; +import FileIcon from "@/file-explorer/views/file.icon"; +import type { Buffer } from "@/types/buffer"; +import { cn } from "@/utils/cn"; interface TabBarItemProps { buffer: Buffer; diff --git a/src/components/tab-bar/tab-bar.tsx b/src/components/tab-bar/tab-bar.tsx index 5445faeaa..fbcc10bfa 100644 --- a/src/components/tab-bar/tab-bar.tsx +++ b/src/components/tab-bar/tab-bar.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { usePersistentSettingsStore } from "../../settings/stores/persistent-settings-store"; -import { useBufferStore } from "../../stores/buffer-store"; -import type { Buffer } from "../../types/buffer"; +import { usePersistentSettingsStore } from "@/settings/stores/persistent-settings-store"; +import { useBufferStore } from "@/stores/buffer-store"; +import type { Buffer } from "@/types/buffer"; import TabBarItem from "./tab-bar-item"; import TabContextMenu from "./tab-context-menu"; diff --git a/src/components/tab-bar/tab-context-menu.tsx b/src/components/tab-bar/tab-context-menu.tsx index 29b989698..8f54c93e2 100644 --- a/src/components/tab-bar/tab-context-menu.tsx +++ b/src/components/tab-bar/tab-context-menu.tsx @@ -1,7 +1,7 @@ // todo: we should make a context menu component that can be used for other things too import { Copy, FolderOpen, Pin, PinOff, RotateCcw } from "lucide-react"; import { useEffect, useRef } from "react"; -import type { Buffer } from "../../types/buffer"; +import type { Buffer } from "@/types/buffer"; import KeybindingBadge from "../ui/keybinding-badge"; interface TabContextMenuProps { diff --git a/src/components/tab-bar/tab-drag-preview.tsx b/src/components/tab-bar/tab-drag-preview.tsx index 7339f0a08..f4872c815 100644 --- a/src/components/tab-bar/tab-drag-preview.tsx +++ b/src/components/tab-bar/tab-drag-preview.tsx @@ -1,6 +1,6 @@ import { Database, Package, Pin } from "lucide-react"; -import FileIcon from "../../file-explorer/views/file.icon"; -import type { Buffer } from "../../types/buffer"; +import FileIcon from "@/file-explorer/views/file.icon"; +import type { Buffer } from "@/types/buffer"; interface TabDragPreviewProps { x: number; diff --git a/src/components/terminal/terminal-container.tsx b/src/components/terminal/terminal-container.tsx index 43670bbf5..21adacfb7 100644 --- a/src/components/terminal/terminal-container.tsx +++ b/src/components/terminal/terminal-container.tsx @@ -1,7 +1,7 @@ import type React from "react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { useTerminalTabs } from "../../hooks/use-terminal-tabs"; -import { useUIState } from "../../stores/ui-state-store"; +import { useTerminalTabs } from "@/hooks/use-terminal-tabs"; +import { useUIState } from "@/stores/ui-state-store"; import TerminalSession from "./terminal-session"; import TerminalTabBar from "./terminal-tab-bar"; diff --git a/src/components/terminal/terminal-search.tsx b/src/components/terminal/terminal-search.tsx index 73485166d..35ebe46d8 100644 --- a/src/components/terminal/terminal-search.tsx +++ b/src/components/terminal/terminal-search.tsx @@ -1,7 +1,7 @@ import { ChevronDown, ChevronUp, X } from "lucide-react"; import type React from "react"; import { useEffect, useRef, useState } from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface TerminalSearchProps { onSearch: (term: string) => void; diff --git a/src/components/terminal/terminal-session.tsx b/src/components/terminal/terminal-session.tsx index 34740858b..2f031d6c1 100644 --- a/src/components/terminal/terminal-session.tsx +++ b/src/components/terminal/terminal-session.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useRef } from "react"; -import type { Terminal as TerminalType } from "../../types/terminal"; +import type { Terminal as TerminalType } from "@/types/terminal"; import { XtermTerminal } from "./terminal"; import { TerminalErrorBoundary } from "./terminal-error-boundary"; diff --git a/src/components/terminal/terminal-tab-bar.tsx b/src/components/terminal/terminal-tab-bar.tsx index 632ce8088..4421bb17e 100644 --- a/src/components/terminal/terminal-tab-bar.tsx +++ b/src/components/terminal/terminal-tab-bar.tsx @@ -11,8 +11,8 @@ import { X, } from "lucide-react"; import React, { useEffect, useRef, useState } from "react"; -import type { Terminal } from "../../types/terminal"; -import { cn } from "../../utils/cn"; +import type { Terminal } from "@/types/terminal"; +import { cn } from "@/utils/cn"; import KeybindingBadge from "../ui/keybinding-badge"; import Tooltip from "../ui/tooltip"; diff --git a/src/components/terminal/terminal.tsx b/src/components/terminal/terminal.tsx index 2d806411b..33643f337 100644 --- a/src/components/terminal/terminal.tsx +++ b/src/components/terminal/terminal.tsx @@ -9,11 +9,11 @@ import { SearchAddon } from "xterm-addon-search"; import { SerializeAddon } from "xterm-addon-serialize"; import { Unicode11Addon } from "xterm-addon-unicode11"; import { WebLinksAddon } from "xterm-addon-web-links"; -import { useEditorSettingsStore } from "../../stores/editor-settings-store"; -import { useProjectStore } from "../../stores/project-store"; -import { useTerminalStore } from "../../stores/terminal-store"; -import { useThemeStore } from "../../stores/theme-store"; -import { cn } from "../../utils/cn"; +import { useEditorSettingsStore } from "@/stores/editor-settings-store"; +import { useProjectStore } from "@/stores/project-store"; +import { useTerminalStore } from "@/stores/terminal-store"; +import { useThemeStore } from "@/stores/theme-store"; +import { cn } from "@/utils/cn"; import { TerminalSearch } from "./terminal-search"; import "xterm/css/xterm.css"; import "./terminal.css"; diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index 5fdea8687..4f6dea236 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -1,5 +1,5 @@ import type React from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface ButtonProps extends React.ButtonHTMLAttributes { variant?: "default" | "ghost" | "outline" | "vim"; diff --git a/src/components/ui/dropdown.tsx b/src/components/ui/dropdown.tsx index a2db8a436..38ce701af 100644 --- a/src/components/ui/dropdown.tsx +++ b/src/components/ui/dropdown.tsx @@ -1,7 +1,7 @@ import { ChevronDown, Search } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { createPortal } from "react-dom"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface DropdownProps { value: string; diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx index 208021c12..5084a03bb 100644 --- a/src/components/ui/input.tsx +++ b/src/components/ui/input.tsx @@ -1,5 +1,5 @@ import type React from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface InputProps extends Omit, "size"> { size?: "xs" | "sm" | "md"; diff --git a/src/components/ui/keybinding-badge.tsx b/src/components/ui/keybinding-badge.tsx index ff71fdfb8..66221db51 100644 --- a/src/components/ui/keybinding-badge.tsx +++ b/src/components/ui/keybinding-badge.tsx @@ -1,4 +1,4 @@ -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface KeybindingBadgeProps { keys: string[]; diff --git a/src/components/ui/section.tsx b/src/components/ui/section.tsx index bf4a5aae8..d39a7edaf 100644 --- a/src/components/ui/section.tsx +++ b/src/components/ui/section.tsx @@ -1,5 +1,5 @@ import type React from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface SectionProps { title: string; diff --git a/src/components/ui/switch.tsx b/src/components/ui/switch.tsx index d6d15e5ba..a6c955cb1 100644 --- a/src/components/ui/switch.tsx +++ b/src/components/ui/switch.tsx @@ -1,4 +1,4 @@ -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface SwitchProps { checked: boolean; diff --git a/src/components/ui/toggle.tsx b/src/components/ui/toggle.tsx index 1197f3a01..c65fe68a4 100644 --- a/src/components/ui/toggle.tsx +++ b/src/components/ui/toggle.tsx @@ -1,5 +1,5 @@ import type React from "react"; -import { cn } from "../../utils/cn"; +import { cn } from "@/utils/cn"; interface ToggleProps extends React.ButtonHTMLAttributes { pressed: boolean; diff --git a/src/file-explorer/views/file-tree-custom-dnd.tsx b/src/file-explorer/views/file-tree-custom-dnd.tsx index b41b6bd28..f4d3788e6 100644 --- a/src/file-explorer/views/file-tree-custom-dnd.tsx +++ b/src/file-explorer/views/file-tree-custom-dnd.tsx @@ -1,7 +1,7 @@ import type React from "react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { moveFile } from "../../file-system/controllers/platform"; -import type { FileEntry } from "../../file-system/models/app"; +import { moveFile } from "@/file-system/controllers/platform"; +import type { FileEntry } from "@/file-system/models/app"; interface CustomDragState { isDragging: boolean; @@ -88,7 +88,7 @@ export const useCustomDragDrop = ( dragState.draggedItem?.isDir && path.startsWith( dragState.draggedItem.path + - (dragState.draggedItem.path.includes("\\") ? "\\" : "/"), + (dragState.draggedItem.path.includes("\\") ? "\\" : "/"), ) ) { setDragState((prev) => ({ diff --git a/src/file-explorer/views/file-tree.tsx b/src/file-explorer/views/file-tree.tsx index 24833e7dc..58af477b7 100644 --- a/src/file-explorer/views/file-tree.tsx +++ b/src/file-explorer/views/file-tree.tsx @@ -21,9 +21,9 @@ import type React from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { createPortal } from "react-dom"; import { cn } from "@/utils/cn"; -import { moveFile, readDirectory, readFile } from "../../file-system/controllers/platform"; -import type { ContextMenuState, FileEntry } from "../../file-system/models/app"; -import { type GitFile, type GitStatus, getGitStatus } from "../../utils/git"; +import { moveFile, readDirectory, readFile } from "@/file-system/controllers/platform"; +import type { ContextMenuState, FileEntry } from "@/file-system/models/app"; +import { type GitFile, type GitStatus, getGitStatus } from "@/utils/git"; import FileIcon from "./file.icon"; import { useCustomDragDrop } from "./file-tree-custom-dnd"; import "./file-tree.css"; @@ -568,7 +568,7 @@ const FileTree = ({ "hover:bg-hover focus:outline-none", activeBufferPath === file.path && "bg-selected", dragState.dragOverPath === file.path && - "!bg-accent !bg-opacity-20 !border-2 !border-accent !border-dashed", + "!bg-accent !bg-opacity-20 !border-2 !border-accent !border-dashed", dragState.isDragging && "cursor-move", file.ignored && "opacity-50", file.isDir && "file-tree-item-dir", @@ -689,7 +689,7 @@ const FileTree = ({ "file-tree-container flex flex-1 select-none", "flex-col gap-0 overflow-auto", dragState.dragOverPath === "__ROOT__" && - "!bg-accent !bg-opacity-10 !border-2 !border-accent !border-dashed", + "!bg-accent !bg-opacity-10 !border-2 !border-accent !border-dashed", )} ref={containerRef} style={{ @@ -954,7 +954,7 @@ const FileTree = ({ e.stopPropagation(); try { await navigator.clipboard.writeText(contextMenu.path); - } catch (_error) {} + } catch (_error) { } setContextMenu(null); }} className={cn( diff --git a/src/file-system/controllers/store.ts b/src/file-system/controllers/store.ts index 1c2094abf..e34aff58c 100644 --- a/src/file-system/controllers/store.ts +++ b/src/file-system/controllers/store.ts @@ -3,16 +3,16 @@ import { revealItemInDir } from "@tauri-apps/plugin-opener"; import { create } from "zustand"; import { immer } from "zustand/middleware/immer"; import { createSelectors } from "@/utils/zustand-selectors"; -import type { CodeEditorRef } from "../../components/editor/code-editor"; -import { useFileTreeStore } from "../../file-explorer/controllers/file-tree-store"; +import type { CodeEditorRef } from "@/components/editor/code-editor"; +import { useFileTreeStore } from "@/file-explorer/controllers/file-tree-store"; // Store imports - Note: Direct store communication via getState() is used here. // This is an acceptable Zustand pattern, though it creates coupling between stores. // See: https://github.com/pmndrs/zustand/discussions/1319 -import { useBufferStore } from "../../stores/buffer-store"; -import { useGitStore } from "../../stores/git-store"; -import { useProjectStore } from "../../stores/project-store"; -import { getGitStatus } from "../../utils/git"; -import { isDiffFile, parseRawDiffContent } from "../../utils/git-diff-parser"; +import { useBufferStore } from "@/stores/buffer-store"; +import { useGitStore } from "@/stores/git-store"; +import { useProjectStore } from "@/stores/project-store"; +import { getGitStatus } from "@/utils/git"; +import { isDiffFile, parseRawDiffContent } from "@/utils/git-diff-parser"; import type { FileEntry } from "../models/app"; import type { FsActions, FsState } from "../models/interface"; import { @@ -319,11 +319,11 @@ export const useFileSystemStore = createSelectors( const itemType = isDirectory ? "folder" : "file"; const confirmMessage = isDirectory ? `Are you sure you want to delete the folder "${targetPath - .split("/") - .pop()}" and all its contents? This action cannot be undone.` + .split("/") + .pop()}" and all its contents? This action cannot be undone.` : `Are you sure you want to delete the file "${targetPath - .split("/") - .pop()}"? This action cannot be undone.`; + .split("/") + .pop()}"? This action cannot be undone.`; const confirmed = await confirm(confirmMessage, { title: `Delete ${itemType}`, diff --git a/src/file-system/models/interface.ts b/src/file-system/models/interface.ts index 066715e90..90b286641 100644 --- a/src/file-system/models/interface.ts +++ b/src/file-system/models/interface.ts @@ -1,4 +1,4 @@ -import type { CodeEditorRef } from "../../components/editor/code-editor"; +import type { CodeEditorRef } from "@/components/editor/code-editor"; import type { FileEntry } from "./app"; export interface FsState { diff --git a/src/settings/components/tabs/editor-settings.tsx b/src/settings/components/tabs/editor-settings.tsx index c6223ad0a..4af0d9834 100644 --- a/src/settings/components/tabs/editor-settings.tsx +++ b/src/settings/components/tabs/editor-settings.tsx @@ -2,7 +2,7 @@ import { FontSelector } from "@/components/ui/font-selector"; import Input from "@/components/ui/input"; import Section, { SettingRow } from "@/components/ui/section"; import Switch from "@/components/ui/switch"; -import { useSettingsStore } from "../../stores/settings-store"; +import { useSettingsStore } from "@/settings/stores/settings-store"; export const EditorSettings = () => { const { settings, updateSetting } = useSettingsStore(); diff --git a/src/settings/components/tabs/general-settings.tsx b/src/settings/components/tabs/general-settings.tsx index d2f0da73e..1edbe8c07 100644 --- a/src/settings/components/tabs/general-settings.tsx +++ b/src/settings/components/tabs/general-settings.tsx @@ -4,7 +4,7 @@ import KeybindingBadge from "@/components/ui/keybinding-badge"; import Section, { SettingRow } from "@/components/ui/section"; import Switch from "@/components/ui/switch"; import { useUpdater } from "@/settings/hooks/use-updater"; -import { useSettingsStore } from "../../stores/settings-store"; +import { useSettingsStore } from "@/settings/stores/settings-store"; const isMac = typeof navigator !== "undefined" && navigator.platform.includes("Mac"); diff --git a/src/settings/components/tabs/theme-settings.tsx b/src/settings/components/tabs/theme-settings.tsx index e89aef20b..d8aefa0a3 100644 --- a/src/settings/components/tabs/theme-settings.tsx +++ b/src/settings/components/tabs/theme-settings.tsx @@ -3,9 +3,9 @@ import { useEffect, useState } from "react"; import Button from "@/components/ui/button"; import Dropdown from "@/components/ui/dropdown"; import Section, { SettingRow } from "@/components/ui/section"; -import { themeRegistry } from "../../../extensions/themes/theme-registry"; -import type { ThemeDefinition } from "../../../extensions/themes/types"; -import { useSettingsStore } from "../../stores/settings-store"; +import { themeRegistry } from "@/extensions/themes/theme-registry"; +import type { ThemeDefinition } from "@/extensions/themes/types"; +import { useSettingsStore } from "@/settings/stores/settings-store"; export const ThemeSettings = () => { const { settings, updateTheme } = useSettingsStore(); @@ -40,7 +40,7 @@ export const ThemeSettings = () => { input.onchange = async (e) => { const file = (e.target as HTMLInputElement).files?.[0]; if (file) { - const { uploadTheme } = await import("../../../utils/theme-upload"); + const { uploadTheme } = await import("@/utils/theme-upload"); const result = await uploadTheme(file); if (result.success) { console.log("Theme uploaded successfully:", result.theme?.name); diff --git a/src/settings/stores/settings-store.ts b/src/settings/stores/settings-store.ts index 62f1e9722..fd3c47475 100644 --- a/src/settings/stores/settings-store.ts +++ b/src/settings/stores/settings-store.ts @@ -55,7 +55,7 @@ const applyTheme = async (theme: Theme) => { // For TOML themes, use the theme registry try { - const { themeRegistry } = await import("../../extensions/themes/theme-registry"); + const { themeRegistry } = await import("@/extensions/themes/theme-registry"); console.log(`Settings store: Attempting to apply theme "${theme}"`); // Check if theme registry is ready diff --git a/src/stores/ai-chat/store.ts b/src/stores/ai-chat/store.ts index 070511b8f..edad02abc 100644 --- a/src/stores/ai-chat/store.ts +++ b/src/stores/ai-chat/store.ts @@ -2,15 +2,15 @@ import { produce } from "immer"; import { create } from "zustand"; import { persist } from "zustand/middleware"; import { immer } from "zustand/middleware/immer"; -import type { Chat } from "../../components/ai-chat/types"; -import type { FileEntry } from "../../file-system/models/app"; -import { AI_PROVIDERS } from "../../types/ai-provider"; +import type { Chat } from "@/components/ai-chat/types"; +import type { FileEntry } from "@/file-system/models/app"; +import { AI_PROVIDERS } from "@/types/ai-provider"; import { getProviderApiToken, removeProviderApiToken, storeProviderApiToken, validateProviderApiKey, -} from "../../utils/ai-chat"; +} from "@/utils/ai-chat"; import type { AIChatActions, AIChatState } from "./types"; export const useAIChatStore = create()( diff --git a/src/stores/ai-chat/types.ts b/src/stores/ai-chat/types.ts index 88c6cd9c5..f20b9e831 100644 --- a/src/stores/ai-chat/types.ts +++ b/src/stores/ai-chat/types.ts @@ -1,5 +1,5 @@ -import type { Chat, Message } from "../../components/ai-chat/types"; -import type { FileEntry } from "../../file-system/models/app"; +import type { Chat, Message } from "@/components/ai-chat/types"; +import type { FileEntry } from "@/file-system/models/app"; export interface AIChatState { // Input state From 5ef464c91335e7a33bc672ef0d5df1093a7c55f2 Mon Sep 17 00:00:00 2001 From: Konv Suu <2583695112@qq.com> Date: Wed, 6 Aug 2025 09:35:21 +0800 Subject: [PATCH 2/2] Format --- .../command/components/command-bar.tsx | 4 ++-- .../diff-viewer/hooks/useDiffData.ts | 12 +++++------ src/components/editor/breadcrumb.tsx | 20 +++++++++---------- src/components/editor/code-editor.tsx | 2 +- src/components/layout/main-sidebar.tsx | 2 +- .../views/file-tree-custom-dnd.tsx | 2 +- src/file-explorer/views/file-tree.tsx | 8 ++++---- src/file-system/controllers/store.ts | 10 +++++----- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/components/command/components/command-bar.tsx b/src/components/command/components/command-bar.tsx index 6de0a90cb..321478189 100644 --- a/src/components/command/components/command-bar.tsx +++ b/src/components/command/components/command-bar.tsx @@ -385,8 +385,8 @@ const CommandBar = () => { {openBufferFiles.length === 0 && - recentFilesInResults.length === 0 && - otherFiles.length === 0 ? ( + recentFilesInResults.length === 0 && + otherFiles.length === 0 ? (
{query ? "No matching files found" : "No files available"} diff --git a/src/components/diff-viewer/hooks/useDiffData.ts b/src/components/diff-viewer/hooks/useDiffData.ts index 708f88141..ed75fddc3 100644 --- a/src/components/diff-viewer/hooks/useDiffData.ts +++ b/src/components/diff-viewer/hooks/useDiffData.ts @@ -32,12 +32,12 @@ export const useDiffData = (): UseDiffDataReturn => { activeBuffer?.diffData || (activeBuffer?.isDiff && activeBuffer.content ? (() => { - try { - return JSON.parse(activeBuffer.content) as GitDiff; - } catch { - return null; - } - })() + try { + return JSON.parse(activeBuffer.content) as GitDiff; + } catch { + return null; + } + })() : null); // Filter out MultiFileDiff since this hook handles single file diffs only diff --git a/src/components/editor/breadcrumb.tsx b/src/components/editor/breadcrumb.tsx index b8272bcc7..75774fb8a 100644 --- a/src/components/editor/breadcrumb.tsx +++ b/src/components/editor/breadcrumb.tsx @@ -87,11 +87,11 @@ export default function Breadcrumb() { setDropdown((prev) => prev ? { - ...prev, - items: fileEntries, - currentPath: previousPath, - navigationStack: prev.navigationStack.slice(0, -1), - } + ...prev, + items: fileEntries, + currentPath: previousPath, + navigationStack: prev.navigationStack.slice(0, -1), + } : null, ); } catch (error) { @@ -271,11 +271,11 @@ export default function Breadcrumb() { setDropdown((prev) => prev ? { - ...prev, - items: fileEntries, - currentPath: item.path, - navigationStack: [...prev.navigationStack, prev.currentPath], - } + ...prev, + items: fileEntries, + currentPath: item.path, + navigationStack: [...prev.navigationStack, prev.currentPath], + } : null, ); } catch (error) { diff --git a/src/components/editor/code-editor.tsx b/src/components/editor/code-editor.tsx index d281b6895..c4033010a 100644 --- a/src/components/editor/code-editor.tsx +++ b/src/components/editor/code-editor.tsx @@ -53,7 +53,7 @@ const CodeEditor = ({ className }: CodeEditorProps) => { // Extract values from active buffer or use defaults const value = activeBuffer?.content || ""; const filePath = activeBuffer?.path || ""; - const onChange = activeBuffer ? handleContentChange : () => { }; + const onChange = activeBuffer ? handleContentChange : () => {}; // Initialize refs in store useEffect(() => { diff --git a/src/components/layout/main-sidebar.tsx b/src/components/layout/main-sidebar.tsx index a428a79f6..183a2e69d 100644 --- a/src/components/layout/main-sidebar.tsx +++ b/src/components/layout/main-sidebar.tsx @@ -1,7 +1,6 @@ import { FilePlus, FolderOpen, FolderPlus, Server } from "lucide-react"; import type React from "react"; import { useMemo } from "react"; -import { cn } from "@/utils/cn"; import FileTree from "@/file-explorer/views/file-tree"; import { useFileSystemStore } from "@/file-system/controllers/store"; import type { FileEntry } from "@/file-system/models/app"; @@ -10,6 +9,7 @@ import { useBufferStore } from "@/stores/buffer-store"; import { useProjectStore } from "@/stores/project-store"; import { useSidebarStore } from "@/stores/sidebar-store"; import { useUIState } from "@/stores/ui-state-store"; +import { cn } from "@/utils/cn"; import GitView from "../git/git-view"; import RemoteConnectionView from "../remote/remote-connection-view"; import SearchView from "../search-view"; diff --git a/src/file-explorer/views/file-tree-custom-dnd.tsx b/src/file-explorer/views/file-tree-custom-dnd.tsx index f4d3788e6..128c9f921 100644 --- a/src/file-explorer/views/file-tree-custom-dnd.tsx +++ b/src/file-explorer/views/file-tree-custom-dnd.tsx @@ -88,7 +88,7 @@ export const useCustomDragDrop = ( dragState.draggedItem?.isDir && path.startsWith( dragState.draggedItem.path + - (dragState.draggedItem.path.includes("\\") ? "\\" : "/"), + (dragState.draggedItem.path.includes("\\") ? "\\" : "/"), ) ) { setDragState((prev) => ({ diff --git a/src/file-explorer/views/file-tree.tsx b/src/file-explorer/views/file-tree.tsx index 58af477b7..b26453d09 100644 --- a/src/file-explorer/views/file-tree.tsx +++ b/src/file-explorer/views/file-tree.tsx @@ -20,9 +20,9 @@ import { import type React from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { createPortal } from "react-dom"; -import { cn } from "@/utils/cn"; import { moveFile, readDirectory, readFile } from "@/file-system/controllers/platform"; import type { ContextMenuState, FileEntry } from "@/file-system/models/app"; +import { cn } from "@/utils/cn"; import { type GitFile, type GitStatus, getGitStatus } from "@/utils/git"; import FileIcon from "./file.icon"; import { useCustomDragDrop } from "./file-tree-custom-dnd"; @@ -568,7 +568,7 @@ const FileTree = ({ "hover:bg-hover focus:outline-none", activeBufferPath === file.path && "bg-selected", dragState.dragOverPath === file.path && - "!bg-accent !bg-opacity-20 !border-2 !border-accent !border-dashed", + "!bg-accent !bg-opacity-20 !border-2 !border-accent !border-dashed", dragState.isDragging && "cursor-move", file.ignored && "opacity-50", file.isDir && "file-tree-item-dir", @@ -689,7 +689,7 @@ const FileTree = ({ "file-tree-container flex flex-1 select-none", "flex-col gap-0 overflow-auto", dragState.dragOverPath === "__ROOT__" && - "!bg-accent !bg-opacity-10 !border-2 !border-accent !border-dashed", + "!bg-accent !bg-opacity-10 !border-2 !border-accent !border-dashed", )} ref={containerRef} style={{ @@ -954,7 +954,7 @@ const FileTree = ({ e.stopPropagation(); try { await navigator.clipboard.writeText(contextMenu.path); - } catch (_error) { } + } catch (_error) {} setContextMenu(null); }} className={cn( diff --git a/src/file-system/controllers/store.ts b/src/file-system/controllers/store.ts index e34aff58c..e80fef1b9 100644 --- a/src/file-system/controllers/store.ts +++ b/src/file-system/controllers/store.ts @@ -2,7 +2,6 @@ import { confirm } from "@tauri-apps/plugin-dialog"; import { revealItemInDir } from "@tauri-apps/plugin-opener"; import { create } from "zustand"; import { immer } from "zustand/middleware/immer"; -import { createSelectors } from "@/utils/zustand-selectors"; import type { CodeEditorRef } from "@/components/editor/code-editor"; import { useFileTreeStore } from "@/file-explorer/controllers/file-tree-store"; // Store imports - Note: Direct store communication via getState() is used here. @@ -13,6 +12,7 @@ import { useGitStore } from "@/stores/git-store"; import { useProjectStore } from "@/stores/project-store"; import { getGitStatus } from "@/utils/git"; import { isDiffFile, parseRawDiffContent } from "@/utils/git-diff-parser"; +import { createSelectors } from "@/utils/zustand-selectors"; import type { FileEntry } from "../models/app"; import type { FsActions, FsState } from "../models/interface"; import { @@ -319,11 +319,11 @@ export const useFileSystemStore = createSelectors( const itemType = isDirectory ? "folder" : "file"; const confirmMessage = isDirectory ? `Are you sure you want to delete the folder "${targetPath - .split("/") - .pop()}" and all its contents? This action cannot be undone.` + .split("/") + .pop()}" and all its contents? This action cannot be undone.` : `Are you sure you want to delete the file "${targetPath - .split("/") - .pop()}"? This action cannot be undone.`; + .split("/") + .pop()}"? This action cannot be undone.`; const confirmed = await confirm(confirmMessage, { title: `Delete ${itemType}`,