mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-25 09:38:06 +02:00
[Editor] Correctly handle lines when pasting some text in a freetext
This commit is contained in:
parent
3d7ea6076d
commit
2dbd7acc41
4 changed files with 319 additions and 44 deletions
|
@ -26,6 +26,7 @@ import {
|
|||
kbSelectAll,
|
||||
kbUndo,
|
||||
loadAndWait,
|
||||
pasteFromClipboard,
|
||||
scrollIntoView,
|
||||
serializeBitmapDimensions,
|
||||
waitForAnnotationEditorLayer,
|
||||
|
@ -72,43 +73,12 @@ const copyImage = async (page, imagePath, number) => {
|
|||
const data = fs
|
||||
.readFileSync(path.join(__dirname, imagePath))
|
||||
.toString("base64");
|
||||
await page.evaluate(async imageData => {
|
||||
const resp = await fetch(`data:image/png;base64,${imageData}`);
|
||||
const blob = await resp.blob();
|
||||
|
||||
await navigator.clipboard.write([
|
||||
new ClipboardItem({
|
||||
[blob.type]: blob,
|
||||
}),
|
||||
]);
|
||||
}, data);
|
||||
|
||||
let hasPasteEvent = false;
|
||||
while (!hasPasteEvent) {
|
||||
// We retry to paste if nothing has been pasted before 500ms.
|
||||
const handle = await page.evaluateHandle(() => {
|
||||
let callback = null;
|
||||
return [
|
||||
Promise.race([
|
||||
new Promise(resolve => {
|
||||
callback = e => resolve(e.clipboardData.items.length !== 0);
|
||||
document.addEventListener("paste", callback, {
|
||||
once: true,
|
||||
});
|
||||
}),
|
||||
new Promise(resolve => {
|
||||
setTimeout(() => {
|
||||
document.removeEventListener("paste", callback);
|
||||
resolve(false);
|
||||
}, 500);
|
||||
}),
|
||||
]),
|
||||
];
|
||||
});
|
||||
await kbPaste(page);
|
||||
hasPasteEvent = await awaitPromise(handle);
|
||||
}
|
||||
|
||||
await pasteFromClipboard(
|
||||
page,
|
||||
{ "image/png": `data:image/png;base64,${data}` },
|
||||
"",
|
||||
500
|
||||
);
|
||||
await waitForImage(page, getEditorSelector(number));
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue