Run pre-commit on legacy code

This commit is contained in:
jo 2021-10-12 11:17:57 +02:00
parent fea11ac752
commit 83b7e4162e
323 changed files with 6126 additions and 6462 deletions

View file

@ -13,7 +13,7 @@
*/
(function($, undefined){
// TODO: -
// ARIA stuff: menuitem, menuitemcheckbox und menuitemradio
// create <menu> structure if $.support[htmlCommand || htmlMenuitem] and !opt.disableNative
@ -97,21 +97,21 @@ var // currently active contextMenu trigger
}
offset = {top: y, left: x};
}
// correct offset if viewport demands it
var bottom = $win.scrollTop() + $win.height(),
right = $win.scrollLeft() + $win.width(),
height = opt.$menu.height(),
width = opt.$menu.width();
if (offset.top + height > bottom) {
offset.top -= height;
}
if (offset.left + width > right) {
offset.left -= width;
}
opt.$menu.css(offset);
},
// position the sub-menu
@ -169,7 +169,7 @@ var // currently active contextMenu trigger
break;
}
}
return zin;
},
// event handlers
@ -179,26 +179,26 @@ var // currently active contextMenu trigger
e.preventDefault();
e.stopImmediatePropagation();
},
// contextmenu show dispatcher
contextmenu: function(e) {
var $this = $(this);
// disable actual context-menu
e.preventDefault();
e.stopImmediatePropagation();
// ignore right click trigger
if (ignoreThisClick) {
ignoreThisClick = false;
return;
}
if (!$this.hasClass('context-menu-disabled')) {
// theoretically need to fire a show event at <menu>
// http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus
// var evt = jQuery.Event("show", { data: data, pageX: e.pageX, pageY: e.pageY, relatedTarget: this });
// e.data.$menu.trigger(evt);
$currentTrigger = $this;
if (e.data.build) {
// dynamically build menu on invocation
@ -219,12 +219,12 @@ var // currently active contextMenu trigger
mousedown: function(e) {
// register mouse down
var $this = $(this);
// hide any previous menus
if ($currentTrigger && $currentTrigger.length && !$currentTrigger.is($this)) {
$currentTrigger.data('contextMenu').$menu.trigger('contextmenu:hide');
}
// activate on right click
if (e.button == 2) {
$currentTrigger = $this.data('contextMenuActive', true);
@ -240,7 +240,7 @@ var // currently active contextMenu trigger
$currentTrigger = $this;
$this.trigger(jQuery.Event("contextmenu", { data: e.data, pageX: e.pageX, pageY: e.pageY }));
}
$this.removeData('contextMenuActive');
},
// contextMenu hover trigger
@ -248,17 +248,17 @@ var // currently active contextMenu trigger
var $this = $(this),
$related = $(e.relatedTarget),
$document = $(document);
// abort if we're coming from a menu
if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {
return;
}
// abort if a menu is shown
if ($currentTrigger && $currentTrigger.length) {
return;
}
hoveract.pageX = e.pageX;
hoveract.pageY = e.pageY;
hoveract.data = e.data;
@ -282,11 +282,11 @@ var // currently active contextMenu trigger
if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {
return;
}
try {
clearTimeout(hoveract.timer);
} catch(e) {}
hoveract.timer = null;
},
@ -296,12 +296,12 @@ var // currently active contextMenu trigger
ignoreThisClick = true;
}
},
// click on layer to hide contextMenu
layerClick: function(e) {
var $this = $(this),
root = $this.data('contextMenuRoot');
e.preventDefault();
e.stopImmediatePropagation();
$this.remove();
@ -309,7 +309,7 @@ var // currently active contextMenu trigger
/* (Airtime) added this to allow user to exit out of menu.
* if ignoreThisClick remains false, every right click
* thereafter continues to show the menu
*/
*/
if (handle.ignoreRightClick) {
if (e.button == 2) {
ignoreThisClick = true;
@ -321,7 +321,7 @@ var // currently active contextMenu trigger
if (!opt.isInput) {
e.preventDefault();
}
e.stopPropagation();
},
key: function(e) {
@ -349,7 +349,7 @@ var // currently active contextMenu trigger
opt.$menu.trigger('prevcommand');
return;
}
case 9: // tab
case 40: // down
handle.keyStop(e, opt);
@ -369,13 +369,13 @@ var // currently active contextMenu trigger
return;
}
break;
case 37: // left
handle.keyStop(e, opt);
if (opt.isInput || !opt.$selected || !opt.$selected.length) {
break;
}
if (!opt.$selected.parent().hasClass('context-menu-root')) {
var $parent = opt.$selected.parent().parent();
opt.$selected.trigger('contextmenu:blur');
@ -383,13 +383,13 @@ var // currently active contextMenu trigger
return;
}
break;
case 39: // right
handle.keyStop(e, opt);
if (opt.isInput || !opt.$selected || !opt.$selected.length) {
break;
}
var itemdata = opt.$selected.data('contextMenu') || {};
if (itemdata.$menu && opt.$selected.hasClass('context-menu-submenu')) {
opt.$selected = null;
@ -398,7 +398,7 @@ var // currently active contextMenu trigger
return;
}
break;
case 35: // end
case 36: // home
if (opt.$selected && opt.$selected.find('input, textarea, select').length) {
@ -411,7 +411,7 @@ var // currently active contextMenu trigger
return;
}
break;
case 13: // enter
handle.keyStop(e, opt);
if (opt.isInput) {
@ -423,19 +423,19 @@ var // currently active contextMenu trigger
}
opt.$selected && opt.$selected.trigger('mouseup');
return;
case 32: // space
case 33: // page up
case 34: // page down
// prevent browser from scrolling down while menu is visible
handle.keyStop(e, opt);
return;
case 27: // esc
handle.keyStop(e, opt);
opt.$menu.trigger('contextmenu:hide');
return;
default: // 0-9, a-z
var k = (String.fromCharCode(e.keyCode)).toUpperCase();
if (opt.accesskeys[k]) {
@ -448,7 +448,7 @@ var // currently active contextMenu trigger
}
break;
}
// pass event to selected item,
// pass event to selected item,
// stop propagation to avoid endless recursion
e.stopPropagation();
opt.$selected && opt.$selected.trigger(e);
@ -465,11 +465,11 @@ var // currently active contextMenu trigger
opt = opt.$selected.parent().data('contextMenu') || {};
opt.$selected = $s;
}
var $children = opt.$menu.children(),
$prev = !opt.$selected || !opt.$selected.prev().length ? $children.last() : opt.$selected.prev(),
$round = $prev;
// skip disabled
while ($prev.hasClass('disabled') || $prev.hasClass('not-selectable')) {
if ($prev.prev().length) {
@ -482,15 +482,15 @@ var // currently active contextMenu trigger
return;
}
}
// leave current
if (opt.$selected) {
handle.itemMouseleave.call(opt.$selected.get(0), e);
}
// activate next
handle.itemMouseenter.call($prev.get(0), e);
// focus input
var $input = $prev.find('input, textarea, select');
if ($input.length) {
@ -525,22 +525,22 @@ var // currently active contextMenu trigger
return;
}
}
// leave current
if (opt.$selected) {
handle.itemMouseleave.call(opt.$selected.get(0), e);
}
// activate next
handle.itemMouseenter.call($next.get(0), e);
// focus input
var $input = $next.find('input, textarea, select');
if ($input.length) {
$input.focus();
}
},
// flag that we're inside an input so the key handler can act accordingly
focusInput: function(e) {
var $this = $(this).closest('.context-menu-item'),
@ -560,7 +560,7 @@ var // currently active contextMenu trigger
root.isInput = opt.isInput = false;
},
// :hover on menu
menuMouseenter: function(e) {
var root = $(this).data().contextMenuRoot;
@ -573,15 +573,15 @@ var // currently active contextMenu trigger
root.hovering = false;
}
},
// :hover done manually so key handling is possible
itemMouseenter: function(e) {
var $this = $(this),
data = $this.data(),
opt = data.contextMenu,
root = data.contextMenuRoot;
root.hovering = true;
// abort if we're re-entering
@ -598,7 +598,7 @@ var // currently active contextMenu trigger
opt.$selected = null;
return;
}
$this.trigger('contextmenu:focus');
},
// :hover done manually so key handling is possible
@ -615,7 +615,7 @@ var // currently active contextMenu trigger
root.$selected = opt.$selected = opt.$node;
return;
}
$this.trigger('contextmenu:blur');
},
// contextMenu item click
@ -640,7 +640,7 @@ var // currently active contextMenu trigger
callback = root.callbacks[key];
} else if ($.isFunction(root.callback)) {
// default callback
callback = root.callback;
callback = root.callback;
} else {
// no callback, no action
return;
@ -657,7 +657,7 @@ var // currently active contextMenu trigger
inputClick: function(e) {
e.stopImmediatePropagation();
},
// hide <menu>
hideMenu: function(e) {
var root = $(this).data('contextMenuRoot');
@ -673,10 +673,10 @@ var // currently active contextMenu trigger
$this.addClass('hover')
.siblings('.hover').trigger('contextmenu:blur');
// remember selected
opt.$selected = root.$selected = $this;
// position sub-menu - do after show so dumb $.ui.position can keep up
if (opt.$node) {
root.positionSubmenu.call(opt.$node, opt.$menu);
@ -689,7 +689,7 @@ var // currently active contextMenu trigger
data = $this.data(),
opt = data.contextMenu,
root = data.contextMenuRoot;
$this.removeClass('hover');
opt.$selected = null;
}
@ -709,13 +709,13 @@ var // currently active contextMenu trigger
$currentTrigger = null;
return;
}
// backreference for callbacks
opt.$trigger = $this;
// create or update context menu
op.update.call($this, opt);
// position menu
opt.position.call($this, opt, x, y);
@ -723,13 +723,13 @@ var // currently active contextMenu trigger
if (opt.zIndex) {
css.zIndex = zindex($this) + opt.zIndex;
}
// add layer
op.layer.call(opt.$menu, opt, css.zIndex);
// adjust sub-menu zIndexes
opt.$menu.find('ul').css('zIndex', css.zIndex + 1);
// position and show context menu
opt.$menu.css( css )[opt.animation.show](opt.animation.duration);
// make options available
@ -756,12 +756,12 @@ var // currently active contextMenu trigger
if (!opt) {
opt = $this.data('contextMenu') || {};
}
// hide event
if (opt.events && opt.events.hide.call($this, opt) === false) {
return;
}
if (opt.$layer) {
try {
opt.$layer.remove();
@ -770,7 +770,7 @@ var // currently active contextMenu trigger
opt.$layer = null;
}
}
// remove handle
$currentTrigger = null;
// remove selected
@ -781,7 +781,7 @@ var // currently active contextMenu trigger
$(document).off('.contextMenuAutoHide').off('keydown.contextMenu');
// hide menu
opt.$menu && opt.$menu[opt.animation.hide](opt.animation.duration);
// tear down dynamically built menu
if (opt.build) {
opt.$menu.remove();
@ -813,28 +813,28 @@ var // currently active contextMenu trigger
'contextMenu': opt,
'contextMenuRoot': root
});
$.each(['callbacks', 'commands', 'inputs'], function(i,k){
opt[k] = {};
if (!root[k]) {
root[k] = {};
}
});
root.accesskeys || (root.accesskeys = {});
// create contextMenu items
$.each(opt.items, function(key, item){
var $t = $('<li class="context-menu-item ' + (item.className || "") +'"></li>'),
$label = null,
$input = null;
item.$node = $t.data({
'contextMenu': opt,
'contextMenuRoot': root,
'contextMenuKey': key
});
// register accesskey
// NOTE: the accesskey attribute should be applicable to any element, but Safari5 and Chrome13 still can't do that
if (item.accesskey) {
@ -847,7 +847,7 @@ var // currently active contextMenu trigger
}
}
}
if (typeof item == "string") {
$t.addClass('context-menu-separator not-selectable');
} else if (item.type && types[item.type]) {
@ -876,13 +876,13 @@ var // currently active contextMenu trigger
} else if (item.items) {
item.type = 'sub';
}
switch (item.type) {
case 'text':
$input = $('<input type="text" value="1" name="context-menu-input-'+ key +'" value="">')
.val(item.value || "").appendTo($label);
break;
case 'textarea':
$input = $('<textarea name="context-menu-input-'+ key +'"></textarea>')
.val(item.value || "").appendTo($label);
@ -901,7 +901,7 @@ var // currently active contextMenu trigger
$input = $('<input type="radio" value="1" name="context-menu-input-'+ item.radio +'" value="">')
.val(item.value || "").prop("checked", !!item.selected).prependTo($label);
break;
case 'select':
$input = $('<select name="context-menu-input-'+ key +'">').appendTo($label);
if (item.options) {
@ -911,7 +911,7 @@ var // currently active contextMenu trigger
$input.val(item.selected);
}
break;
case 'sub':
$('<span></span>').html(item._name || item.name).appendTo($t);
item.appendTo = item.$node;
@ -919,11 +919,11 @@ var // currently active contextMenu trigger
$t.data('contextMenu', item).addClass('context-menu-submenu');
item.callback = null;
break;
case 'html':
$(item.html).appendTo($t);
break;
default:
$.each([opt, root], function(i,k){
k.commands[key] = item;
@ -931,35 +931,35 @@ var // currently active contextMenu trigger
k.callbacks[key] = item.callback;
}
});
$('<span></span>').html(item._name || item.name || "").appendTo($t);
break;
}
// disable key listener in <input>
if (item.type && item.type != 'sub' && item.type != 'html') {
$input
.on('focus', handle.focusInput)
.on('blur', handle.blurInput);
if (item.events) {
$input.on(item.events);
}
}
// add icons
if (item.icon) {
$t.addClass("icon icon-" + item.icon);
}
}
// cache contained elements
item.$input = $input;
item.$label = $label;
// attach item to menu
$t.appendTo(opt.$menu);
// Disable text selection
if (!opt.hasTypes) {
if($.browser.msie) {
@ -997,29 +997,29 @@ var // currently active contextMenu trigger
// dis- / enable item
$item[disabled ? 'addClass' : 'removeClass']('disabled');
if (item.type) {
// dis- / enable input elements
$item.find('input, select, textarea').prop('disabled', disabled);
// update input states
switch (item.type) {
case 'text':
case 'textarea':
item.$input.val(item.value || "");
break;
case 'checkbox':
case 'radio':
item.$input.val(item.value || "").prop('checked', !!item.selected);
break;
case 'select':
item.$input.val(item.selected || "");
break;
}
}
if (item.$menu) {
// update sub-menu
op.update.call($this, item, root);
@ -1041,14 +1041,14 @@ var // currently active contextMenu trigger
function splitAccesskey(val) {
var t = val.split(/\s+/),
keys = [];
for (var i=0, k; k = t[i]; i++) {
k = k[0].toUpperCase(); // first character only
// theoretically non-accessible characters should be ignored, but different systems, different keyboard layouts, ... screw it.
// a map to look up already used access keys would be nice
keys.push(k);
}
return keys;
}
@ -1066,7 +1066,7 @@ $.fn.contextMenu = function(operation) {
} else if (!operation) {
this.addClass('context-menu-disabled');
}
return this;
};
@ -1076,17 +1076,17 @@ $.contextMenu = function(operation, options) {
options = operation;
operation = 'create';
}
if (typeof options == 'string') {
options = {selector: options};
} else if (options === undefined) {
options = {};
}
// merge with default options
var o = $.extend(true, {}, defaults, options || {}),
$body = $body = $(document);
switch (operation) {
case 'create':
// no selector no joy
@ -1104,7 +1104,7 @@ $.contextMenu = function(operation, options) {
o.ns = '.contextMenu' + counter;
namespaces[o.selector] = o.ns;
menus[o.ns] = o;
if (!initialized) {
// make sure item click is registered first
$body
@ -1128,18 +1128,18 @@ $.contextMenu = function(operation, options) {
initialized = true;
}
// engage native contextmenu event
$body
.on('contextmenu' + o.ns, o.selector, o, handle.contextmenu);
switch (o.trigger) {
case 'hover':
$body
.on('mouseenter' + o.ns, o.selector, o, handle.mouseenter)
.on('mouseleave' + o.ns, o.selector, o, handle.mouseleave);
.on('mouseleave' + o.ns, o.selector, o, handle.mouseleave);
break;
case 'left':
$body.on('click' + o.ns, o.selector, o, handle.click);
break;
@ -1152,7 +1152,7 @@ $.contextMenu = function(operation, options) {
break;
*/
}
if (o.trigger != 'hover' && o.ignoreRightClick) {
$body.on('mousedown' + o.ns, o.selector, handle.ignoreRightClick);
}
@ -1162,35 +1162,35 @@ $.contextMenu = function(operation, options) {
op.create(o);
}
break;
case 'destroy':
if (!o.selector) {
$body.off('.contextMenu .contextMenuAutoHide');
$.each(namespaces, function(key, value) {
$body.off(value);
});
namespaces = {};
menus = {};
counter = 0;
initialized = false;
$('.context-menu-list').remove();
} else if (namespaces[o.selector]) {
try {
if (menus[namespaces[o.selector]].$menu) {
menus[namespaces[o.selector]].$menu.remove();
}
delete menus[namespaces[o.selector]];
} catch(e) {
menus[namespaces[o.selector]] = null;
}
$body.off(namespaces[o.selector]);
}
break;
case 'html5':
// if <command> or <menuitem> are not handled by the browser,
// or options was a bool true,
@ -1206,11 +1206,11 @@ $.contextMenu = function(operation, options) {
}).css('display', 'none');
}
break;
default:
throw new Error('Unknown operation "' + operation + '"');
}
return this;
};
@ -1219,7 +1219,7 @@ $.contextMenu.setInputValues = function(opt, data) {
if (data === undefined) {
data = {};
}
$.each(opt.inputs, function(key, item) {
switch (item.type) {
case 'text':
@ -1230,11 +1230,11 @@ $.contextMenu.setInputValues = function(opt, data) {
case 'checkbox':
item.selected = data[key] ? true : false;
break;
case 'radio':
item.selected = (data[item.radio] || "") == item.value ? true : false;
break;
case 'select':
item.selected = data[key] || "";
break;
@ -1247,7 +1247,7 @@ $.contextMenu.getInputValues = function(opt, data) {
if (data === undefined) {
data = {};
}
$.each(opt.inputs, function(key, item) {
switch (item.type) {
case 'text':
@ -1259,7 +1259,7 @@ $.contextMenu.getInputValues = function(opt, data) {
case 'checkbox':
data[key] = item.$input.prop('checked');
break;
case 'radio':
if (item.$input.prop('checked')) {
data[item.radio] = item.value;
@ -1267,7 +1267,7 @@ $.contextMenu.getInputValues = function(opt, data) {
break;
}
});
return data;
};
@ -1281,14 +1281,14 @@ function menuChildren(items, $children, counter) {
if (!counter) {
counter = 0;
}
$children.each(function() {
var $node = $(this),
node = this,
nodeName = this.nodeName.toLowerCase(),
label,
item;
// extract <label><input>
if (nodeName == 'label' && $node.find('input, textarea, select').length) {
label = $node.text();
@ -1296,14 +1296,14 @@ function menuChildren(items, $children, counter) {
node = $node.get(0);
nodeName = node.nodeName.toLowerCase();
}
/*
* <menu> accepts flow-content as children. that means <embed>, <canvas> and such are valid menu items.
* Not being the sadistic kind, $.contextMenu only accepts:
* <command>, <menuitem>, <hr>, <span>, <p> <input [text, radio, checkbox]>, <textarea>, <select> and of course <menu>.
* Everything else will be imported as an html node, which is not interfaced with contextMenu.
*/
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#concept-command
switch (nodeName) {
// http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#the-menu-element
@ -1311,7 +1311,7 @@ function menuChildren(items, $children, counter) {
item = {name: $node.attr('label'), items: {}};
menuChildren(item.items, $node.children(), counter);
break;
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-a-element-to-define-a-command
case 'a':
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-button-element-to-define-a-command
@ -1322,7 +1322,7 @@ function menuChildren(items, $children, counter) {
callback: (function(){ return function(){ $node.click(); }; })()
};
break;
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-command-element-to-define-a-command
case 'menuitem':
@ -1337,7 +1337,7 @@ function menuChildren(items, $children, counter) {
callback: (function(){ return function(){ $node.click(); }; })()
};
break;
case 'checkbox':
item = {
type: 'checkbox',
@ -1346,7 +1346,7 @@ function menuChildren(items, $children, counter) {
selected: !!$node.attr('checked')
};
break;
case 'radio':
item = {
type: 'radio',
@ -1357,16 +1357,16 @@ function menuChildren(items, $children, counter) {
selected: !!$node.attr('checked')
};
break;
default:
item = undefined;
}
break;
case 'hr':
item = '-------';
break;
case 'input':
switch ($node.attr('type')) {
case 'text':
@ -1377,7 +1377,7 @@ function menuChildren(items, $children, counter) {
value: $node.val()
};
break;
case 'checkbox':
item = {
type: 'checkbox',
@ -1386,7 +1386,7 @@ function menuChildren(items, $children, counter) {
selected: !!$node.attr('checked')
};
break;
case 'radio':
item = {
type: 'radio',
@ -1397,13 +1397,13 @@ function menuChildren(items, $children, counter) {
selected: !!$node.attr('checked')
};
break;
default:
item = undefined;
break;
}
break;
case 'select':
item = {
type: 'select',
@ -1416,7 +1416,7 @@ function menuChildren(items, $children, counter) {
item.options[this.value] = $(this).text();
});
break;
case 'textarea':
item = {
type: 'textarea',
@ -1425,15 +1425,15 @@ function menuChildren(items, $children, counter) {
value: $node.val()
};
break;
case 'label':
break;
default:
item = {type: 'html', html: $node.clone(true)};
break;
}
if (item) {
counter++;
items['key' + counter] = item;
@ -1445,9 +1445,9 @@ function menuChildren(items, $children, counter) {
$.contextMenu.fromMenu = function(element) {
var $this = $(element),
items = {};
menuChildren(items, $this.children());
return items;
};