mirror of
https://github.com/penpot/penpot.git
synced 2026-03-27 22:00:35 +01:00
🐛 Fix crash when pasting image into text editor
When pasting an image (with no text content) into the text editor, Draft.js calls handlePastedText with null/empty text. The previous fix guarded splitTextIntoTextBlocks against null, but insertText still attempted to build a fragment from an empty block array, causing Modifier.replaceWithFragment to crash with 'Cannot read properties of undefined (reading getLength)'. Fix insertText to return the original state unchanged when there are no text blocks to insert. Also guard handle-pasted-text in the ClojureScript editor to skip the insert-text call entirely when text is nil or empty. Signed-off-by: Andrey Antukh <niwi@niwi.nz>
This commit is contained in:
@@ -375,6 +375,10 @@ function splitTextIntoTextBlocks(text) {
|
||||
export function insertText(state, text, attrs, inlineStyles) {
|
||||
const blocks = splitTextIntoTextBlocks(text);
|
||||
|
||||
if (blocks.length === 0) {
|
||||
return state;
|
||||
}
|
||||
|
||||
const character = CharacterMetadata.create({style: OrderedSet(inlineStyles)});
|
||||
|
||||
let blockArray = DraftPasteProcessor.processText(
|
||||
|
||||
@@ -221,12 +221,13 @@
|
||||
|
||||
handle-pasted-text
|
||||
(fn [text _ _]
|
||||
(let [current-block-styles (ted/get-editor-current-block-data state)
|
||||
inline-styles (ted/get-editor-current-inline-styles state)
|
||||
style (merge current-block-styles inline-styles)
|
||||
state (-> (ted/insert-text state text style)
|
||||
(handle-change))]
|
||||
(st/emit! (dwt/update-editor-state shape state)))
|
||||
(when (seq text)
|
||||
(let [current-block-styles (ted/get-editor-current-block-data state)
|
||||
inline-styles (ted/get-editor-current-inline-styles state)
|
||||
style (merge current-block-styles inline-styles)
|
||||
state (-> (ted/insert-text state text style)
|
||||
(handle-change))]
|
||||
(st/emit! (dwt/update-editor-state shape state))))
|
||||
"handled")]
|
||||
|
||||
(mf/use-layout-effect on-mount)
|
||||
|
||||
Reference in New Issue
Block a user