1e81721a8786ca6928eec7688d2cf09a6267d7e132c4665c0bbf697d55f68e90def74e66cba5a183d7968fbb7d84d2c96ca4cf6401446776197f608dfdabda 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var shared = require('@vue/shared');
  5. function useFilter(props, tree) {
  6. const hiddenNodeKeySet = vue.ref(/* @__PURE__ */ new Set([]));
  7. const hiddenExpandIconKeySet = vue.ref(/* @__PURE__ */ new Set([]));
  8. const filterable = vue.computed(() => {
  9. return shared.isFunction(props.filterMethod);
  10. });
  11. function doFilter(query) {
  12. var _a;
  13. if (!filterable.value) {
  14. return;
  15. }
  16. const expandKeySet = /* @__PURE__ */ new Set();
  17. const hiddenExpandIconKeys = hiddenExpandIconKeySet.value;
  18. const hiddenKeys = hiddenNodeKeySet.value;
  19. const family = [];
  20. const nodes = ((_a = tree.value) == null ? void 0 : _a.treeNodes) || [];
  21. const filter = props.filterMethod;
  22. hiddenKeys.clear();
  23. function traverse(nodes2) {
  24. nodes2.forEach((node) => {
  25. family.push(node);
  26. if (filter == null ? void 0 : filter(query, node.data, node)) {
  27. family.forEach((member) => {
  28. expandKeySet.add(member.key);
  29. member.expanded = true;
  30. });
  31. } else {
  32. node.expanded = false;
  33. if (node.isLeaf) {
  34. hiddenKeys.add(node.key);
  35. }
  36. }
  37. const children = node.children;
  38. if (children) {
  39. traverse(children);
  40. }
  41. if (!node.isLeaf) {
  42. if (!expandKeySet.has(node.key)) {
  43. hiddenKeys.add(node.key);
  44. } else if (children) {
  45. let allHidden = true;
  46. for (const childNode of children) {
  47. if (!hiddenKeys.has(childNode.key)) {
  48. allHidden = false;
  49. break;
  50. }
  51. }
  52. if (allHidden) {
  53. hiddenExpandIconKeys.add(node.key);
  54. } else {
  55. hiddenExpandIconKeys.delete(node.key);
  56. }
  57. }
  58. }
  59. family.pop();
  60. });
  61. }
  62. traverse(nodes);
  63. return expandKeySet;
  64. }
  65. function isForceHiddenExpandIcon(node) {
  66. return hiddenExpandIconKeySet.value.has(node.key);
  67. }
  68. return {
  69. hiddenExpandIconKeySet,
  70. hiddenNodeKeySet,
  71. doFilter,
  72. isForceHiddenExpandIcon
  73. };
  74. }
  75. exports.useFilter = useFilter;
  76. //# sourceMappingURL=useFilter.js.map