mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 02:04:11 +01:00 
			
		
		
		
	Improve textarea paste (#31948)
- When pasting a URL over another URL, replace the URL instead of creating a useless `[url](url)`. This is the 1-line change [here](https://github.com/go-gitea/gitea/pull/31948/files#diff-be8e94d7e3da33b187381f53d28095107bd0cf29ae9a9e997e4f422f4a54479cR122). - Always run `initTextareaEvents`, previously it was not run when `dropzoneEl` was not present like when attachements are disabled on the server. Refactored the function to gracefully handle absent `dropzoneEl` and rename the function to a better name.
This commit is contained in:
		
							parent
							
								
									286ede47ad
								
							
						
					
					
						commit
						5550226571
					
				@ -3,7 +3,7 @@ import '@github/text-expander-element';
 | 
			
		||||
import $ from 'jquery';
 | 
			
		||||
import {attachTribute} from '../tribute.ts';
 | 
			
		||||
import {hideElem, showElem, autosize, isElemVisible} from '../../utils/dom.ts';
 | 
			
		||||
import {initEasyMDEPaste, initTextareaUpload} from './EditorUpload.ts';
 | 
			
		||||
import {initEasyMDEPaste, initTextareaEvents} from './EditorUpload.ts';
 | 
			
		||||
import {handleGlobalEnterQuickSubmit} from './QuickSubmit.ts';
 | 
			
		||||
import {renderPreviewPanelContent} from '../repo-editor.ts';
 | 
			
		||||
import {easyMDEToolbarActions} from './EasyMDEToolbarActions.ts';
 | 
			
		||||
@ -110,9 +110,7 @@ class ComboMarkdownEditor {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    initTextareaMarkdown(this.textarea);
 | 
			
		||||
    if (this.dropzone) {
 | 
			
		||||
      initTextareaUpload(this.textarea, this.dropzone);
 | 
			
		||||
    }
 | 
			
		||||
    initTextareaEvents(this.textarea, this.dropzone);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async setupDropzone() {
 | 
			
		||||
 | 
			
		||||
@ -119,7 +119,7 @@ function handleClipboardText(textarea, e, {text, isShiftDown}) {
 | 
			
		||||
  const {value, selectionStart, selectionEnd} = textarea;
 | 
			
		||||
  const selectedText = value.substring(selectionStart, selectionEnd);
 | 
			
		||||
  const trimmedText = text.trim();
 | 
			
		||||
  if (selectedText && isUrl(trimmedText)) {
 | 
			
		||||
  if (selectedText && isUrl(trimmedText) && !isUrl(selectedText)) {
 | 
			
		||||
    e.preventDefault();
 | 
			
		||||
    replaceTextareaSelection(textarea, `[${selectedText}](${trimmedText})`);
 | 
			
		||||
  }
 | 
			
		||||
@ -156,7 +156,7 @@ export function initEasyMDEPaste(easyMDE, dropzoneEl) {
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function initTextareaUpload(textarea, dropzoneEl) {
 | 
			
		||||
export function initTextareaEvents(textarea, dropzoneEl) {
 | 
			
		||||
  let isShiftDown = false;
 | 
			
		||||
  textarea.addEventListener('keydown', (e) => {
 | 
			
		||||
    if (e.shiftKey) isShiftDown = true;
 | 
			
		||||
@ -166,7 +166,7 @@ export function initTextareaUpload(textarea, dropzoneEl) {
 | 
			
		||||
  });
 | 
			
		||||
  textarea.addEventListener('paste', (e) => {
 | 
			
		||||
    const {images, text} = getPastedContent(e);
 | 
			
		||||
    if (images.length) {
 | 
			
		||||
    if (images.length && dropzoneEl) {
 | 
			
		||||
      handleUploadFiles(new TextareaEditor(textarea), dropzoneEl, images, e);
 | 
			
		||||
    } else if (text) {
 | 
			
		||||
      handleClipboardText(textarea, e, {text, isShiftDown});
 | 
			
		||||
@ -176,7 +176,7 @@ export function initTextareaUpload(textarea, dropzoneEl) {
 | 
			
		||||
    if (!e.dataTransfer.files.length) return;
 | 
			
		||||
    handleUploadFiles(new TextareaEditor(textarea), dropzoneEl, e.dataTransfer.files, e);
 | 
			
		||||
  });
 | 
			
		||||
  dropzoneEl.dropzone.on(DropzoneCustomEventRemovedFile, ({fileUuid}) => {
 | 
			
		||||
  dropzoneEl?.dropzone.on(DropzoneCustomEventRemovedFile, ({fileUuid}) => {
 | 
			
		||||
    const newText = removeAttachmentLinksFromMarkdown(textarea.value, fileUuid);
 | 
			
		||||
    if (textarea.value !== newText) textarea.value = newText;
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user