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