mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 19:38:23 +00:00 
			
		
		
		
	Clean legacy SimpleMDE code (#17926)
Since we are using EasyMDE now, we do not need to keep the SimpleMDE code anymore. This PR removes all legacy SimpleMDE code, and makes some related changes: * `createCommentEasyMDE` can accept native DOM element, and it doesn't need `jQuery.data` to store EasyMDE editor object (as discussed about the frontend guideline). * introduce `getAttachedEasyMDE` to get the attached EasyMDE editor object, it's easier to find all the usage of EasyMDE. * rename variable names from `$simplemde` to `easyMDE`, the `$` was incorrect because it is a EasyMDE editor, not a jQuery object. With this PR, it will be easier to do more refactoring or replacing EasyMDE with other editors.
This commit is contained in:
		| @@ -1,13 +1,21 @@ | ||||
| import attachTribute from '../tribute.js'; | ||||
| 
 | ||||
| export function createCommentSimpleMDE($editArea) { | ||||
|   if ($editArea.length === 0) { | ||||
| /** | ||||
|  * create an EasyMDE editor for comment | ||||
|  * @param textarea jQuery or HTMLElement | ||||
|  * @returns {null|EasyMDE} | ||||
|  */ | ||||
| export function createCommentEasyMDE(textarea) { | ||||
|   if (textarea instanceof jQuery) { | ||||
|     textarea = textarea[0]; | ||||
|   } | ||||
|   if (!textarea) { | ||||
|     return null; | ||||
|   } | ||||
| 
 | ||||
|   const simplemde = new SimpleMDE({ | ||||
|   const easyMDE = new window.EasyMDE({ | ||||
|     autoDownloadFontAwesome: false, | ||||
|     element: $editArea[0], | ||||
|     element: textarea, | ||||
|     forceSync: true, | ||||
|     renderingConfig: { | ||||
|       singleLineBreaks: false | ||||
| @@ -50,8 +58,9 @@ export function createCommentSimpleMDE($editArea) { | ||||
|       }, | ||||
|     ] | ||||
|   }); | ||||
|   $(simplemde.codemirror.getInputField()).addClass('js-quick-submit'); | ||||
|   simplemde.codemirror.setOption('extraKeys', { | ||||
|   const inputField = easyMDE.codemirror.getInputField(); | ||||
|   inputField.classList.add('js-quick-submit'); | ||||
|   easyMDE.codemirror.setOption('extraKeys', { | ||||
|     Enter: () => { | ||||
|       const tributeContainer = document.querySelector('.tribute-container'); | ||||
|       if (!tributeContainer || tributeContainer.style.display === 'none') { | ||||
| @@ -65,8 +74,25 @@ export function createCommentSimpleMDE($editArea) { | ||||
|       cm.execCommand('delCharBefore'); | ||||
|     } | ||||
|   }); | ||||
|   attachTribute(simplemde.codemirror.getInputField(), {mentions: true, emoji: true}); | ||||
|   $editArea.data('simplemde', simplemde); | ||||
|   $(simplemde.codemirror.getInputField()).data('simplemde', simplemde); | ||||
|   return simplemde; | ||||
|   attachTribute(inputField, {mentions: true, emoji: true}); | ||||
| 
 | ||||
|   // TODO: that's the only way we can do now to attach the EasyMDE object to a HTMLElement
 | ||||
|   inputField._data_easyMDE = easyMDE; | ||||
|   textarea._data_easyMDE = easyMDE; | ||||
|   return easyMDE; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * get the attached EasyMDE editor created by createCommentEasyMDE | ||||
|  * @param el jQuery or HTMLElement | ||||
|  * @returns {null|EasyMDE} | ||||
|  */ | ||||
| export function getAttachedEasyMDE(el) { | ||||
|   if (el instanceof jQuery) { | ||||
|     el = el[0]; | ||||
|   } | ||||
|   if (!el) { | ||||
|     return null; | ||||
|   } | ||||
|   return el._data_easyMDE; | ||||
| } | ||||
| @@ -76,14 +76,14 @@ export function initCompImagePaste($target) { | ||||
|   }); | ||||
| } | ||||
|  | ||||
| export function initSimpleMDEImagePaste(simplemde, dropzone, files) { | ||||
| export function initEasyMDEImagePaste(easyMDE, dropzone, files) { | ||||
|   const uploadUrl = dropzone.getAttribute('data-upload-url'); | ||||
|   simplemde.codemirror.on('paste', async (_, e) => { | ||||
|   easyMDE.codemirror.on('paste', async (_, e) => { | ||||
|     for (const img of clipboardPastedImages(e)) { | ||||
|       const name = img.name.substr(0, img.name.lastIndexOf('.')); | ||||
|       const data = await uploadFile(img, uploadUrl); | ||||
|       const pos = simplemde.codemirror.getCursor(); | ||||
|       simplemde.codemirror.replaceRange(``, pos); | ||||
|       const pos = easyMDE.codemirror.getCursor(); | ||||
|       easyMDE.codemirror.replaceRange(``, pos); | ||||
|       const input = $(`<input id="${data.uuid}" name="files" type="hidden">`).val(data.uuid); | ||||
|       files.append(input); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user