diff --git a/src/components/App.tsx b/src/components/App.tsx index 7f127c37..870ab0d5 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -1514,20 +1514,13 @@ class App extends React.Component { isExistingElement?: boolean; }, ) { - const resetSelection = () => { - this.setState({ - draggingElement: null, - editingElement: null, - }); - }; - - const updateElement = (text: string) => { + const updateElement = (text: string, isDeleted = false) => { globalSceneState.replaceAllElements([ ...globalSceneState.getElementsIncludingDeleted().map((_element) => { if (_element.id === element.id && isTextElement(_element)) { return updateTextElement(_element, { text, - isDeleted: !text.trim(), + isDeleted, }); } return _element; @@ -1551,25 +1544,27 @@ class App extends React.Component { updateElement(text); }), onSubmit: withBatchedUpdates((text) => { - updateElement(text); - this.setState((prevState) => ({ - selectedElementIds: { - ...prevState.selectedElementIds, - [element.id]: true, - }, - })); + const isDeleted = !text.trim(); + updateElement(text, isDeleted); + if (!isDeleted) { + this.setState((prevState) => ({ + selectedElementIds: { + ...prevState.selectedElementIds, + [element.id]: true, + }, + })); + } + if (!isDeleted || isExistingElement) { + history.resumeRecording(); + } + + this.setState({ + draggingElement: null, + editingElement: null, + }); if (this.state.elementLocked) { setCursorForShape(this.state.elementType); } - history.resumeRecording(); - resetSelection(); - }), - onCancel: withBatchedUpdates(() => { - updateElement(""); - if (isExistingElement) { - history.resumeRecording(); - } - resetSelection(); }), }); // deselect all other elements when inserting text diff --git a/src/element/textWysiwyg.tsx b/src/element/textWysiwyg.tsx index d3b47d86..6b77dbbf 100644 --- a/src/element/textWysiwyg.tsx +++ b/src/element/textWysiwyg.tsx @@ -32,14 +32,12 @@ export const textWysiwyg = ({ zoom, onChange, onSubmit, - onCancel, getViewportCoords, }: { id: ExcalidrawElement["id"]; zoom: number; onChange?: (text: string) => void; onSubmit: (text: string) => void; - onCancel: () => void; getViewportCoords: (x: number, y: number) => [number, number]; }) => { function updateWysiwygStyle() { @@ -129,11 +127,7 @@ export const textWysiwyg = ({ }; const handleSubmit = () => { - if (editable.value) { - onSubmit(normalizeText(editable.value)); - } else { - onCancel(); - } + onSubmit(normalizeText(editable.value)); cleanup(); };