Source: contextmenu.js

'use strict';
import '../sass/jquery.contextMenu.scss';
import ContextMenu from './classes/ContextMenu';
import ContextMenuItemTypes from './classes/ContextMenuItemTypes';
import elementFunction from './jquery/contextMenuFunction';

/**
 * The jQuery namespace.
 * @external "jQuery"
 * @see {@link http://docs.jquery.com/Plugins/Authoring The jQuery Plugin Guide}
 */

/**
 * @class jQuery.contextMenu
 * @function external:jQuery.contextMenu
 * @instance
 *
 * @param {string} operation
 * @param {ContextMenuOptions} options
 *
 * @property {ContextMenu} manager
 * @property {getInputValues} getInputValues
 * @property {setInputValues} setInputValues
 * @property {fromMenu} ContextMenuHtml5Builder#fromMenu
 * @property {ContextMenuOptions} defaults
 * @property {ContextMenuEventHandler} handle
 * @property {ContextMenuOperations} operations
 * @property {Object<string, ContextMenuData>} menus
 */
const manager = new ContextMenu();

// manage contextMenu instances
let contextMenu = function (operation, options) {
    manager.execute(operation, options);
};

contextMenu.getInputValues = function (currentMenuData, data) {
    return manager.getInputValues(currentMenuData, data);
};
contextMenu.setInputValues = function (currentMenuData, data) {
    return manager.getInputValues(currentMenuData, data);
};
contextMenu.fromMenu = function (element) {
    return manager.html5builder.fromMenu(element);
};

// make defaults accessible
contextMenu.defaults = manager.defaults;
contextMenu.types = manager.defaults.types;
contextMenu.manager = manager;

// export internal functions - undocumented, for hacking only!
contextMenu.handle = manager.handler;
contextMenu.operations = manager.operations;
contextMenu.menus = manager.menus;
contextMenu.namespaces = manager.namespaces;

$.fn.contextMenu = elementFunction;
$.contextMenu = contextMenu;

module.exports = {ContextMenu, ContextMenuItemTypes};