Fixed code snippets being added as single line
TinyMCE was adding attributes to <br> elements within code blocks which would then not be converted to newlines by our code regex match. This changes the conversion to use dom querying instead. Fixes #3507
This commit is contained in:
		
							parent
							
								
									0c6f598d91
								
							
						
					
					
						commit
						9dd69b04b8
					
				| 
						 | 
				
			
			@ -86,7 +86,13 @@ function defineCodeBlockCustomElement(editor) {
 | 
			
		|||
        getContent() {
 | 
			
		||||
            const code = this.querySelector('code') || this.querySelector('pre');
 | 
			
		||||
            const tempEl = document.createElement('pre');
 | 
			
		||||
            tempEl.innerHTML = code.innerHTML.replace().replace(/<br\s*[\/]?>/gi ,'\n').replace(/\ufeff/g, '');
 | 
			
		||||
            tempEl.innerHTML = code.innerHTML.replace(/\ufeff/g, '');
 | 
			
		||||
 | 
			
		||||
            const brs = tempEl.querySelectorAll('br');
 | 
			
		||||
            for (const br of brs) {
 | 
			
		||||
                br.replaceWith('\n');
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return tempEl.textContent;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +110,7 @@ function defineCodeBlockCustomElement(editor) {
 | 
			
		|||
 | 
			
		||||
            const container = this.shadowRoot.querySelector('.CodeMirrorContainer');
 | 
			
		||||
            const renderCodeMirror = (Code) => {
 | 
			
		||||
                console.log({content});
 | 
			
		||||
                this.cm = Code.wysiwygView(container, content, this.getLanguage());
 | 
			
		||||
                Code.updateLayout(this.cm);
 | 
			
		||||
                setTimeout(() => {
 | 
			
		||||
| 
						 | 
				
			
			@ -159,6 +166,7 @@ function register(editor, url) {
 | 
			
		|||
            showPopup(editor, textContent, '', (newCode, newLang) => {
 | 
			
		||||
                const pre = doc.createElement('pre');
 | 
			
		||||
                const code = doc.createElement('code');
 | 
			
		||||
                console.log(newCode);
 | 
			
		||||
                code.classList.add(`language-${newLang}`);
 | 
			
		||||
                code.innerText = newCode;
 | 
			
		||||
                pre.append(code);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue