JSFiddle - React, Tailwind, and code Playground

HTML

<div class="shuffle-container">
    <ul id="random-list" class="list-shuffle">
        <li>Lorem ipsum dolor sit amet.</li>
        <li>A nulla aliquam numquam, voluptatibus deleniti.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</li>
        <li>Quis, facilis.</li>
        <li>Ab, architecto cumque odit, saepe molestiae mollitia nulla.</li>
        <li>Laboriosam ipsum inventore voluptas magni tempore autem maxime deleniti.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</li>
    </ul>
</div>

CSS

.shuffle-container {
    background-color: #494949;
    padding: 20px 12px;
    position: relative;
    font-family: Consolas, monaco, monospace;
    line-height: 1.33333;
    font-size: 15px;
    color: #f3f3f3;
    min-height: 100px;
    max-height: 100px;
    border-radius: 6px;
    border: 1px solid #222;
    box-shadow: -2px 2px 0 rgba(0, 0, 0, .2);
    overflow: hidden;
}
.shuffle-container:before, .shuffle-container:after {
    content:"";
    position: absolute;
    left: 0;
    right: 0;
    height: 30px;
    z-index: 5;
}
.shuffle-container:before {
    background-image: -webkit-linear-gradient(bottom, rgba(50, 50, 50, .94), transparent);
    background-image: linear-gradient(to bottom, rgba(50, 50, 50, .94), transparent);
    top: 0;
}
.shuffle-container:after {
    background-image: -webkit-linear-gradient(top, rgba(50, 50, 50, .94), transparent);
    background-image: linear-gradient(to top, rgba(50, 50, 50, .94), transparent);
    bottom: 0;
}
.list-shuffle {
    position: absolute;
    min-height: 120px;
    bottom: 0;
    padding: 10px 0;
    margin: 0;
    list-style-type: none;
}
#random-list > li {
    display: none;
}

JavaScript

// Animate each list item in order - one after another
var listItems = $('#random-list').children('li');

$.each(listItems, function(i, item) {
    item.show();
});


// Shuffle Plugin
(function (e) {
    function t(e) {
        var t = "";
        if (e == "lowerLetter") {
            t = "abcdefghijklmnopqrstuvwxyz0123456789"
        } else if (e == "upperLetter") {
            t = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
        } else if (e == "symbol") {
            t = ",.?/\\(^)![]{}*&^%$#'\""
        }
        var n = t.split("");
        return n[Math.floor(Math.random() * n.length)]
    }
    e.fn.shuffleLetters = function (n) {
        var r = e.extend({
            step: 8,
            fps: 25,
            text: "",
            callback: function () {}
        }, n);
        return this.each(function () {
            var n = e(this),
                i = "";
            if (n.data("animated")) {
                return true
            }
            n.data("animated", true);
            if (r.text) {
                i = r.text.split("")
            } else {
                i = n.text().split("")
            }
            var s = [],
                o = [];
            for (var u = 0; u < i.length; u++) {
                var a = i[u];
                if (a == " ") {
                    s[u] = "space";
                    continue
                } else if (/[a-z]/.test(a)) {
                    s[u] = "lowerLetter"
                } else if (/[A-Z]/.test(a)) {
                    s[u] = "upperLetter"
                } else {
                    s[u] = "symbol"
                }
                o.push(u)
            }
            n.html("");
            (function f(e) {
                var u, a = o.length,
                    l = i.slice(0);
                if (e > a) {
                    n.data("animated", false);
                    r.callback(n);
                    return
                }
                for (u = Math.max(e, 0); u < a; u++) {
        ...