Source: menu_util.js

/*************************************************************
 *
 *  Copyright (c) 2015-2016 The MathJax Consortium
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
/**
 * @fileoverview Utility class for menu handling.
 *
 * @author volker.sorge@gmail.com (Volker Sorge)
 */
/// <reference path="context_menu.ts" />
/// <reference path="item.ts" />
/// <reference path="menu.ts" />
/// <reference path="sub_menu.ts" />


    /**
     * @namespace
     */
    var MenuUtil;

    (function (MenuUtil) {
        /**
         * Closes the entire context menu.
         * @param {Item} item The item on which the menu close is called.
         */
        MenuUtil.close = close;
        function close(item) {
            let menu = item.getMenu();
            if (menu instanceof ContextMenu.SubMenu) {
                menu.baseMenu.unpost();
            }
            else {
                menu.unpost();
            }
        }
        /**
         * Retrieves the currently active element of the overall context menu.
         * @param {Item} item The item on which the last call was made.
         * @return {HtmlElement} The currently active element.
         */
        MenuUtil.getActiveElement = getActiveElement;
        function getActiveElement(item) {
            let menu = item.getMenu();
            let baseMenu = menu instanceof ContextMenu.SubMenu ?
                menu.baseMenu : menu;
            return baseMenu.getStore().getActive();
        }
        /**
         * Error function for controlled exceptions.
         * @param {Error} error The thrown error, containing the stack trace.
         * @param {string} msg The message to be signalled.
         */
        MenuUtil.error = error;
        function error(error, msg) {
            console.log('ContextMenu Error: ' + msg);
        }
        /**
         * @return {number} A global, increasing unique counter.
         */
        MenuUtil.counter = counter;
        function counter() {
            return count++;
        }
        let count = 0;
    })(MenuUtil = ContextMenu.MenuUtil || (ContextMenu.MenuUtil = {}));