JSFiddle - React, Tailwind, and code Playground

by Boba Poshtar

JavaScript

function lineBreak(line) {
  let parent = line.parentElement;
  let divs = parent.querySelectorAll('.line');
  //let words = line.textContent.split(' ');
  let words;
  //let cursorIndex = words[words.length - 1].length;
  let lines = [];
  divs.forEach(function(line) {
    lines.push(line.textContent);
  });
  let linesOriginal = lines.concat();

	let lastWords = '';
  for (let i = 0; i < lines.length; i++) {
    if (lastWords) {
      lines[i] = lastWords + ' ' + lines[i];
      lastWords = '';
    }
    let limit = parseInt(divs[i].dataset.symbolscount);
    while (lines[i].length > limit) {
      words = lines[i].split(' ');
      lastWords += (lastWords ? ' ' : '') + words.pop();
      lines[i] = words.join(' ');
    }
  }
	if (lastWords) {
  	if (lines.length < parseInt(parent.dataset.lineslimit)) {
    	lines.push(lastWords);
      return lines;
  	} else return;
	}
}