{"version":3,"file":"useTree.mjs","sources":["../../../../../../../packages/components/tree-v2/src/composables/useTree.ts"],"sourcesContent":["// @ts-nocheck\nimport { computed, nextTick, ref, shallowRef, watch } from 'vue'\nimport { isObject } from '@bigin/utils'\nimport {\n  CURRENT_CHANGE,\n  NODE_CLICK,\n  NODE_COLLAPSE,\n  NODE_EXPAND,\n  TreeOptionsEnum,\n} from '../virtual-tree'\nimport { useCheck } from './useCheck'\nimport { useFilter } from './useFilter'\nimport type {\n  Tree,\n  TreeData,\n  TreeKey,\n  TreeNode,\n  TreeNodeData,\n  TreeProps,\n} from '../types'\n\nexport function useTree(props: TreeProps, emit) {\n  const expandedKeySet = ref<Set<TreeKey>>(new Set(props.defaultExpandedKeys))\n  const currentKey = ref<TreeKey | undefined>()\n  const tree = shallowRef<Tree | undefined>()\n\n  watch(\n    () => props.currentNodeKey,\n    (key) => {\n      currentKey.value = key\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    () => props.data,\n    (data: TreeData) => {\n      setData(data)\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  const {\n    isIndeterminate,\n    isChecked,\n    toggleCheckbox,\n    getCheckedKeys,\n    getCheckedNodes,\n    getHalfCheckedKeys,\n    getHalfCheckedNodes,\n    setChecked,\n    setCheckedKeys,\n  } = useCheck(props, tree)\n\n  const { doFilter, hiddenNodeKeySet, isForceHiddenExpandIcon } = useFilter(\n    props,\n    tree\n  )\n\n  const valueKey = computed(() => {\n    return props.props?.value || TreeOptionsEnum.KEY\n  })\n  const childrenKey = computed(() => {\n    return props.props?.children || TreeOptionsEnum.CHILDREN\n  })\n  const disabledKey = computed(() => {\n    return props.props?.disabled || TreeOptionsEnum.DISABLED\n  })\n  const labelKey = computed(() => {\n    return props.props?.label || TreeOptionsEnum.LABEL\n  })\n\n  const flattenTree = computed(() => {\n    const expandedKeys = expandedKeySet.value\n    const hiddenKeys = hiddenNodeKeySet.value\n    const flattenNodes: TreeNode[] = []\n    const nodes = (tree.value && tree.value.treeNodes) || []\n    function traverse() {\n      const stack: TreeNode[] = []\n      for (let i = nodes.length - 1; i >= 0; --i) {\n        stack.push(nodes[i])\n      }\n      while (stack.length) {\n        const node = stack.pop()\n        if (!node) continue\n        if (!hiddenKeys.has(node.key)) {\n          flattenNodes.push(node)\n        }\n        // Only \"visible\" nodes will be rendered\n        if (expandedKeys.has(node.key)) {\n          const children = node.children\n          if (children) {\n            const length = children.length\n            for (let i = length - 1; i >= 0; --i) {\n              stack.push(children[i])\n            }\n          }\n        }\n      }\n    }\n    traverse()\n    return flattenNodes\n  })\n\n  const isNotEmpty = computed(() => {\n    return flattenTree.value.length > 0\n  })\n\n  function createTree(data: TreeData): Tree {\n    const treeNodeMap: Map<TreeKey, TreeNode> = new Map()\n    const levelTreeNodeMap: Map<number, TreeNode[]> = new Map()\n    let maxLevel = 1\n    function traverse(\n      nodes: TreeData,\n      level = 1,\n      parent: TreeNode | undefined = undefined\n    ) {\n      const siblings: TreeNode[] = []\n      for (const rawNode of nodes) {\n        const value = getKey(rawNode)\n        const node: TreeNode = {\n          level,\n          key: value,\n          data: rawNode,\n        }\n        node.label = getLabel(rawNode)\n        node.parent = parent\n        const children = getChildren(rawNode)\n        node.disabled = getDisabled(rawNode)\n        node.isLeaf = !children || children.length === 0\n        if (children && children.length) {\n          node.children = traverse(children, level + 1, node)\n        }\n        siblings.push(node)\n        treeNodeMap.set(value, node)\n        if (!levelTreeNodeMap.has(level)) {\n          levelTreeNodeMap.set(level, [])\n        }\n        levelTreeNodeMap.get(level)?.push(node)\n      }\n      if (level > maxLevel) {\n        maxLevel = level\n      }\n      return siblings\n    }\n    const treeNodes: TreeNode[] = traverse(data)\n    return {\n      treeNodeMap,\n      levelTreeNodeMap,\n      maxLevel,\n      treeNodes,\n    }\n  }\n\n  function filter(query: string) {\n    const keys = doFilter(query)\n    if (keys) {\n      expandedKeySet.value = keys\n    }\n  }\n\n  function getChildren(node: TreeNodeData): TreeNodeData[] {\n    return node[childrenKey.value]\n  }\n\n  function getKey(node: TreeNodeData): TreeKey {\n    if (!node) {\n      return ''\n    }\n    return node[valueKey.value]\n  }\n\n  function getDisabled(node: TreeNodeData): boolean {\n    return node[disabledKey.value]\n  }\n\n  function getLabel(node: TreeNodeData): string {\n    return node[labelKey.value]\n  }\n\n  function toggleExpand(node: TreeNode) {\n    const expandedKeys = expandedKeySet.value\n    if (expandedKeys.has(node.key)) {\n      collapseNode(node)\n    } else {\n      expandNode(node)\n    }\n  }\n\n  function setExpandedKeys(keys: TreeKey[]) {\n    expandedKeySet.value = new Set(keys)\n  }\n\n  function handleNodeClick(node: TreeNode, e: MouseEvent) {\n    emit(NODE_CLICK, node.data, node, e)\n    handleCurrentChange(node)\n    if (props.expandOnClickNode) {\n      toggleExpand(node)\n    }\n    if (props.showCheckbox && props.checkOnClickNode && !node.disabled) {\n      toggleCheckbox(node, !isChecked(node), true)\n    }\n  }\n\n  function handleCurrentChange(node: TreeNode) {\n    if (!isCurrent(node)) {\n      currentKey.value = node.key\n      emit(CURRENT_CHANGE, node.data, node)\n    }\n  }\n\n  function handleNodeCheck(node: TreeNode, checked: boolean) {\n    toggleCheckbox(node, checked)\n  }\n\n  function expandNode(node: TreeNode) {\n    const keySet = expandedKeySet.value\n    if (tree.value && props.accordion) {\n      // whether only one node among the same level can be expanded at one time\n      const { treeNodeMap } = tree.value\n      keySet.forEach((key) => {\n        const treeNode = treeNodeMap.get(key)\n        if (node && node.level === treeNode.level) {\n          keySet.delete(key)\n        }\n      })\n    }\n    keySet.add(node.key)\n    emit(NODE_EXPAND, node.data, node)\n  }\n\n  function collapseNode(node: TreeNode) {\n    expandedKeySet.value.delete(node.key)\n    emit(NODE_COLLAPSE, node.data, node)\n  }\n\n  function isExpanded(node: TreeNode): boolean {\n    return expandedKeySet.value.has(node.key)\n  }\n\n  function isDisabled(node: TreeNode): boolean {\n    return !!node.disabled\n  }\n\n  function isCurrent(node: TreeNode): boolean {\n    const current = currentKey.value\n    return !!current && current === node.key\n  }\n\n  function getCurrentNode(): TreeNodeData | undefined {\n    if (!currentKey.value) return undefined\n    return tree.value?.treeNodeMap.get(currentKey.value)?.data\n  }\n\n  function getCurrentKey(): TreeKey | undefined {\n    return currentKey.value\n  }\n\n  function setCurrentKey(key: TreeKey): void {\n    currentKey.value = key\n  }\n\n  function setData(data: TreeData) {\n    nextTick(() => (tree.value = createTree(data)))\n  }\n\n  function getNode(data: TreeKey | TreeNodeData) {\n    const key = isObject(data) ? getKey(data) : data\n    return tree.value?.treeNodeMap.get(key)\n  }\n\n  return {\n    tree,\n    flattenTree,\n    isNotEmpty,\n    getKey,\n    getChildren,\n    toggleExpand,\n    toggleCheckbox,\n    isExpanded,\n    isChecked,\n    isIndeterminate,\n    isDisabled,\n    isCurrent,\n    isForceHiddenExpandIcon,\n    handleNodeClick,\n    handleNodeCheck,\n    // expose\n    getCurrentNode,\n    getCurrentKey,\n    setCurrentKey,\n    getCheckedKeys,\n    getCheckedNodes,\n    getHalfCheckedKeys,\n    getHalfCheckedNodes,\n    setChecked,\n    setCheckedKeys,\n    filter,\n    setData,\n    getNode,\n    expandNode,\n    collapseNode,\n    setExpandedKeys,\n  }\n}\n"],"names":[],"mappings":"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"}