diff --git a/src/components/MarkdownCodeEditor.tsx b/src/components/MarkdownCodeEditor.tsx index d344e77..8fd59fa 100644 --- a/src/components/MarkdownCodeEditor.tsx +++ b/src/components/MarkdownCodeEditor.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useCallback, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { EditorView, basicSetup } from 'codemirror'; import { markdown } from '@codemirror/lang-markdown'; import { languages } from '@codemirror/language-data'; @@ -24,12 +24,12 @@ interface Props { } export function MarkdownCodeEditor({ - content, filePath, vaultPath, viewMode, + content, filePath: _filePath, vaultPath, viewMode, onContentChange, onSave, onCursorChange, onNavigateWikilink, }: Props) { const containerRef = useRef(null); const viewRef = useRef(null); - const saveTimeoutRef = useRef>(); + const saveTimeoutRef = useRef>(null); const mdFileNamesRef = useRef([]); const tagsRef = useRef([]); const [previewContent, setPreviewContent] = useState(content); @@ -112,19 +112,6 @@ export function MarkdownCodeEditor({ } }, [content]); - const gotoLine = useCallback((line: number) => { - const view = viewRef.current; - if (!view) return; - const doc = view.state.doc; - const lineNum = Math.min(line, doc.lines); - const lineInfo = doc.line(lineNum); - view.dispatch({ - selection: { anchor: lineInfo.from }, - effects: EditorView.scrollIntoView(lineInfo.from, { y: 'center' }), - }); - view.focus(); - }, []); - return (
& { entry: MdFileEntry; depth: number }) { const [expanded, setExpanded] = useState(depth < 1); const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null); diff --git a/src/components/MarkdownSearchPanel.tsx b/src/components/MarkdownSearchPanel.tsx index f8971dc..8cd05b5 100644 --- a/src/components/MarkdownSearchPanel.tsx +++ b/src/components/MarkdownSearchPanel.tsx @@ -1,6 +1,6 @@ import { useState, useCallback, useRef, useEffect } from 'react'; import { invoke } from '@tauri-apps/api/core'; -import { Search, Replace, CaseSensitive, X } from 'lucide-react'; +import { Search, Replace, CaseSensitive } from 'lucide-react'; import type { MdSearchMatch } from './markdownTypes'; interface Props { @@ -17,7 +17,7 @@ export function MarkdownSearchPanel({ vaultPath, onNavigate }: Props) { const [searching, setSearching] = useState(false); const [selectedIndex, setSelectedIndex] = useState(-1); const inputRef = useRef(null); - const debounceRef = useRef>(); + const debounceRef = useRef>(null); useEffect(() => { inputRef.current?.focus(); diff --git a/src/components/SourcePanel.tsx b/src/components/SourcePanel.tsx index 98f17f4..d3e1fc8 100644 --- a/src/components/SourcePanel.tsx +++ b/src/components/SourcePanel.tsx @@ -391,12 +391,12 @@ export function SourcePanel({ onAddSnippet, onDeleteSnippet, onCopySnippet, - clipEntries = [], - selectedClipId, - onSelectClip, - onPasteClip, - onDeleteClip, - onTogglePinClip, + clipEntries: _clipEntries = [], + selectedClipId: _selectedClipId, + onSelectClip: _onSelectClip, + onPasteClip: _onPasteClip, + onDeleteClip: _onDeleteClip, + onTogglePinClip: _onTogglePinClip, }: SourcePanelProps) { const { isPro, showUpgradeModal } = usePro(); const [paletteOpen, setPaletteOpen] = useState(false); diff --git a/src/components/SuperClipboard.tsx b/src/components/SuperClipboard.tsx index 474aca2..a22fd2a 100644 --- a/src/components/SuperClipboard.tsx +++ b/src/components/SuperClipboard.tsx @@ -1,6 +1,5 @@ import { useState, useCallback, useRef, useMemo, useEffect } from 'react'; import type { ClipEntry } from './ClipboardHistoryList'; -import { getClipClickAction } from './ClipboardSettingsPanel'; interface SuperClipboardProps { entries: ClipEntry[]; diff --git a/src/components/SuperMarkdown.tsx b/src/components/SuperMarkdown.tsx index fc05def..b972a8b 100644 --- a/src/components/SuperMarkdown.tsx +++ b/src/components/SuperMarkdown.tsx @@ -14,7 +14,7 @@ interface Props { searchQuery?: string; } -export function SuperMarkdown({ searchQuery }: Props) { +export function SuperMarkdown({ searchQuery: _searchQuery }: Props) { // Vault state const [vaultPath, setVaultPath] = useState(() => localStorage.getItem(VAULT_PATH_KEY)); const [fileTree, setFileTree] = useState([]); diff --git a/src/components/SuperTranslate.tsx b/src/components/SuperTranslate.tsx index 4dc57a8..a438b01 100644 --- a/src/components/SuperTranslate.tsx +++ b/src/components/SuperTranslate.tsx @@ -10,7 +10,7 @@ export function SuperTranslate() { const [targetLang, setTargetLang] = useState('fr'); const [detectedLang, setDetectedLang] = useState(''); const [isTranslating, setIsTranslating] = useState(false); - const debounceRef = useRef>(); + const debounceRef = useRef>(null); const abortRef = useRef(0); const doTranslate = useCallback(async (text: string, sl: string, tl: string) => { diff --git a/src/components/markdown-editor/live-preview.ts b/src/components/markdown-editor/live-preview.ts index a081a0a..76ce6a6 100644 --- a/src/components/markdown-editor/live-preview.ts +++ b/src/components/markdown-editor/live-preview.ts @@ -5,7 +5,9 @@ import { RangeSet } from '@codemirror/state'; import type { Range } from '@codemirror/state'; class ImageWidget extends WidgetType { - constructor(readonly src: string, readonly alt: string) { super(); } + src: string; + alt: string; + constructor(src: string, alt: string) { super(); this.src = src; this.alt = alt; } toDOM(): HTMLElement { const wrapper = document.createElement('span'); wrapper.className = 'cm-lp-image-wrapper'; diff --git a/src/hooks/useFeedStore.ts b/src/hooks/useFeedStore.ts index 6b240a4..9e3908d 100644 --- a/src/hooks/useFeedStore.ts +++ b/src/hooks/useFeedStore.ts @@ -128,7 +128,7 @@ export interface FeedStore { addFeed: (url: string, name: string, source: FeedSource) => Promise; removeFeed: (feedId: string) => void; renameFeed: (feedId: string, newName: string) => void; - syncFeed: (feedId: string) => Promise; + syncFeed: (feedId: string) => Promise<{ feed: Feed; newItems: FeedItem[] } | null>; syncAll: () => Promise; markAsRead: (itemId: string) => void; markAllAsRead: (feedId?: string) => void;