Kebab-ToCamel

by Sam Fereday

HTML

<div class="container">

  <div class="fifty">
    <p>
      In:
    </p>
    <div contenteditable="true" id="in">...</div>
  </div>
  <div class="fifty">
    <p>
      Out:
    </p>
    <div id="out">...</div>
  </div>

</div>

SCSS

html,
body {
  padding: 0;
  margin: 0;
  background: #333;
  font: 85%/1.4em arial;
}

* {
  box-sizing: border-box;
}

.container {
  padding: 1em 0.5em;
}

p {
  padding: 0;
  margin: 0 0 1em;
  color: #fff;
}

#in, #out {
  width: 100%;
  min-height: 20em;
  display: block;
  padding: 1em;
  font-size: 1.2em;
  background: #555;
  color: #fff;
  border: 1px solid #ccc;
}

#out {
  background: #444;
}

.fifty {
  width: 50%;
  float: left;
  padding: 0 1em;
}

JavaScript

const convertToCamel = (str) => {
  return str.replace(/-([a-z]|[A-Z])/g, function(g, i) {
    return g[1].toUpperCase();
  });
}

const textAreaIn = document.getElementById('in');
const textAreaOut = document.getElementById('out');

textAreaIn.addEventListener('keyup', (e) => {
  textAreaOut.innerText = convertToCamel(e.target.innerText.toLowerCase());
});