(function(n){typeof define=="function"&&define.amd?define(["jquery"],n):typeof exports=="object"?n(require("jquery")):n(jQuery)})(function(n){"use strict";function p(n){for(var u=n.split(/\s+/),r=[],t,i=0;t=u[i];i++)t=t.charAt(0).toUpperCase(),r.push(t);return r}function s(t){return t.id&&n('label[for="'+t.id+'"]').val()||t.name}function v(t,i,r){return r||(r=0),i.each(function(){var i=n(this),f=this,o=this.nodeName.toLowerCase(),e,u;o==="label"&&i.find("input, textarea, select").length&&(e=i.text(),i=i.children().first(),f=i.get(0),o=f.nodeName.toLowerCase());switch(o){case"menu":u={name:i.attr("label"),items:{}};r=v(u.items,i.children(),r);break;case"a":case"button":u={name:i.text(),disabled:!!i.attr("disabled"),callback:function(){return function(){i.get(0).click()}}()};break;case"menuitem":case"command":switch(i.attr("type")){case undefined:case"command":case"menuitem":u={name:i.attr("label"),disabled:!!i.attr("disabled"),icon:i.attr("icon"),callback:function(){return function(){i.get(0).click()}}()};break;case"checkbox":u={type:"checkbox",disabled:!!i.attr("disabled"),name:i.attr("label"),selected:!!i.attr("checked")};break;case"radio":u={type:"radio",disabled:!!i.attr("disabled"),name:i.attr("label"),radio:i.attr("radiogroup"),value:i.attr("id"),selected:!!i.attr("checked")};break;default:u=undefined}break;case"hr":u="-------";break;case"input":switch(i.attr("type")){case"text":u={type:"text",name:e||s(f),disabled:!!i.attr("disabled"),value:i.val()};break;case"checkbox":u={type:"checkbox",name:e||s(f),disabled:!!i.attr("disabled"),selected:!!i.attr("checked")};break;case"radio":u={type:"radio",name:e||s(f),disabled:!!i.attr("disabled"),radio:!!i.attr("name"),value:i.val(),selected:!!i.attr("checked")};break;default:u=undefined}break;case"select":u={type:"select",name:e||s(f),disabled:!!i.attr("disabled"),selected:i.val(),options:{}};i.children().each(function(){u.options[this.value]=n(this).text()});break;case"textarea":u={type:"textarea",name:e||s(f),disabled:!!i.attr("disabled"),value:i.val()};break;case"label":break;default:u={type:"html",html:i.clone(!0)}}u&&(r++,t["key"+r]=u)}),r}n.support.htmlMenuitem="HTMLMenuItemElement"in window;n.support.htmlCommand="HTMLCommandElement"in window;n.support.eventSelectstart="onselectstart"in document.documentElement;n.ui&&n.widget||(n.cleanData=function(t){return function(i){for(var u,f,r=0;i[r]!=null;r++){f=i[r];try{u=n._data(f,"events");u&&u.remove&&n(f).triggerHandler("remove")}catch(e){}}t(i)}}(n.cleanData));var i=null,h=!1,e=n(window),c=0,o={},u={},l={},a={selector:null,appendTo:null,trigger:"right",autoHide:!1,delay:200,reposition:!0,selectableSubMenu:!1,classNames:{hover:"context-menu-hover",disabled:"context-menu-disabled",visible:"context-menu-visible",notSelectable:"context-menu-not-selectable",icon:"context-menu-icon",iconEdit:"context-menu-icon-edit",iconCut:"context-menu-icon-cut",iconCopy:"context-menu-icon-copy",iconPaste:"context-menu-icon-paste",iconDelete:"context-menu-icon-delete",iconAdd:"context-menu-icon-add",iconQuit:"context-menu-icon-quit",iconLoadingClass:"context-menu-icon-loading"},determinePosition:function(t){if(n.ui&&n.ui.position)t.css("display","block").position({my:"center top",at:"center bottom",of:this,offset:"0 5",collision:"fit"}).css("display","none");else{var i=this.offset();i.top+=this.outerHeight();i.left+=this.outerWidth()/2-t.outerWidth()/2;t.css(i)}},position:function(n,t,i){var r,u;if(t||i)t==="maintain"&&i==="maintain"?r=n.$menu.position():(u=n.$menu.offsetParent().offset(),r={top:i-u.top,left:t-u.left});else{n.determinePosition.call(this,n.$menu);return}var s=e.scrollTop()+e.height(),h=e.scrollLeft()+e.width(),f=n.$menu.outerHeight(),o=n.$menu.outerWidth();r.top+f>s&&(r.top-=f);r.top<0&&(r.top=0);r.left+o>h&&(r.left-=o);r.left<0&&(r.left=0);n.$menu.css(r)},positionSubmenu:function(t){if(typeof t!="undefined")if(n.ui&&n.ui.position)t.css("display","block").position({my:"left top-5",at:"right top",of:this,collision:"flipfit fit"}).css("display","");else{var i={top:-9,left:this.outerWidth()-5};t.css(i)}},zIndex:1,animation:{duration:50,show:"slideDown",hide:"slideUp"},events:{show:n.noop,hide:n.noop},callback:null,items:{}},f={timer:null,pageX:null,pageY:null},y=function(n){for(var i=0,t=n;;)if(i=Math.max(i,parseInt(t.css("z-index"),10)||0),t=t.parent(),!t||!t.length||"html body".indexOf(t.prop("nodeName").toLowerCase())>-1)break;return i},t={abortevent:function(n){n.preventDefault();n.stopImmediatePropagation()},contextmenu:function(t){var f=n(this),e,o,u,s;if((t.data.trigger==="right"&&(t.preventDefault(),t.stopImmediatePropagation()),t.data.trigger==="right"||t.data.trigger==="demand"||!t.originalEvent)&&(typeof t.mouseButton=="undefined"||!t.data||t.data.trigger==="left"&&t.mouseButton===0||t.data.trigger==="right"&&t.mouseButton===2)&&!f.hasClass("context-menu-active")&&!f.hasClass("context-menu-disabled")){if(i=f,t.data.build){if(e=t.data.build(i,t),e===!1)return;if(t.data=n.extend(!0,{},a,t.data,e||{}),!t.data.items||n.isEmptyObject(t.data.items)){window.console&&(console.error||console.log).call(console,"No items specified to show in contextMenu");throw new Error("No Items specified");}t.data.$trigger=i;r.create(t.data)}o=!1;for(u in t.data.items)t.data.items.hasOwnProperty(u)&&(s=n.isFunction(t.data.items[u].visible)?t.data.items[u].visible.call(n(t.currentTarget),u,t.data):typeof t.data.items[u]!="undefined"&&t.data.items[u].visible?t.data.items[u].visible===!0:!0,s&&(o=!0));o&&r.show.call(f,t.data,t.pageX,t.pageY)}},click:function(t){t.preventDefault();t.stopImmediatePropagation();n(this).trigger(n.Event("contextmenu",{data:t.data,pageX:t.pageX,pageY:t.pageY}))},mousedown:function(t){var r=n(this);i&&i.length&&!i.is(r)&&i.data("contextMenu").$menu.trigger("contextmenu:hide");t.button===2&&(i=r.data("contextMenuActive",!0))},mouseup:function(t){var r=n(this);r.data("contextMenuActive")&&i&&i.length&&i.is(r)&&!r.hasClass("context-menu-disabled")&&(t.preventDefault(),t.stopImmediatePropagation(),i=r,r.trigger(n.Event("contextmenu",{data:t.data,pageX:t.pageX,pageY:t.pageY})));r.removeData("contextMenuActive")},mouseenter:function(r){var u=n(this),e=n(r.relatedTarget),o=n(document);if(!e.is(".context-menu-list")&&!e.closest(".context-menu-list").length&&(!i||!i.length)){f.pageX=r.pageX;f.pageY=r.pageY;f.data=r.data;o.on("mousemove.contextMenuShow",t.mousemove);f.timer=setTimeout(function(){f.timer=null;o.off("mousemove.contextMenuShow");i=u;u.trigger(n.Event("contextmenu",{data:f.data,pageX:f.pageX,pageY:f.pageY}))},r.data.delay)}},mousemove:function(n){f.pageX=n.pageX;f.pageY=n.pageY},mouseleave:function(t){var i=n(t.relatedTarget);if(!i.is(".context-menu-list")&&!i.closest(".context-menu-list").length){try{clearTimeout(f.timer)}catch(t){}f.timer=null}},layerClick:function(t){var h=n(this),i=h.data("contextMenuRoot"),s=t.button,f=t.pageX,o=t.pageY,u,r;t.preventDefault();setTimeout(function(){var c,a=i.trigger==="left"&&s===0||i.trigger==="right"&&s===2,h,l;if(document.elementFromPoint&&i.$layer&&(i.$layer.hide(),u=document.elementFromPoint(f-e.scrollLeft(),o-e.scrollTop()),u.isContentEditable&&(h=document.createRange(),l=window.getSelection(),h.selectNode(u),h.collapse(!0),l.removeAllRanges(),l.addRange(h)),n(u).trigger(t),i.$layer.show()),i.reposition&&a)if(document.elementFromPoint){if(i.$trigger.is(u)){i.position.call(i.$trigger,i,f,o);return}}else if(r=i.$trigger.offset(),c=n(window),r.top+=c.scrollTop(),r.top<=t.pageY&&(r.left+=c.scrollLeft(),r.left<=t.pageX&&(r.bottom=r.top+i.$trigger.outerHeight(),r.bottom>=t.pageY&&(r.right=r.left+i.$trigger.outerWidth(),r.right>=t.pageX)))){i.position.call(i.$trigger,i,f,o);return}if(u&&a)i.$trigger.one("contextmenu:hidden",function(){n(u).contextMenu({x:f,y:o,button:s})});i!==null&&typeof i!="undefined"&&i.$menu!==null&&typeof i.$menu!="undefined"&&i.$menu.trigger("contextmenu:hide")},50)},keyStop:function(n,t){t.isInput||n.preventDefault();n.stopPropagation()},key:function(n){var r={},o,u,s,f,e;if(i&&(r=i.data("contextMenu")||{}),typeof r.zIndex=="undefined"&&(r.zIndex=0),o=0,u=function(n){n.style.zIndex!==""?o=n.style.zIndex:n.offsetParent!==null&&typeof n.offsetParent!="undefined"?u(n.offsetParent):n.parentElement!==null&&typeof n.parentElement!="undefined"&&u(n.parentElement)},u(n.target),!r.$menu||!(parseInt(o,10)>parseInt(r.$menu.css("zIndex"),10))){switch(n.keyCode){case 9:case 38:if(t.keyStop(n,r),r.isInput){if(n.keyCode===9&&n.shiftKey){n.preventDefault();r.$selected&&r.$selected.find("input, textarea, select").blur();r.$menu!==null&&typeof r.$menu!="undefined"&&r.$menu.trigger("prevcommand");return}if(n.keyCode===38&&r.$selected.find("input, textarea, select").prop("type")==="checkbox"){n.preventDefault();return}}else if(n.keyCode!==9||n.shiftKey){r.$menu!==null&&typeof r.$menu!="undefined"&&r.$menu.trigger("prevcommand");return}break;case 40:if(t.keyStop(n,r),r.isInput){if(n.keyCode===9){n.preventDefault();r.$selected&&r.$selected.find("input, textarea, select").blur();r.$menu!==null&&typeof r.$menu!="undefined"&&r.$menu.trigger("nextcommand");return}if(n.keyCode===40&&r.$selected.find("input, textarea, select").prop("type")==="checkbox"){n.preventDefault();return}}else{r.$menu!==null&&typeof r.$menu!="undefined"&&r.$menu.trigger("nextcommand");return}break;case 37:if(t.keyStop(n,r),r.isInput||!r.$selected||!r.$selected.length)break;if(!r.$selected.parent().hasClass("context-menu-root")){s=r.$selected.parent().parent();r.$selected.trigger("contextmenu:blur");r.$selected=s;return}break;case 39:if(t.keyStop(n,r),r.isInput||!r.$selected||!r.$selected.length)break;if(f=r.$selected.data("contextMenu")||{},f.$menu&&r.$selected.hasClass("context-menu-submenu")){r.$selected=null;f.$selected=null;f.$menu.trigger("nextcommand");return}break;case 35:case 36:if(r.$selected&&r.$selected.find("input, textarea, select").length)return;(r.$selected&&r.$selected.parent()||r.$menu).children(":not(."+r.classNames.disabled+", ."+r.classNames.notSelectable+")")[n.keyCode===36?"first":"last"]().trigger("contextmenu:focus");n.preventDefault();return;case 13:if(t.keyStop(n,r),r.isInput){if(r.$selected&&!r.$selected.is("textarea, select")){n.preventDefault();return}break}typeof r.$selected!="undefined"&&r.$selected!==null&&r.$selected.trigger("mouseup");return;case 32:case 33:case 34:t.keyStop(n,r);return;case 27:t.keyStop(n,r);r.$menu!==null&&typeof r.$menu!="undefined"&&r.$menu.trigger("contextmenu:hide");return;default:if(e=String.fromCharCode(n.keyCode).toUpperCase(),r.accesskeys&&r.accesskeys[e]){r.accesskeys[e].$node.trigger(r.accesskeys[e].$menu?"contextmenu:focus":"mouseup");return}}n.stopPropagation();typeof r.$selected!="undefined"&&r.$selected!==null&&r.$selected.trigger(n)}},prevItem:function(i){var r,f,o,e;i.stopPropagation();r=n(this).data("contextMenu")||{};f=n(this).data("contextMenuRoot")||{};r.$selected&&(o=r.$selected,r=r.$selected.parent().data("contextMenu")||{},r.$selected=o);for(var s=r.$menu.children(),u=!r.$selected||!r.$selected.prev().length?s.last():r.$selected.prev(),h=u;u.hasClass(f.classNames.disabled)||u.hasClass(f.classNames.notSelectable)||u.is(":hidden");)if(u=u.prev().length?u.prev():s.last(),u.is(h))return;r.$selected&&t.itemMouseleave.call(r.$selected.get(0),i);t.itemMouseenter.call(u.get(0),i);e=u.find("input, textarea, select");e.length&&e.focus()},nextItem:function(i){var r,f,o,e;i.stopPropagation();r=n(this).data("contextMenu")||{};f=n(this).data("contextMenuRoot")||{};r.$selected&&(o=r.$selected,r=r.$selected.parent().data("contextMenu")||{},r.$selected=o);for(var s=r.$menu.children(),u=!r.$selected||!r.$selected.next().length?s.first():r.$selected.next(),h=u;u.hasClass(f.classNames.disabled)||u.hasClass(f.classNames.notSelectable)||u.is(":hidden");)if(u=u.next().length?u.next():s.first(),u.is(h))return;r.$selected&&t.itemMouseleave.call(r.$selected.get(0),i);t.itemMouseenter.call(u.get(0),i);e=u.find("input, textarea, select");e.length&&e.focus()},focusInput:function(){var t=n(this).closest(".context-menu-item"),i=t.data(),r=i.contextMenu,u=i.contextMenuRoot;u.$selected=r.$selected=t;u.isInput=r.isInput=!0},blurInput:function(){var i=n(this).closest(".context-menu-item"),t=i.data(),r=t.contextMenu,u=t.contextMenuRoot;u.isInput=r.isInput=!1},menuMouseenter:function(){var t=n(this).data().contextMenuRoot;t.hovering=!0},menuMouseleave:function(t){var i=n(this).data().contextMenuRoot;i.$layer&&i.$layer.is(t.relatedTarget)&&(i.hovering=!1)},itemMouseenter:function(t){var r=n(this),f=r.data(),u=f.contextMenu,i=f.contextMenuRoot;if(i.hovering=!0,t&&i.$layer&&i.$layer.is(t.relatedTarget)&&(t.preventDefault(),t.stopImmediatePropagation()),(u.$menu?u:i).$menu.children("."+i.classNames.hover).trigger("contextmenu:blur").children(".hover").trigger("contextmenu:blur"),r.hasClass(i.classNames.disabled)||r.hasClass(i.classNames.notSelectable)){u.$selected=null;return}r.trigger("contextmenu:focus")},itemMouseleave:function(t){var u=n(this),f=u.data(),r=f.contextMenu,i=f.contextMenuRoot;if(i!==r&&i.$layer&&i.$layer.is(t.relatedTarget)){typeof i.$selected!="undefined"&&i.$selected!==null&&i.$selected.trigger("contextmenu:blur");t.preventDefault();t.stopImmediatePropagation();i.$selected=r.$selected=r.$node;return}r&&r.$menu&&r.$menu.hasClass("context-menu-visible")||u.trigger("contextmenu:blur")},itemClick:function(t){var e=n(this),o=e.data(),f=o.contextMenu,i=o.contextMenuRoot,u=o.contextMenuKey,s;if(f.items[u]&&!e.is("."+i.classNames.disabled+", .context-menu-separator, ."+i.classNames.notSelectable)&&(!e.is(".context-menu-submenu")||i.selectableSubMenu!==!1)){if(t.preventDefault(),t.stopImmediatePropagation(),n.isFunction(f.callbacks[u])&&Object.prototype.hasOwnProperty.call(f.callbacks,u))s=f.callbacks[u];else if(n.isFunction(i.callback))s=i.callback;else return;s.call(i.$trigger,u,i,t)!==!1?i.$menu.trigger("contextmenu:hide"):i.$menu.parent().length&&r.update.call(i.$trigger,i)}},inputClick:function(n){n.stopImmediatePropagation()},hideMenu:function(t,i){var u=n(this).data("contextMenuRoot");r.hide.call(u.$trigger,u,i&&i.force)},focusItem:function(t){t.stopPropagation();var u=n(this),f=u.data(),r=f.contextMenu,i=f.contextMenuRoot;u.hasClass(i.classNames.disabled)||u.hasClass(i.classNames.notSelectable)||(u.addClass([i.classNames.hover,i.classNames.visible].join(" ")).parent().find(".context-menu-item").not(u).removeClass(i.classNames.visible).filter("."+i.classNames.hover).trigger("contextmenu:blur"),r.$selected=i.$selected=u,r&&r.$node&&r.$node.hasClass("context-menu-submenu")&&r.$node.addClass(i.classNames.hover),r.$node&&i.positionSubmenu.call(r.$node,r.$menu))},blurItem:function(t){t.stopPropagation();var i=n(this),r=i.data(),u=r.contextMenu,f=r.contextMenuRoot;u.autoHide&&i.removeClass(f.classNames.visible);i.removeClass(f.classNames.hover);u.$selected=null}},r={show:function(u,f,e){var o=n(this),s={},h;if(n("#context-menu-layer").trigger("mousedown"),u.$trigger=o,u.events.show.call(o,u)===!1){i=null;return}r.update.call(o,u);u.position.call(o,u,f,e);u.zIndex&&(h=u.zIndex,typeof u.zIndex=="function"&&(h=u.zIndex.call(o,u)),s.zIndex=y(o)+h);r.layer.call(u.$menu,u,s.zIndex);u.$menu.find("ul").css("zIndex",s.zIndex+1);u.$menu.css(s)[u.animation.show](u.animation.duration,function(){o.trigger("contextmenu:visible")});o.data("contextMenu",u).addClass("context-menu-active");n(document).off("keydown.contextMenu").on("keydown.contextMenu",t.key);if(u.autoHide)n(document).on("mousemove.contextMenuAutoHide",function(n){var t=o.offset();t.right=t.left+o.outerWidth();t.bottom=t.top+o.outerHeight();!u.$layer||u.hovering||n.pageX>=t.left&&n.pageX<=t.right&&n.pageY>=t.top&&n.pageY<=t.bottom||setTimeout(function(){u.hovering||u.$menu===null||typeof u.$menu=="undefined"||u.$menu.trigger("contextmenu:hide")},50)})},hide:function(t,r){var u=n(this);if(t||(t=u.data("contextMenu")||{}),r||!t.events||t.events.hide.call(u,t)!==!1){if(u.removeData("contextMenu").removeClass("context-menu-active"),t.$layer){setTimeout(function(n){return function(){n.remove()}}(t.$layer),10);try{delete t.$layer}catch(f){t.$layer=null}}i=null;t.$menu.find("."+t.classNames.hover).trigger("contextmenu:blur");t.$selected=null;t.$menu.find("."+t.classNames.visible).removeClass(t.classNames.visible);n(document).off(".contextMenuAutoHide").off("keydown.contextMenu");t.$menu&&t.$menu[t.animation.hide](t.animation.duration,function(){t.build&&(t.$menu.remove(),n.each(t,function(n){switch(n){case"ns":case"selector":case"build":case"trigger":return!0;default:t[n]=undefined;try{delete t[n]}catch(i){}return!0}}));setTimeout(function(){u.trigger("contextmenu:hidden")},10)})}},create:function(i,u){function f(t){var i=n("<span><\/span>");if(t._accesskey)t._beforeAccesskey&&i.append(document.createTextNode(t._beforeAccesskey)),n("<span><\/span>").addClass("context-menu-accesskey").text(t._accesskey).appendTo(i),t._afterAccesskey&&i.append(document.createTextNode(t._afterAccesskey));else if(t.isHtmlName){if(typeof t.accesskey!="undefined")throw new Error("accesskeys are not compatible with HTML names and cannot be used together in the same item");i.html(t.name)}else i.text(t.name);return i}typeof u=="undefined"&&(u=i);i.$menu=n('<ul class="context-menu-list"><\/ul>').addClass(i.className||"").data({contextMenu:i,contextMenuRoot:u});n.each(["callbacks","commands","inputs"],function(n,t){i[t]={};u[t]||(u[t]={})});u.accesskeys||(u.accesskeys={});n.each(i.items,function(e,o){var s=n('<li class="context-menu-item"><\/li>').addClass(o.className||""),c=null,h=null,w,y,v,a;s.on("click",n.noop);if((typeof o=="string"||o.type==="cm_separator")&&(o={type:"cm_seperator"}),o.$node=s.data({contextMenu:i,contextMenuRoot:u,contextMenuKey:e}),typeof o.accesskey!="undefined")for(w=p(o.accesskey),y=0;v=w[y];y++)if(!u.accesskeys[v]){u.accesskeys[v]=o;a=o.name.match(new RegExp("^(.*?)("+v+")(.*)$","i"));a&&(o._beforeAccesskey=a[1],o._accesskey=a[2],o._afterAccesskey=a[3]);break}if(o.type&&l[o.type])l[o.type].call(s,o,i,u),n.each([i,u],function(t,r){r.commands[e]=o;n.isFunction(o.callback)&&(typeof r.callbacks[e]=="undefined"||typeof i.type=="undefined")&&(r.callbacks[e]=o.callback)});else{o.type==="cm_seperator"?s.addClass("context-menu-separator "+u.classNames.notSelectable):o.type==="html"?s.addClass("context-menu-html "+u.classNames.notSelectable):o.type==="sub"||(o.type?(c=n("<label><\/label>").appendTo(s),f(o).appendTo(c),s.addClass("context-menu-input"),i.hasTypes=!0,n.each([i,u],function(n,t){t.commands[e]=o;t.inputs[e]=o})):o.items&&(o.type="sub"));switch(o.type){case"cm_seperator":break;case"text":h=n('<input type="text" value="1" name="" />').attr("name","context-menu-input-"+e).val(o.value||"").appendTo(c);break;case"textarea":h=n('<textarea name=""><\/textarea>').attr("name","context-menu-input-"+e).val(o.value||"").appendTo(c);o.height&&h.height(o.height);break;case"checkbox":h=n('<input type="checkbox" value="1" name="" />').attr("name","context-menu-input-"+e).val(o.value||"").prop("checked",!!o.selected).prependTo(c);break;case"radio":h=n('<input type="radio" value="1" name="" />').attr("name","context-menu-input-"+o.radio).val(o.value||"").prop("checked",!!o.selected).prependTo(c);break;case"select":h=n('<select name=""><\/select>').attr("name","context-menu-input-"+e).appendTo(c);o.options&&(n.each(o.options,function(t,i){n("<option><\/option>").val(t).text(i).appendTo(h)}),h.val(o.selected));break;case"sub":f(o).appendTo(s);o.appendTo=o.$node;s.data("contextMenu",o).addClass("context-menu-submenu");o.callback=null;"function"==typeof o.items.then?r.processPromises(o,u,o.items):r.create(o,u);break;case"html":n(o.html).appendTo(s);break;default:n.each([i,u],function(t,r){r.commands[e]=o;n.isFunction(o.callback)&&(typeof r.callbacks[e]=="undefined"||typeof i.type=="undefined")&&(r.callbacks[e]=o.callback)});f(o).appendTo(s)}if(o.type&&o.type!=="sub"&&o.type!=="html"&&o.type!=="cm_seperator"){h.on("focus",t.focusInput).on("blur",t.blurInput);if(o.events)h.on(o.events,i)}o.icon&&(o._icon=n.isFunction(o.icon)?o.icon.call(this,this,s,e,o):typeof o.icon=="string"&&o.icon.substring(0,3)==="fa-"?u.classNames.icon+" "+u.classNames.icon+"--fa fa "+o.icon:u.classNames.icon+" "+u.classNames.icon+"-"+o.icon,s.addClass(o._icon))}if(o.$input=h,o.$label=c,s.appendTo(i.$menu),!i.hasTypes&&n.support.eventSelectstart)s.on("selectstart.disableTextSelect",t.abortevent)});i.$node||i.$menu.css("display","none").addClass("context-menu-root");i.$menu.appendTo(i.appendTo||document.body)},resize:function(t,i){var u;t.css({position:"absolute",display:"block"});t.data("width",(u=t.get(0)).getBoundingClientRect?Math.ceil(u.getBoundingClientRect().width):t.outerWidth()+1);t.css({position:"static",minWidth:"0px",maxWidth:"100000px"});t.find("> li > ul").each(function(){r.resize(n(this),!0)});i||t.find("ul").addBack().css({position:"",display:"",minWidth:"",maxWidth:""}).outerWidth(function(){return n(this).data("width")})},update:function(t,i){var u=this;typeof i=="undefined"&&(i=t,r.resize(t.$menu));t.$menu.children().each(function(){var e=n(this),o=e.data("contextMenuKey"),f=t.items[o],s=n.isFunction(f.disabled)&&f.disabled.call(u,o,i)||f.disabled===!0,h;if(h=n.isFunction(f.visible)?f.visible.call(u,o,i):typeof f.visible!="undefined"?f.visible===!0:!0,e[h?"show":"hide"](),e[s?"addClass":"removeClass"](i.classNames.disabled),n.isFunction(f.icon)&&(e.removeClass(f._icon),f._icon=f.icon.call(this,u,e,o,f),e.addClass(f._icon)),f.type){e.find("input, select, textarea").prop("disabled",s);switch(f.type){case"text":case"textarea":f.$input.val(f.value||"");break;case"checkbox":case"radio":f.$input.val(f.value||"").prop("checked",!!f.selected);break;case"select":f.$input.val((f.selected===0?"0":f.selected)||"")}}f.$menu&&r.update.call(u,f,i)})},layer:function(i,r){var u=i.$layer=n('<div id="context-menu-layer"><\/div>').css({height:e.height(),width:e.width(),display:"block",position:"fixed","z-index":r,top:0,left:0,opacity:0,filter:"alpha(opacity=0)","background-color":"#000"}).data("contextMenuRoot",i).insertBefore(this).on("contextmenu",t.abortevent).on("mousedown",t.layerClick);return typeof document.body.style.maxWidth=="undefined"&&u.css({position:"absolute",height:n(document).height()}),u},processPromises:function(n,t,i){function e(n,t,i){typeof i=="undefined"&&u(undefined);f(n,t,i)}function u(n,t,i){typeof i=="undefined"?(i={error:{name:"No items and no error item",icon:"context-menu-icon context-menu-icon-quit"}},window.console&&(console.error||console.log).call(console,'When you reject a promise, provide an "items" object, equal to normal sub-menu items')):typeof i=="string"&&(i={error:{name:i}});f(n,t,i)}function f(n,t,i){typeof t.$menu!="undefined"&&t.$menu.is(":visible")&&(n.$node.removeClass(t.classNames.iconLoadingClass),n.items=i,r.create(n,t,!0),r.update(n,t),t.positionSubmenu.call(n.$node,n.$menu))}n.$node.addClass(t.classNames.iconLoadingClass);i.then(e.bind(this,n,t),u.bind(this,n,t))}};n.fn.contextMenu=function(i){var e=this,r=i,f;return this.length>0?typeof i=="undefined"?this.first().trigger("contextmenu"):typeof i.x!="undefined"&&typeof i.y!="undefined"?this.first().trigger(n.Event("contextmenu",{pageX:i.x,pageY:i.y,mouseButton:i.button})):i==="hide"?(f=this.first().data("contextMenu")?this.first().data("contextMenu").$menu:null,f&&f.trigger("contextmenu:hide")):i==="destroy"?n.contextMenu("destroy",{context:this}):n.isPlainObject(i)?(i.context=this,n.contextMenu("create",i)):i?this.removeClass("context-menu-disabled"):i||this.addClass("context-menu-disabled"):(n.each(u,function(){this.selector===e.selector&&(r.data=this,n.extend(r.data,{trigger:"demand"}))}),t.contextmenu.call(r.target,r)),this};n.contextMenu=function(i,f){var w,p,s,b;typeof i!="string"&&(f=i,i="create");typeof f=="string"?f={selector:f}:typeof f=="undefined"&&(f={});var e=n.extend(!0,{},a,f||{}),v=n(document),l=v,y=!1;e.context&&e.context.length?(l=n(e.context).first(),e.context=l.get(0),y=!n(e.context).is(document)):e.context=document;switch(i){case"create":if(!e.selector)throw new Error("No selector specified");if(e.selector.match(/.context-menu-(list|item|input)($|\s)/))throw new Error('Cannot bind to selector "'+e.selector+'" as it contains a reserved className');if(!e.build&&(!e.items||n.isEmptyObject(e.items)))throw new Error("No Items specified");if(c++,e.ns=".contextMenu"+c,y||(o[e.selector]=e.ns),u[e.ns]=e,e.trigger||(e.trigger="right"),!h){w=e.itemClickEvent==="click"?"click.contextMenu":"mouseup.contextMenu";p={"contextmenu:focus.contextMenu":t.focusItem,"contextmenu:blur.contextMenu":t.blurItem,"contextmenu.contextMenu":t.abortevent,"mouseenter.contextMenu":t.itemMouseenter,"mouseleave.contextMenu":t.itemMouseleave};p[w]=t.itemClick;v.on({"contextmenu:hide.contextMenu":t.hideMenu,"prevcommand.contextMenu":t.prevItem,"nextcommand.contextMenu":t.nextItem,"contextmenu.contextMenu":t.abortevent,"mouseenter.contextMenu":t.menuMouseenter,"mouseleave.contextMenu":t.menuMouseleave},".context-menu-list").on("mouseup.contextMenu",".context-menu-input",t.inputClick).on(p,".context-menu-item");h=!0}l.on("contextmenu"+e.ns,e.selector,e,t.contextmenu);if(y)l.on("remove"+e.ns,function(){n(this).contextMenu("destroy")});switch(e.trigger){case"hover":l.on("mouseenter"+e.ns,e.selector,e,t.mouseenter).on("mouseleave"+e.ns,e.selector,e,t.mouseleave);break;case"left":l.on("click"+e.ns,e.selector,e,t.click);break;case"touchstart":l.on("touchstart"+e.ns,e.selector,e,t.click)}e.build||r.create(e);break;case"destroy":if(y)b=e.context,n.each(u,function(t,i){if(!i||!n(b).is(i.selector))return!0;s=n(".context-menu-list").filter(":visible");s.length&&s.data().contextMenuRoot.$trigger.is(n(i.context).find(i.selector))&&s.trigger("contextmenu:hide",{force:!0});try{u[i.ns].$menu&&u[i.ns].$menu.remove();delete u[i.ns]}catch(r){u[i.ns]=null}return n(i.context).off(i.ns),!0});else if(e.selector){if(o[e.selector]){s=n(".context-menu-list").filter(":visible");s.length&&s.data().contextMenuRoot.$trigger.is(e.selector)&&s.trigger("contextmenu:hide",{force:!0});try{u[o[e.selector]].$menu&&u[o[e.selector]].$menu.remove();delete u[o[e.selector]]}catch(k){u[o[e.selector]]=null}v.off(o[e.selector])}}else v.off(".contextMenu .contextMenuAutoHide"),n.each(u,function(t,i){n(i.context).off(i.ns)}),o={},u={},c=0,h=!1,n("#context-menu-layer, .context-menu-list").remove();break;case"html5":(n.support.htmlCommand||n.support.htmlMenuitem)&&(typeof f!="boolean"||!f)||n('menu[type="context"]').each(function(){this.id&&n.contextMenu({selector:"[contextmenu="+this.id+"]",items:n.contextMenu.fromMenu(this)})}).css("display","none");break;default:throw new Error('Unknown operation "'+i+'"');}return this};n.contextMenu.setInputValues=function(t,i){typeof i=="undefined"&&(i={});n.each(t.inputs,function(n,t){switch(t.type){case"text":case"textarea":t.value=i[n]||"";break;case"checkbox":t.selected=i[n]?!0:!1;break;case"radio":t.selected=(i[t.radio]||"")===t.value;break;case"select":t.selected=i[n]||""}})};n.contextMenu.getInputValues=function(t,i){return typeof i=="undefined"&&(i={}),n.each(t.inputs,function(n,t){switch(t.type){case"text":case"textarea":case"select":i[n]=t.$input.val();break;case"checkbox":i[n]=t.$input.prop("checked");break;case"radio":t.$input.prop("checked")&&(i[t.radio]=t.value)}}),i};n.contextMenu.fromMenu=function(t){var r=n(t),i={};return v(i,r.children()),i};n.contextMenu.defaults=a;n.contextMenu.types=l;n.contextMenu.handle=t;n.contextMenu.op=r;n.contextMenu.menus=u})