UNPKG

handsontable

Version:

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

56 lines (55 loc) 1.75 kB
import "core-js/modules/es.set.difference.v2.js"; import "core-js/modules/es.set.intersection.v2.js"; import "core-js/modules/es.set.is-disjoint-from.v2.js"; import "core-js/modules/es.set.is-subset-of.v2.js"; import "core-js/modules/es.set.is-superset-of.v2.js"; import "core-js/modules/es.set.symmetric-difference.v2.js"; import "core-js/modules/es.set.union.v2.js"; /* eslint-disable jsdoc/require-description-complete-sentence */ /** * Create a key observer. * * @returns {object} */ export 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); } }; }