JSFiddle - React, Tailwind, and code Playground

JavaScript

setIdleTimeout(5000, function() {
    document.body.innerText = "Where did you go?";
}, function() {
    document.body.innerText = "Welcome back!";
});



function setIdleTimeout(millis, onIdle, onUnidle) {
  var timeout = 0;
  startTimer();

  function startTimer() {
    timeout = setTimeout(onExpires, millis);
    document.addEventListener("mousemove", onActivity);
    document.addEventListener("keydown", onActivity);
    document.addEventListener("touchstart", onActivity);
  }

  function onExpires() {
    timeout = 0;
    onIdle();
  }

  function onActivity() {
    if (timeout) clearTimeout(timeout);
    else onUnidle();
    //since the mouse is moving, we turn off our event hooks for 1 second
    document.removeEventListener("mousemove", onActivity);
    document.removeEventListener("keydown", onActivity);
    document.removeEventListener("touchstart", onActivity);
    setTimeout(startTimer, 1000);
  }
}