@treeview/ngx-treeview
Version:
An Angular Boostrap treeview component
82 lines • 8.14 kB
JavaScript
import { concat, isNil, pull } from 'lodash';
export const TreeviewHelper = {
findItem,
findItemInList,
findParent,
removeItem,
concatSelection
};
function findItem(root, value) {
if (isNil(root)) {
return undefined;
}
if (root.value === value) {
return root;
}
if (root.children) {
for (const child of root.children) {
const foundItem = findItem(child, value);
if (foundItem) {
return foundItem;
}
}
}
return undefined;
}
function findItemInList(list, value) {
if (isNil(list)) {
return undefined;
}
for (const item of list) {
const foundItem = findItem(item, value);
if (foundItem) {
return foundItem;
}
}
return undefined;
}
function findParent(root, item) {
if (isNil(root) || isNil(root.children)) {
return undefined;
}
for (const child of root.children) {
if (child === item) {
return root;
}
else {
const parent = findParent(child, item);
if (parent) {
return parent;
}
}
}
return undefined;
}
function removeItem(root, item) {
const parent = findParent(root, item);
if (parent) {
pull(parent.children, item);
if (parent.children.length === 0) {
parent.children = undefined;
}
else {
parent.correctChecked();
}
return true;
}
return false;
}
function concatSelection(items, checked, unchecked) {
let checkedItems = [...checked];
let uncheckedItems = [...unchecked];
for (const item of items) {
const selection = item.getSelection();
checkedItems = concat(checkedItems, selection.checkedItems);
uncheckedItems = concat(uncheckedItems, selection.uncheckedItems);
}
return {
checked: checkedItems,
unchecked: uncheckedItems
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXctaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRyZWV2aWV3L3NyYy9saWIvaGVscGVycy90cmVldmlldy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzdDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixRQUFRO0lBQ1IsY0FBYztJQUNkLFVBQVU7SUFDVixVQUFVO0lBQ1YsZUFBZTtDQUNoQixDQUFDO0FBRUYsU0FBUyxRQUFRLENBQUMsSUFBa0IsRUFBRSxLQUFVO0lBQzlDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQW9CLEVBQUUsS0FBVTtJQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7UUFDdkIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0tBQ0Y7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBa0IsRUFBRSxJQUFrQjtJQUN4RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWtCLEVBQUUsSUFBa0I7SUFDeEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1NBQzdCO2FBQU07WUFDTCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7UUFDRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBcUIsRUFBRSxPQUF1QixFQUFFLFNBQXlCO0lBQ2hHLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNoQyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDbkU7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFlBQVk7UUFDckIsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXQsIGlzTmlsLCBwdWxsIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgVHJlZXZpZXdJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3RyZWV2aWV3LWl0ZW0nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRyZWV2aWV3SGVscGVyID0ge1xyXG4gIGZpbmRJdGVtLFxyXG4gIGZpbmRJdGVtSW5MaXN0LFxyXG4gIGZpbmRQYXJlbnQsXHJcbiAgcmVtb3ZlSXRlbSxcclxuICBjb25jYXRTZWxlY3Rpb25cclxufTtcclxuXHJcbmZ1bmN0aW9uIGZpbmRJdGVtKHJvb3Q6IFRyZWV2aWV3SXRlbSwgdmFsdWU6IGFueSk6IFRyZWV2aWV3SXRlbSB7XHJcbiAgaWYgKGlzTmlsKHJvb3QpKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgaWYgKHJvb3QudmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICByZXR1cm4gcm9vdDtcclxuICB9XHJcblxyXG4gIGlmIChyb290LmNoaWxkcmVuKSB7XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHJvb3QuY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgZm91bmRJdGVtID0gZmluZEl0ZW0oY2hpbGQsIHZhbHVlKTtcclxuICAgICAgaWYgKGZvdW5kSXRlbSkge1xyXG4gICAgICAgIHJldHVybiBmb3VuZEl0ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRJdGVtSW5MaXN0KGxpc3Q6IFRyZWV2aWV3SXRlbVtdLCB2YWx1ZTogYW55KTogVHJlZXZpZXdJdGVtIHtcclxuICBpZiAoaXNOaWwobGlzdCkpIHtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xyXG4gICAgY29uc3QgZm91bmRJdGVtID0gZmluZEl0ZW0oaXRlbSwgdmFsdWUpO1xyXG4gICAgaWYgKGZvdW5kSXRlbSkge1xyXG4gICAgICByZXR1cm4gZm91bmRJdGVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHVuZGVmaW5lZDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFBhcmVudChyb290OiBUcmVldmlld0l0ZW0sIGl0ZW06IFRyZWV2aWV3SXRlbSk6IFRyZWV2aWV3SXRlbSB7XHJcbiAgaWYgKGlzTmlsKHJvb3QpIHx8IGlzTmlsKHJvb3QuY2hpbGRyZW4pKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XHJcbiAgICBpZiAoY2hpbGQgPT09IGl0ZW0pIHtcclxuICAgICAgcmV0dXJuIHJvb3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50KGNoaWxkLCBpdGVtKTtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZUl0ZW0ocm9vdDogVHJlZXZpZXdJdGVtLCBpdGVtOiBUcmVldmlld0l0ZW0pOiBib29sZWFuIHtcclxuICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50KHJvb3QsIGl0ZW0pO1xyXG4gIGlmIChwYXJlbnQpIHtcclxuICAgIHB1bGwocGFyZW50LmNoaWxkcmVuLCBpdGVtKTtcclxuICAgIGlmIChwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHBhcmVudC5jaGlsZHJlbiA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmVudC5jb3JyZWN0Q2hlY2tlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbmNhdFNlbGVjdGlvbihpdGVtczogVHJlZXZpZXdJdGVtW10sIGNoZWNrZWQ6IFRyZWV2aWV3SXRlbVtdLCB1bmNoZWNrZWQ6IFRyZWV2aWV3SXRlbVtdKTogeyBbazogc3RyaW5nXTogVHJlZXZpZXdJdGVtW10gfSB7XHJcbiAgbGV0IGNoZWNrZWRJdGVtcyA9IFsuLi5jaGVja2VkXTtcclxuICBsZXQgdW5jaGVja2VkSXRlbXMgPSBbLi4udW5jaGVja2VkXTtcclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGl0ZW0uZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBjaGVja2VkSXRlbXMgPSBjb25jYXQoY2hlY2tlZEl0ZW1zLCBzZWxlY3Rpb24uY2hlY2tlZEl0ZW1zKTtcclxuICAgIHVuY2hlY2tlZEl0ZW1zID0gY29uY2F0KHVuY2hlY2tlZEl0ZW1zLCBzZWxlY3Rpb24udW5jaGVja2VkSXRlbXMpO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2hlY2tlZDogY2hlY2tlZEl0ZW1zLFxyXG4gICAgdW5jaGVja2VkOiB1bmNoZWNrZWRJdGVtc1xyXG4gIH07XHJcbn1cclxuIl19