JSFiddle - React, Tailwind, and code Playground

HTML

<div id="myDiv" contenteditable="true">
</div>
<p>Last word : <span id="lastWord"></span></p>

CSS

#myDiv{width:100%;height:200px;border:solid 1px #000;box-sizing:border-box;}

JavaScript

function getWordPrecedingCaret (containerEl) {
    var preceding = "",
        sel,
        range,
        precedingRange;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount > 0) {
            range = sel.getRangeAt(0).cloneRange();
            range.collapse(true);
            range.setStart(containerEl, 0);
            preceding = range.toString();
        }
    } else if ((sel = document.selection) && sel.type != "Control") {
        range = sel.createRange();
        precedingRange = range.duplicate();
        precedingRange.moveToElementText(containerEl);
        precedingRange.setEndPoint("EndToStart", range);
        preceding = precedingRange.text;
    }
    var lastWord = preceding.match(/(?:\s|^)([\S]+)$/i);
    if (lastWord) {
        return lastWord;
    } else {
        return false;
    }
}

$('#myDiv').on('keyup focus', function () {
    var lastWord = getWordPrecedingCaret(this),
        spanLastWord = $('#lastWord');
    if (lastWord) {
        spanLastWord.text(lastWord[1]);
    } else {
        spanLastWord.text('');
    }
});