IntelligentRecognition/ah-jjsp-web/.svn/pristine/17/17cdc0694dd03ab81f92264842f...

726 lines
44 KiB
Plaintext

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