|
|
|
@ -1514,20 +1514,13 @@ class App extends React.Component<ExcalidrawProps, AppState> {
|
|
|
|
|
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<ExcalidrawProps, AppState> {
|
|
|
|
|
updateElement(text);
|
|
|
|
|
}),
|
|
|
|
|
onSubmit: withBatchedUpdates((text) => {
|
|
|
|
|
updateElement(text);
|
|
|
|
|
this.setState((prevState) => ({
|
|
|
|
|
selectedElementIds: {
|
|
|
|
|
...prevState.selectedElementIds,
|
|
|
|
|
[element.id]: true,
|
|
|
|
|
},
|
|
|
|
|
}));
|
|
|
|
|
if (this.state.elementLocked) {
|
|
|
|
|
setCursorForShape(this.state.elementType);
|
|
|
|
|
const isDeleted = !text.trim();
|
|
|
|
|
updateElement(text, isDeleted);
|
|
|
|
|
if (!isDeleted) {
|
|
|
|
|
this.setState((prevState) => ({
|
|
|
|
|
selectedElementIds: {
|
|
|
|
|
...prevState.selectedElementIds,
|
|
|
|
|
[element.id]: true,
|
|
|
|
|
},
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
history.resumeRecording();
|
|
|
|
|
resetSelection();
|
|
|
|
|
}),
|
|
|
|
|
onCancel: withBatchedUpdates(() => {
|
|
|
|
|
updateElement("");
|
|
|
|
|
if (isExistingElement) {
|
|
|
|
|
if (!isDeleted || isExistingElement) {
|
|
|
|
|
history.resumeRecording();
|
|
|
|
|
}
|
|
|
|
|
resetSelection();
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
draggingElement: null,
|
|
|
|
|
editingElement: null,
|
|
|
|
|
});
|
|
|
|
|
if (this.state.elementLocked) {
|
|
|
|
|
setCursorForShape(this.state.elementType);
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
});
|
|
|
|
|
// deselect all other elements when inserting text
|
|
|
|
|