UNPKG

carbon-components-angular

Version:
41 lines 4.9 kB
import { fromEvent } from "rxjs"; import { debounceTime, map, filter } from "rxjs/operators"; /** * returns an observable bound to keydown events that * filters to a single element where the first letter of * it's textContent matches the key pressed * * @param target element to watch * @param elements elements to search */ export function watchFocusJump(target, elements) { return fromEvent(target, "keydown") .pipe(debounceTime(150), map((ev) => { let el = elements.find((itemEl) => itemEl.textContent.trim().toLowerCase().startsWith(ev.key)); if (el) { return el; } }), filter(el => !!el)); } /** bundle of functions to aid in manipulating tree structures */ export const treetools = { /** finds an item in a set of items and returns the item and path to the item as an array */ find: function (items, itemToFind, path = []) { let found; for (let i of items) { if (i === itemToFind) { path.push(i); found = i; } if (i.items && !found) { path.push(i); found = this.find(i.items, itemToFind, path).found; if (!found) { path = []; } } } return { found, path }; } }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd250b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kcm9wZG93bi9kcm9wZG93bnRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0Q7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBbUIsRUFBRSxRQUFRO0lBQzNELE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7U0FDakMsSUFBSSxDQUNKLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsR0FBRyxDQUFDLENBQUMsRUFBaUIsRUFBRSxFQUFFO1FBQ3pCLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLEVBQUUsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7SUFDdkIsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDeEIsNEZBQTRGO0lBQzVGLElBQUksRUFBRSxVQUFTLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDMUMsSUFBSSxLQUFLLENBQUM7UUFDVixLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsS0FBSyxHQUFHLENBQUMsQ0FBQzthQUNWO1lBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNiLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO2lCQUFFO2FBQzFCO1NBQ0Q7UUFDRCxPQUFPLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuLyoqXG4gKiByZXR1cm5zIGFuIG9ic2VydmFibGUgYm91bmQgdG8ga2V5ZG93biBldmVudHMgdGhhdFxuICogZmlsdGVycyB0byBhIHNpbmdsZSBlbGVtZW50IHdoZXJlIHRoZSBmaXJzdCBsZXR0ZXIgb2ZcbiAqIGl0J3MgdGV4dENvbnRlbnQgbWF0Y2hlcyB0aGUga2V5IHByZXNzZWRcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IGVsZW1lbnQgdG8gd2F0Y2hcbiAqIEBwYXJhbSBlbGVtZW50cyBlbGVtZW50cyB0byBzZWFyY2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoRm9jdXNKdW1wKHRhcmdldDogSFRNTEVsZW1lbnQsIGVsZW1lbnRzKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudD4ge1xuXHRyZXR1cm4gZnJvbUV2ZW50KHRhcmdldCwgXCJrZXlkb3duXCIpXG5cdFx0LnBpcGUoXG5cdFx0XHRkZWJvdW5jZVRpbWUoMTUwKSxcblx0XHRcdG1hcCgoZXY6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0bGV0IGVsID0gZWxlbWVudHMuZmluZCgoaXRlbUVsKSA9PlxuXHRcdFx0XHRcdGl0ZW1FbC50ZXh0Q29udGVudC50cmltKCkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGV2LmtleSkpO1xuXHRcdFx0XHRpZiAoZWwpIHsgcmV0dXJuIGVsOyB9XG5cdFx0XHR9KSxcblx0XHRcdGZpbHRlcihlbCA9PiAhIWVsKVxuXHRcdCk7XG59XG5cbi8qKiBidW5kbGUgb2YgZnVuY3Rpb25zIHRvIGFpZCBpbiBtYW5pcHVsYXRpbmcgdHJlZSBzdHJ1Y3R1cmVzICovXG5leHBvcnQgY29uc3QgdHJlZXRvb2xzID0ge1xuXHQvKiogZmluZHMgYW4gaXRlbSBpbiBhIHNldCBvZiBpdGVtcyBhbmQgcmV0dXJucyB0aGUgaXRlbSBhbmQgcGF0aCB0byB0aGUgaXRlbSBhcyBhbiBhcnJheSAqL1xuXHRmaW5kOiBmdW5jdGlvbihpdGVtcywgaXRlbVRvRmluZCwgcGF0aCA9IFtdKSB7XG5cdFx0bGV0IGZvdW5kO1xuXHRcdGZvciAobGV0IGkgb2YgaXRlbXMpIHtcblx0XHRcdGlmIChpID09PSBpdGVtVG9GaW5kKSB7XG5cdFx0XHRcdHBhdGgucHVzaChpKTtcblx0XHRcdFx0Zm91bmQgPSBpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGkuaXRlbXMgJiYgIWZvdW5kKSB7XG5cdFx0XHRcdHBhdGgucHVzaChpKTtcblx0XHRcdFx0Zm91bmQgPSB0aGlzLmZpbmQoaS5pdGVtcywgaXRlbVRvRmluZCwgcGF0aCkuZm91bmQ7XG5cdFx0XHRcdGlmICghZm91bmQpIHsgcGF0aCA9IFtdOyB9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB7Zm91bmQsIHBhdGh9O1xuXHR9XG59O1xuIl19