This commit is contained in:
Dennis Eichhorn 2018-08-04 22:12:45 +02:00
parent 7a81b67312
commit d02166ad3a

View File

@ -31,6 +31,9 @@
{ {
let textarea = this.editor.getElementsByTagName('textarea')[0]; let textarea = this.editor.getElementsByTagName('textarea')[0];
const startPosition = textarea.selectionStart,
endPosition = textarea.selectionEnd;
switch (e.dataset['editorButton']) { switch (e.dataset['editorButton']) {
case 'undo': case 'undo':
@ -39,68 +42,71 @@
break; break;
case 'bold': case 'bold':
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ '**' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + '**' + '**' + textarea.value.slice(startPosition, endPosition) + '**'
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'italic': case 'italic':
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ '*' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + '*' + '*' + textarea.value.slice(startPosition, endPosition) + '*'
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'underline': case 'underline':
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ '__' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + '__' + '__' + textarea.value.slice(startPosition, endPosition) + '__'
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'strikethrough': case 'strikethrough':
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ '~~' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + '~~' + '~~' + textarea.value.slice(startPosition, endPosition) + '~~'
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'ulist': case 'ulist':
textarea.value = textarea.value.slice(0, textarea.selectionStart) + "\n" textarea.value = textarea.value.slice(0, startPosition) + "\n"
+ ' * ' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + ' * ' + textarea.value.slice(startPosition, endPosition)
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'olist': case 'olist':
textarea.value = textarea.value.slice(0, textarea.selectionStart) + "\n" textarea.value = textarea.value.slice(0, startPosition) + "\n"
+ ' 1. ' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + ' 1. ' + textarea.value.slice(startPosition, endPosition)
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'indent': case 'indent':
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ ' ' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + ' ' + textarea.value.slice(startPosition, endPosition)
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'table': case 'table':
textarea.value = textarea.value.slice(0, textarea.selectionStart) + "\n" textarea.value = textarea.value.slice(0, startPosition) + "\n"
+ '| Tables | Are | Cool |' + "\n" + '| Tables | Are | Cool |' + "\n"
+ '| ------------- |:-----------------:| -----:|' + "\n" + '| ------------- |:-----------------:| -----:|' + "\n"
+ '| col 3 is | right - aligned | $1600 |' + "\n" + '| col 3 is | right - aligned | $1600 |' + "\n"
+ '| col 2 is | centered | $12 |' + "\n" + '| col 2 is | centered | $12 |' + "\n"
+ '| zebra stripes | are neat | $1 |' + "\n" + '| zebra stripes | are neat | $1 |' + "\n"
+ textarea.value.slice(textarea.selectionStart, textarea.value.length); + textarea.value.slice(startPosition, textarea.value.length);
break; break;
case 'link': case 'link':
let link = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd); let link = textarea.value.slice(startPosition, endPosition);
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ ((link.startsWith('http') || link.startsWith('www')) ? '[' + link + ']' : '[' + link + '](https://www.website.com "' + link + '")') + ((link.startsWith('http') || link.startsWith('www')) ? '[' + link + ']' : '[' + link + '](https://www.website.com "' + link + '")')
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'code': case 'code':
textarea.value = textarea.value.slice(0, textarea.selectionStart) textarea.value = textarea.value.slice(0, startPosition)
+ '`' + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) + '`' + '`' + textarea.value.slice(startPosition, endPosition) + '`'
+ textarea.value.slice(textarea.selectionEnd, textarea.value.length); + textarea.value.slice(endPosition, textarea.value.length);
break; break;
case 'quote': case 'quote':
textarea.value = textarea.value.slice(0, textarea.selectionStart) + "\n" textarea.value = textarea.value.slice(0, startPosition) + "\n"
+ '> ' + textarea.value.slice(textarea.selectionStart, textarea.value.length); + '> ' + textarea.value.slice(startPosition, textarea.value.length);
break; break;
default: default:
break; break;
} }
textarea.focus();
textarea.setSelectionRange(endPosition, endPosition);
}; };
jsOMS.Modules.Models.Editor.Editor.prototype.getSelectedText = function() jsOMS.Modules.Models.Editor.Editor.prototype.getSelectedText = function()