JSFiddle - React, Tailwind, and code Playground

by rickysullivan

HTML

<p>Start</p>

JavaScript

function debounce(func, wait, immediate) {
    var timeout;
    return function () {
        var context = this,
            args = arguments;
        var later = function () {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
}

var keyString = [];

var storeKeyStroke = function (e) {
    keyString.push(e.keyCode);
    checkKeyString(keyString);
};

var checkKeyString = debounce(function (arr) {
    var strCommand = String.fromCharCode.apply(null, arr);
    checkCommand(strCommand);
    keyString = [];
    //remindPaul(strCommand.length);
}, 300);

var checkCommand = function (cmd) {
    switch (cmd) {
        case "PAUL":
            console.log("Hello, yes this is Paul");
            break;
        case "RICKY":
            console.log("This is Ricky, giving 0 fucks");
            break;
        default:
            console.log("No command given, fuck off");
            break;
    }
}

var remindPaul = debounce(function (n) {
    console.log("Paul has " + n + " JavaScripts");
}, 1000);

window.addEventListener('keydown', storeKeyStroke);