JSFiddle - React, Tailwind, and code Playground

by Mathias Bynens

HTML

<textarea>This is **some** text.

    This is some code.

> This is a blockquote.</textarea>

CSS

textarea { width: 400px; height: 200px; }

JavaScript

function wrapText(strPrepend, blockPrepend) {
  // moeten params worden, strPrepend, strAppend, blockPrepend, blockRepeat
  var strAppend = strPrepend,
      start = $textarea[0].selectionStart,
      end = $textarea[0].selectionEnd,
      selectedText = $textarea.val().substring(start, end);
  if (strPrepend === selectedText.substr(0, strPrepend.length) && strAppend === selectedText.substr(-strAppend.length)) { // Unwrap
   selectedText = selectedText.substr(strPrepend.length);
   selectedText = selectedText.substring(0, selectedText.length - strAppend.length);
   $textarea.val($textarea.val().substring(0, start) + selectedText + $textarea.val().substring(end, $textarea.val().length));
   $textarea[0].selectionStart = start;
   $textarea[0].selectionEnd = end - strPrepend.length - strAppend.length;
  } else { // Wrap
   if (blockPrepend && /\n/.test(selectedText)) {
    if (/^[ ]{0,3}\S/m.test(selectedText)) {
     // Er moeten vier spaties toegevoegd worden aan het begin van elke regel
     selectedText = selectedText.replace(/^/gm, blockPrepend).replace(/(\s*)$/, '');
    } else {
     // Er moeten vier spaties verwijderd worden van het begin van elke regel
     selectedText = selectedText.replace(new RegExp('^[ ]{' + blockPrepend.length + '}', 'gm'), '');
    };
    $textarea.val($textarea.val().substring(0, start) + selectedText + $textarea.val().substring(end, $textarea.val().length));
    $textarea[0].selectionStart = start;
    $textarea[0].selectionEnd = start + selectedText.length;
   } else {
    $textarea.val($textarea.val().substring(0, start) + strPrepend + selectedText + strAppend + $textarea.val().substring(end, $textarea.val().length));
    $textarea[0].selectionStart = start;
    $textarea[0].selectionEnd = end + strPrepend.length + strAppend.length;
   };
  };
 };










/*
 * jQuery Hotkeys Plugin
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * Based upon the plugin by Tzury Bar Yochay:
 *...