@jstarpl/react-contextmenu
Version:
Context Menu implemented in React
69 lines (59 loc) • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.callIfExists = callIfExists;
exports.hasOwnProp = hasOwnProp;
exports.uniqueId = uniqueId;
exports.isElementParent = isElementParent;
exports.KEYBOARD_CODES = exports.SECONDARY_MOUSE_BUTTON = exports.PRIMARY_MOUSE_BUTTON = exports.canUseDOM = exports.store = exports.cssClasses = void 0;
function callIfExists(func, ...args) {
return typeof func === 'function' && func(...args);
}
function hasOwnProp(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
function uniqueId() {
// eslint-disable-next-line no-magic-numbers
return Math.random().toString(36).substring(7);
}
const cssClasses = {
menu: 'react-contextmenu',
menuVisible: 'react-contextmenu--visible',
menuWrapper: 'react-contextmenu-wrapper',
menuItem: 'react-contextmenu-item',
menuItemActive: 'react-contextmenu-item--active',
menuItemDisabled: 'react-contextmenu-item--disabled',
menuItemDivider: 'react-contextmenu-item--divider',
menuItemSelected: 'react-contextmenu-item--selected',
subMenu: 'react-contextmenu-submenu'
};
exports.cssClasses = cssClasses;
const store = {};
exports.store = store;
const canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
exports.canUseDOM = canUseDOM;
function isElementParent(element, parent) {
let current = element;
while (current.parentNode) {
current = current.parentNode;
if (current === parent) {
return true;
}
}
return false;
}
const PRIMARY_MOUSE_BUTTON = 0;
exports.PRIMARY_MOUSE_BUTTON = PRIMARY_MOUSE_BUTTON;
const SECONDARY_MOUSE_BUTTON = 1;
exports.SECONDARY_MOUSE_BUTTON = SECONDARY_MOUSE_BUTTON;
const KEYBOARD_CODES = {
ArrowUp: 'ArrowUp',
ArrowDown: 'ArrowDown',
ArrowLeft: 'ArrowLeft',
ArrowRight: 'ArrowRight',
Escape: 'Escape',
Enter: 'Enter',
NumpadEnter: 'NumpadEnter'
};
exports.KEYBOARD_CODES = KEYBOARD_CODES;