|
@@ -1,6 +1,17 @@
|
|
|
import { KEYS } from "../keys";
|
|
|
import { selectNode } from "../utils";
|
|
|
|
|
|
+function trimText(text: string) {
|
|
|
+ // whitespace only → trim all because we'd end up inserting invisible element
|
|
|
+ if (!text.trim()) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ // replace leading/trailing newlines (only) otherwise it messes up bounding
|
|
|
+ // box calculation (there's also a bug in FF which inserts trailing newline
|
|
|
+ // for multiline texts)
|
|
|
+ return text.replace(/^\n+|\n+$/g, "");
|
|
|
+}
|
|
|
+
|
|
|
type TextWysiwygParams = {
|
|
|
initText: string;
|
|
|
x: number;
|
|
@@ -101,7 +112,7 @@ export function textWysiwyg({
|
|
|
|
|
|
function handleSubmit() {
|
|
|
if (editable.innerText) {
|
|
|
- onSubmit(editable.innerText);
|
|
|
+ onSubmit(trimText(editable.innerText));
|
|
|
} else {
|
|
|
onCancel();
|
|
|
}
|