Key navigation

To be used for mapping keyboard arrow press events

Per 21-02-2020. Zie de nieuwste versie.

Dit script moet niet direct worden geïnstalleerd - het is een bibliotheek voor andere scripts om op te nemen met de meta-richtlijn // @require https://update.greatest.deepsurf.us/scripts/396703/774316/Key%20navigation.js

(() => {
  'use strict';

  const KEYS = {
    37: 'LEFT',
    38: 'UP',
    39: 'RIGHT',
    40: 'DOWN',
  };

  const setUpKeyNavigation = ({
    onDownPressed,
    onLeftPressed,
    onRightPressed,
    onUpPressed,
    preventDefault,
    stopPropagation,
  }) => {
    document.addEventListener('keydown', event => {
      const eventKey = KEYS[event.which];

      const operation = {
        DOWN: e => executeFn(onDownPressed, e),
        LEFT: e => executeFn(onLeftPressed, e),
        RIGHT: e => executeFn(onRightPressed, e),
        UP: e => executeFn(onUpPressed, e),
      }[eventKey];
      operation && operation(event);

      preventDefault && event.preventDefault();
      stopPropagation && event.stopPropagation();
    });
  };

  const executeFn = (fn, ...parameters) => {
    return typeof fn === 'function' && fn(...parameters);
  };

  window.setUpKeyNavigation = setUpKeyNavigation;
})();