fix: bound code-block clipboard copies

This commit is contained in:
lucaronin
2026-05-23 19:59:13 +02:00
parent 49008eb79c
commit 2df076f834
7 changed files with 324 additions and 143 deletions

View File

@@ -1,6 +1,5 @@
import { ArrowSquareOut as ExternalLink, Copy } from '@phosphor-icons/react'
import { Component, useCallback, useContext, useEffect, useMemo, useRef, useState, type ReactNode } from 'react'
import { invoke } from '@tauri-apps/api/core'
import {
GridSuggestionMenuController,
BlockNoteViewRaw,
@@ -26,7 +25,7 @@ import { useEditorTheme } from '../hooks/useTheme'
import { useImageDrop } from '../hooks/useImageDrop'
import { useImageLightbox } from '../hooks/useImageLightbox'
import { createTranslator, type AppLocale } from '../lib/i18n'
import { isTauri } from '../mock-tauri'
import { writeClipboardText } from '../utils/clipboardText'
import { buildTypeEntryMap } from '../utils/typeColors'
import { searchEmojis, type EmojiEntry } from '../utils/emoji'
import { preFilterWikilinks, deduplicateByPath, MIN_QUERY_LENGTH } from '../utils/wikilinkSuggestions'
@@ -476,19 +475,6 @@ function codeBlockText(codeBlock: HTMLElement): string {
return codeElement?.textContent ?? ''
}
async function writeClipboardText(text: string): Promise<void> {
if (isTauri()) {
await invoke('copy_text_to_clipboard', { text })
return
}
if (!navigator.clipboard?.writeText) {
throw new Error('Clipboard API is unavailable')
}
await navigator.clipboard.writeText(text)
}
type CodeBlockCopyTarget = {
codeBlock: HTMLElement
left: number