| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 'use strict';
- 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);
- member.expanded = true;
- });
- } else {
- node.expanded = false;
- 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
|