Преглед изворни кода

Trim trailing newlines (#999)

* trim newlines for text elements

* fix comment
David Luzar пре 5 година
родитељ
комит
23b785de68
1 измењених фајлова са 12 додато и 1 уклоњено
  1. 12 1
      src/element/textWysiwyg.tsx

+ 12 - 1
src/element/textWysiwyg.tsx

@@ -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();
     }