UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

60 lines (58 loc) 1.85 kB
"use strict"; exports.__esModule = true; exports.createKeysObserver = createKeysObserver; require("core-js/modules/es.set.difference.v2.js"); require("core-js/modules/es.set.intersection.v2.js"); require("core-js/modules/es.set.is-disjoint-from.v2.js"); require("core-js/modules/es.set.is-subset-of.v2.js"); require("core-js/modules/es.set.is-superset-of.v2.js"); require("core-js/modules/es.set.symmetric-difference.v2.js"); require("core-js/modules/es.set.union.v2.js"); /* eslint-disable jsdoc/require-description-complete-sentence */ /** * Create a key observer. * * @returns {object} */ function createKeysObserver() { const PRESSED_KEYS = new Set(); return { /** * Press a key. * * @param {string} key Names of the shortcut's keys, * (coming from [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)), * in lowercase or uppercase, unified across browsers */ press(key) { PRESSED_KEYS.add(key); }, /** * Release a pressed key. * * @param {string} key Names of the shortcut's keys, * (coming from [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)), * in lowercase or uppercase, unified across browsers */ release(key) { PRESSED_KEYS.delete(key); }, /** * Release all pressed keys. */ releaseAll() { PRESSED_KEYS.clear(); }, /** * Check if a key is pressed. * * @param {string} key Names of the shortcut's keys, * (coming from [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)), * in lowercase or uppercase, unified across browsers * @returns {boolean} */ isPressed(key) { return PRESSED_KEYS.has(key); } }; }