Bug reference: #563 Unexpected empty lines when copying-pasting

pull/1524/head
amirturk 2 years ago
parent d0ddac296f
commit f1d4acf494

@ -24,7 +24,7 @@ interface Props {
} }
const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<EditorRefActions>) { const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<EditorRefActions>) {
const { className, initialContent, placeholder, fullscreen, onPaste, onContentChange: handleContentChangeCallback } = props; const { className, initialContent, placeholder, fullscreen, onContentChange: handleContentChangeCallback } = props;
const editorRef = useRef<HTMLTextAreaElement>(null); const editorRef = useRef<HTMLTextAreaElement>(null);
useEffect(() => { useEffect(() => {
@ -119,6 +119,19 @@ const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<
[] []
); );
const handlePaste = (event: React.ClipboardEvent) => {
event.preventDefault();
const pastedText = event.clipboardData.getData("text");
const currentCursorPosition = editorRef.current?.selectionStart ?? 0;
if (editorRef.current) {
editorRef.current.value = editorRef.current.value.slice(0, currentCursorPosition) + pastedText + editorRef.current.value.slice(editorRef.current.selectionEnd);
editorRef.current.selectionStart = editorRef.current.selectionEnd = currentCursorPosition + pastedText.length;
handleContentChangeCallback(editorRef.current.value);
updateEditorHeight();
}
};
const handleEditorInput = useCallback(() => { const handleEditorInput = useCallback(() => {
handleContentChangeCallback(editorRef.current?.value ?? ""); handleContentChangeCallback(editorRef.current?.value ?? "");
updateEditorHeight(); updateEditorHeight();
@ -131,7 +144,7 @@ const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<
rows={1} rows={1}
placeholder={placeholder} placeholder={placeholder}
ref={editorRef} ref={editorRef}
onPaste={onPaste} onPaste={handlePaste}
onInput={handleEditorInput} onInput={handleEditorInput}
></textarea> ></textarea>
</div> </div>

Loading…
Cancel
Save