| 
					
				 | 
			
			
				@@ -1,62 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import "./TextInput.scss"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import React, { Component } from "react"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { selectNode, removeSelection } from "../utils"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-type Props = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  value: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  onChange: (value: string) => void; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  label: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export class ProjectName extends Component<Props> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  private handleFocus = (event: React.FocusEvent<HTMLElement>) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    selectNode(event.currentTarget); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  private handleBlur = (event: React.FocusEvent<HTMLElement>) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const value = event.currentTarget.innerText.trim(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (value !== this.props.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.props.onChange(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    removeSelection(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  private handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (event.key === "Enter") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      event.preventDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (event.nativeEvent.isComposing || event.keyCode === 229) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      event.currentTarget.blur(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  private makeEditable = (editable: HTMLSpanElement | null) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!editable) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      editable.contentEditable = "plaintext-only"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      editable.contentEditable = "true"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  public render() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        suppressContentEditableWarning 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ref={this.makeEditable} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        data-type="wysiwyg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        className="TextInput" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        role="textbox" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        aria-label={this.props.label} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        onBlur={this.handleBlur} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        onKeyDown={this.handleKeyDown} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        onFocus={this.handleFocus} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {this.props.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 |