{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/tree/src/utils.ts"],"sourcesContent":["import { isArray, isNumber } from '../../../utils/is'\nimport { dfs } from '../../../utils/tree-traverse'\nimport type { TreeData, TreeNode } from './type'\n\n// 双向链表\nexport const transDataToNodes = (\n  data: TreeData[],\n  {\n    nodeValueMap,\n    nodeKeyMap,\n    checkStrictly\n  }: {\n    nodeValueMap: Map<string | number, TreeNode>\n    nodeKeyMap: Map<string | number, TreeNode>\n    checkStrictly: boolean\n  }\n) => {\n  const traverse = (data: TreeData[], parent: null | TreeNode, deep: number) => {\n    return data.map((item, index) => {\n      const node: TreeNode = {\n        key: '',\n        deep,\n        label: item.label,\n        value: item.value,\n        disabled: item.disabled,\n        unfold: false,\n        lasted: false,\n        filter: false,\n        hasChildren: false,\n        indents: [],\n        pathValue: [],\n        pathNode: [],\n        pathLabel: [],\n        data: item,\n        parent\n      }\n      const oldNode = nodeValueMap.get(item.value)\n\n      node.pathValue = parent ? parent.pathValue.concat([item.value]) : [item.value]\n      node.pathNode = parent ? parent.pathNode.concat([node]) : [node]\n      node.pathLabel = parent ? parent.pathLabel.concat([item.label]) : [item.label]\n      node.lasted = index === data.length - 1\n      node.indents = parent ? parent.indents.concat([!parent.lasted ? 1 : 0]) : []\n\n      const key = node.pathValue.join('-')\n      node.key = key\n\n      if (!checkStrictly) {\n        node.disabled = parent?.disabled ? parent.disabled : item.disabled\n      }\n\n      if (oldNode) {\n        node.unfold = oldNode.unfold\n      }\n\n      nodeValueMap.set(node.value, node)\n      nodeKeyMap.set(key, node)\n\n      if (isArray(item.children) && item.children.length) {\n        node.children = traverse(item.children, node, deep + 1)\n        node.hasChildren = true\n\n        if (!node.disabled) {\n          node.totalLeafNumber = node.children.reduce((pre, n) => {\n            if (isNumber(n.totalLeafNumber)) {\n              return pre + n.totalLeafNumber\n            }\n            if (n.disabled) {\n              return pre\n            }\n            return pre + (n.isLeaf ? 1 : 0)\n          }, 0)\n        }\n      } else {\n        node.isLeaf = true\n      }\n\n      return node\n    })\n  }\n\n  const nodes = traverse(data, null, 0)\n\n  return nodes\n}\n\n// 通过unfold状态的不同，来组装扁平化列表\nexport const transToFlattenNodes = (nodes: TreeNode[]) => {\n  const seqNodeList: TreeNode[] = []\n  const traverse = (nodes: TreeNode[]) => {\n    nodes.forEach((node) => {\n      if (!node.parent) {\n        seqNodeList.push(node)\n      }\n      if (node.parent && node.parent.unfold) {\n        seqNodeList.push(node)\n      }\n      if (node.unfold && node.children) {\n        traverse(node.children)\n      }\n    })\n  }\n\n  traverse(nodes)\n  return seqNodeList\n}\n\nexport const findParentNodeByValue = (\n  value: string | number,\n  nodes: TreeNode[]\n): TreeNode | null => {\n  let parent = null\n  dfs<TreeNode>(nodes, {\n    visitor(node, done) {\n      if (node.value === value) {\n        parent = node.parent as null\n        done && done()\n      }\n    }\n  })\n  return parent\n}\n\nexport const getCheckedStatus = (\n  node: TreeNode,\n  nodeKeys: string[] | undefined,\n  nodeKeyMap: Map<string, TreeNode> | undefined\n) => {\n  let checked = false\n  let indeterminate = false\n\n  if (node.isLeaf) {\n    if (nodeKeys?.includes(node.key)) {\n      checked = true\n    }\n  } else {\n    const reg = new RegExp(`^${node.key}(-|$)`)\n    const checkedLeafNumber = nodeKeys?.reduce((pre, key) => {\n      if (reg.test(key) && !nodeKeyMap?.get(key)?.disabled) {\n        return (pre as number) + 1\n      }\n      return pre\n    }, 0) as number\n\n    if (checkedLeafNumber >= (node.totalLeafNumber ?? 1) && checkedLeafNumber !== 0) {\n      checked = true\n    } else if (checkedLeafNumber > 0) {\n      indeterminate = true\n    }\n  }\n\n  return {\n    checked,\n    indeterminate\n  }\n}\n"],"names":["data","nodes","_a"],"mappings":"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"}