Merge pull request #7795 from penpot/alotor-fix-paste-crash

🐛 Fix paste crash
This commit is contained in:
Elena Torró 2025-11-21 11:00:00 +01:00 committed by GitHub
commit 956ad88e51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 9 deletions

View File

@ -15,5 +15,6 @@
*
* @param {ClipboardEvent} event
* @param {TextEditor} editor
* @param {SelectionController} selectionController
*/
export function cut(event, editor) {}
export function cut(event, editor, selectionController) {}

View File

@ -17,7 +17,7 @@ import {
* @param {DataTransfer} clipboardData
* @returns {DocumentFragment}
*/
function getFormattedFragmentFromClipboardData(clipboardData) {
function getFormattedFragmentFromClipboardData(selectionController, clipboardData) {
return mapContentFragmentFromHTML(
clipboardData.getData("text/html"),
selectionController.currentStyle,
@ -30,7 +30,7 @@ function getFormattedFragmentFromClipboardData(clipboardData) {
* @param {DataTransfer} clipboardData
* @returns {DocumentFragment}
*/
function getPlainFragmentFromClipboardData(clipboardData) {
function getPlainFragmentFromClipboardData(selectionController, clipboardData) {
return mapContentFragmentFromString(
clipboardData.getData("text/plain"),
selectionController.currentStyle,
@ -44,11 +44,11 @@ function getPlainFragmentFromClipboardData(clipboardData) {
* @param {DataTransfer} clipboardData
* @returns {DocumentFragment|null}
*/
function getFragmentFromClipboardData(clipboardData) {
function getFragmentFromClipboardData(selectionController, clipboardData) {
if (clipboardData.types.includes("text/html")) {
return getFormattedFragmentFromClipboardData(clipboardData)
return getFormattedFragmentFromClipboardData(selectionController, clipboardData)
} else if (clipboardData.types.includes("text/plain")) {
return getPlainFragmentFromClipboardData(clipboardData)
return getPlainFragmentFromClipboardData(selectionController, clipboardData)
}
return null
}
@ -71,9 +71,9 @@ export function paste(event, editor, selectionController) {
let fragment = null;
if (editor?.options?.allowHTMLPaste) {
fragment = getFragmentFromClipboardData(event.clipboardData);
fragment = getFragmentFromClipboardData(selectionController, event.clipboardData);
} else {
fragment = getPlainFragmentFromClipboardData(event.clipboardData);
fragment = getPlainFragmentFromClipboardData(selectionController, event.clipboardData);
}
if (!fragment) {
@ -85,4 +85,4 @@ export function paste(event, editor, selectionController) {
} else {
selectionController.replaceWithPaste(fragment);
}
}
}