element-plus
Version:
A Component Library for Vue 3
77 lines (72 loc) • 2.19 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var shared = require('@vue/shared');
function useFilter(props, tree) {
const hiddenNodeKeySet = vue.ref(/* @__PURE__ */ new Set([]));
const hiddenExpandIconKeySet = vue.ref(/* @__PURE__ */ new Set([]));
const filterable = vue.computed(() => {
return shared.isFunction(props.filterMethod);
});
function doFilter(query) {
var _a;
if (!filterable.value) {
return;
}
const expandKeySet = /* @__PURE__ */ new Set();
const hiddenExpandIconKeys = hiddenExpandIconKeySet.value;
const hiddenKeys = hiddenNodeKeySet.value;
const family = [];
const nodes = ((_a = tree.value) == null ? void 0 : _a.treeNodes) || [];
const filter = props.filterMethod;
hiddenKeys.clear();
function traverse(nodes2) {
nodes2.forEach((node) => {
family.push(node);
if (filter == null ? void 0 : filter(query, node.data, node)) {
family.forEach((member) => {
expandKeySet.add(member.key);
});
} else if (node.isLeaf) {
hiddenKeys.add(node.key);
}
const children = node.children;
if (children) {
traverse(children);
}
if (!node.isLeaf) {
if (!expandKeySet.has(node.key)) {
hiddenKeys.add(node.key);
} else if (children) {
let allHidden = true;
for (const childNode of children) {
if (!hiddenKeys.has(childNode.key)) {
allHidden = false;
break;
}
}
if (allHidden) {
hiddenExpandIconKeys.add(node.key);
} else {
hiddenExpandIconKeys.delete(node.key);
}
}
}
family.pop();
});
}
traverse(nodes);
return expandKeySet;
}
function isForceHiddenExpandIcon(node) {
return hiddenExpandIconKeySet.value.has(node.key);
}
return {
hiddenExpandIconKeySet,
hiddenNodeKeySet,
doFilter,
isForceHiddenExpandIcon
};
}
exports.useFilter = useFilter;
//# sourceMappingURL=useFilter.js.map
;