ng-hotkeys
Version:
ng-hotkeys for Angular 14+
73 lines • 7.62 kB
JavaScript
export function isFunction(x) {
return typeof x === "function";
}
export const invert = obj => {
const new_obj = {};
for (const prop in obj) {
if (obj.hasOwnProperty(prop)) {
new_obj[obj[prop]] = prop;
}
}
return new_obj;
};
export const any = (fn, list) => {
let idx = 0;
while (idx < list.length) {
if (fn(list[idx])) {
return true;
}
idx += 1;
}
return false;
};
export const identity = x => x;
/**
* @ignore
* @param x
* @returns boolean
*/
export const isNill = x => x == null;
/**
* @ignore
* @param xs
* @param key
* @returns any
*/
export const groupBy = (xs, key) => xs.reduce((result, x) => ({
...result,
[x[key]]: [...(result[x[key]] || []), x]
}), {});
/**
* @ignore
* @param first
* @param second
* @returns any[]
*/
export const difference = (first, second) => first.filter(item => !second.includes(item));
/**
* @ignore
* @param preds
* @returns (...args) => boolean;
*/
export const allPass = preds => (...args) => {
let idx = 0;
const len = preds.length;
while (idx < len) {
if (!preds[idx].apply(this, args)) {
return false;
}
idx += 1;
}
return true;
};
export const prop = prop => object => object[prop];
const minMaxArrayProp = type => (property, array) => Math[type].apply(Math, array.map(prop(property)));
export const maxArrayProp = (property, array) => {
return array.reduce((acc, curr) => {
const propFn = prop(property);
const currentValue = propFn(curr);
const previousValue = propFn(acc);
return currentValue > previousValue ? curr : acc;
}, { [property]: 0 });
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1ob3RrZXlzL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUU7SUFDeEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBRW5CLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ3BCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzdCO0tBQ0o7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFZLEVBQUUsSUFBVyxFQUFFLEVBQUU7SUFDN0MsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN0QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFL0I7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7QUFFckM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDL0IsRUFBRSxDQUFDLE1BQU0sQ0FDTCxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWixHQUFHLE1BQU07SUFDVCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDM0MsQ0FBQyxFQUNGLEVBQUUsQ0FDTCxDQUFDO0FBRU47Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBYSxFQUFFLEVBQUUsQ0FDdEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN6QixPQUFPLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVuRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDNUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUNmLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNyRCxDQUFDLEVBQ0QsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUNwQixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24oeDogYW55KTogeCBpcyBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmV4cG9ydCBjb25zdCBpbnZlcnQgPSBvYmogPT4ge1xuICAgIGNvbnN0IG5ld19vYmogPSB7fTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmopIHtcbiAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgbmV3X29ialtvYmpbcHJvcF1dID0gcHJvcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3X29iajtcbn07XG5cbmV4cG9ydCBjb25zdCBhbnkgPSAoZm46IEZ1bmN0aW9uLCBsaXN0OiBhbnlbXSkgPT4ge1xuICAgIGxldCBpZHggPSAwO1xuICAgIHdoaWxlIChpZHggPCBsaXN0Lmxlbmd0aCkge1xuICAgICAgICBpZiAoZm4obGlzdFtpZHhdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWR4ICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpZGVudGl0eSA9IHggPT4geDtcblxuLyoqXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0geFxuICogQHJldHVybnMgYm9vbGVhblxuICovXG5leHBvcnQgY29uc3QgaXNOaWxsID0geCA9PiB4ID09IG51bGw7XG5cbi8qKlxuICogQGlnbm9yZVxuICogQHBhcmFtIHhzXG4gKiBAcGFyYW0ga2V5XG4gKiBAcmV0dXJucyBhbnlcbiAqL1xuZXhwb3J0IGNvbnN0IGdyb3VwQnkgPSAoeHMsIGtleSkgPT5cbiAgICB4cy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIHgpID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBbeFtrZXldXTogWy4uLihyZXN1bHRbeFtrZXldXSB8fCBbXSksIHhdXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG5cbi8qKlxuICogQGlnbm9yZVxuICogQHBhcmFtIGZpcnN0XG4gKiBAcGFyYW0gc2Vjb25kXG4gKiBAcmV0dXJucyBhbnlbXVxuICovXG5leHBvcnQgY29uc3QgZGlmZmVyZW5jZSA9IChmaXJzdDogYW55W10sIHNlY29uZDogYW55W10pID0+XG4gICAgZmlyc3QuZmlsdGVyKGl0ZW0gPT4gIXNlY29uZC5pbmNsdWRlcyhpdGVtKSk7XG5cbi8qKlxuICogQGlnbm9yZVxuICogQHBhcmFtIHByZWRzXG4gKiBAcmV0dXJucyAoLi4uYXJncykgPT4gYm9vbGVhbjtcbiAqL1xuZXhwb3J0IGNvbnN0IGFsbFBhc3MgPSBwcmVkcyA9PiAoLi4uYXJncykgPT4ge1xuICAgIGxldCBpZHggPSAwO1xuICAgIGNvbnN0IGxlbiA9IHByZWRzLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4IDwgbGVuKSB7XG4gICAgICAgIGlmICghcHJlZHNbaWR4XS5hcHBseSh0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlkeCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgY29uc3QgcHJvcCA9IHByb3AgPT4gb2JqZWN0ID0+IG9iamVjdFtwcm9wXTtcblxuY29uc3QgbWluTWF4QXJyYXlQcm9wID0gdHlwZSA9PiAocHJvcGVydHksIGFycmF5KSA9PlxuICAgIE1hdGhbdHlwZV0uYXBwbHkoTWF0aCwgYXJyYXkubWFwKHByb3AocHJvcGVydHkpKSk7XG5cbmV4cG9ydCBjb25zdCBtYXhBcnJheVByb3AgPSAocHJvcGVydHksIGFycmF5KSA9PiB7XG4gICAgcmV0dXJuIGFycmF5LnJlZHVjZShcbiAgICAgICAgKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcEZuID0gcHJvcChwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBwcm9wRm4oY3Vycik7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gcHJvcEZuKGFjYyk7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlID4gcHJldmlvdXNWYWx1ZSA/IGN1cnIgOiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHsgW3Byb3BlcnR5XTogMCB9XG4gICAgKTtcbn07XG4iXX0=