Use wantsExtendedPaste() for paste event

This commit is contained in:
Abdo 2025-06-11 19:02:42 +03:00
parent 2239bf9b02
commit 4567c721ad
2 changed files with 12 additions and 4 deletions

View file

@ -38,11 +38,13 @@ function imageDataToUint8Array(data: ImageData): Uint8Array {
return typeof data === "string" ? new TextEncoder().encode(data) : data; return typeof data === "string" ? new TextEncoder().encode(data) : data;
} }
async function wantsExtendedPaste(event: MouseEvent | KeyboardEvent): Promise<boolean> { let isShiftPressed = false;
async function wantsExtendedPaste(event: MouseEvent | KeyboardEvent | null = null): Promise<boolean> {
let stripHtml = (await getConfigBool({ let stripHtml = (await getConfigBool({
key: ConfigKey_Bool.PASTE_STRIPS_FORMATTING, key: ConfigKey_Bool.PASTE_STRIPS_FORMATTING,
})).val; })).val;
if (shiftPressed(event)) { if ((event && shiftPressed(event)) || isShiftPressed) {
stripHtml = !stripHtml; stripHtml = !stripHtml;
} }
return !stripHtml; return !stripHtml;
@ -322,7 +324,7 @@ async function runPreFilter(html: string, internal = false): Promise<string> {
export async function handlePaste(event: ClipboardEvent) { export async function handlePaste(event: ClipboardEvent) {
// bridgeCommand("paste"); // bridgeCommand("paste");
event.preventDefault(); event.preventDefault();
let html = await processDataTransferEvent(event, Promise.resolve(true)); let html = await processDataTransferEvent(event, wantsExtendedPaste());
if (html) { if (html) {
html = await runPreFilter(html); html = await runPreFilter(html);
pasteHTML(html, false, false); pasteHTML(html, false, false);
@ -343,6 +345,10 @@ export async function handleDragover(event: DragEvent) {
event.preventDefault(); event.preventDefault();
} }
export async function handleKeydown(event: KeyboardEvent) {
isShiftPressed = shiftPressed(event);
}
export function handleCutOrCopy() { export function handleCutOrCopy() {
bridgeCommand("cutOrCopy"); bridgeCommand("cutOrCopy");
} }

View file

@ -3,7 +3,7 @@
import { on } from "@tslib/events"; import { on } from "@tslib/events";
import { promiseWithResolver } from "@tslib/promise"; import { promiseWithResolver } from "@tslib/promise";
import { handleCutOrCopy, handleDragover, handleDrop, handlePaste } from "./data-transfer"; import { handleCutOrCopy, handleDragover, handleDrop, handleKeydown, handlePaste } from "./data-transfer";
function bridgeCopyPasteCommands(input: HTMLElement): { destroy(): void } { function bridgeCopyPasteCommands(input: HTMLElement): { destroy(): void } {
const removePaste = on(input, "paste", handlePaste); const removePaste = on(input, "paste", handlePaste);
@ -11,6 +11,7 @@ function bridgeCopyPasteCommands(input: HTMLElement): { destroy(): void } {
const removeCut = on(input, "cut", handleCutOrCopy); const removeCut = on(input, "cut", handleCutOrCopy);
const removeDragover = on(input, "dragover", handleDragover); const removeDragover = on(input, "dragover", handleDragover);
const removeDrop = on(input, "drop", handleDrop); const removeDrop = on(input, "drop", handleDrop);
const removeKeydown = on(input, "keydown", handleKeydown);
return { return {
destroy() { destroy() {
removePaste(); removePaste();
@ -18,6 +19,7 @@ function bridgeCopyPasteCommands(input: HTMLElement): { destroy(): void } {
removeCut(); removeCut();
removeDragover(); removeDragover();
removeDrop(); removeDrop();
removeKeydown();
}, },
}; };
} }