@jstarpl/react-contextmenu
Version:
Context Menu implemented in React
54 lines (44 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dispatchGlobalEvent = dispatchGlobalEvent;
exports.showMenu = showMenu;
exports.hideMenu = hideMenu;
exports.MENU_HIDE = exports.MENU_SHOW = void 0;
var _objectAssign = _interopRequireDefault(require("object-assign"));
var _helpers = require("./helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const MENU_SHOW = 'REACT_CONTEXTMENU_SHOW';
exports.MENU_SHOW = MENU_SHOW;
const MENU_HIDE = 'REACT_CONTEXTMENU_HIDE';
exports.MENU_HIDE = MENU_HIDE;
function dispatchGlobalEvent(eventName, opts, target = window) {
/*
* Compatibale with IE
* @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work
*/
let event;
if (typeof window.CustomEvent === 'function') {
event = new window.CustomEvent(eventName, {
detail: opts
});
} else {
event = document.createEvent('CustomEvent');
event.initCustomEvent(eventName, false, true, opts);
}
if (target) {
target.dispatchEvent(event);
(0, _objectAssign.default)(_helpers.store, opts);
}
}
function showMenu(opts = {}, target) {
dispatchGlobalEvent(MENU_SHOW, (0, _objectAssign.default)({}, opts, {
type: MENU_SHOW
}), target);
}
function hideMenu(opts = {}, target) {
dispatchGlobalEvent(MENU_HIDE, (0, _objectAssign.default)({}, opts, {
type: MENU_HIDE
}), target);
}