/**
* @class ContextMenuHelper
* @classdesc Few helper static functions
*/
export default class ContextMenuHelper {
/**
* Calculates zIndex of an element
* @memberOf ContextMenuHelper
* @method zindex
* @static
* @param {JQuery} $t - Element to calculate z-index of.
* @return {number} - Elements zIndex
*/
static zindex($t) {
let zin = 0;
let $tt = $t;
while (true) {
zin = Math.max(zin, parseInt($tt.css('z-index'), 10) || 0);
$tt = $tt.parent();
if (!$tt || !$tt.length || 'html body'.indexOf($tt.prop('nodeName').toLowerCase()) > -1) {
break;
}
}
return zin;
}
/**
* Split accesskey according to http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#assigned-access-key
* @memberOf ContextMenuHelper
* @method splitAccesskey
* @static
* @param {string} val - Accesskey value
* @return {Array} - Seperate keys to handle as accesskey
*/
static splitAccesskey(val) {
let t = val.split(/\s+/);
let keys = [];
for (let i = 0, k; k = t[i]; i++) {
k = k.charAt(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;
}
}