🐛 Fix paste crash

This commit is contained in:
alonso.torres
2025-11-21 09:51:54 +01:00
parent 537dd171c0
commit fde73f30b9

View File

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