{"version":3,"file":"tree.mjs","sources":["../../../../../../../../packages/components/table/src/store/tree.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@hd-front-end/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n  children?: string[]\n  lazy?: boolean\n  loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n  const expandRowKeys = ref<Array<string>>([])\n  const treeData = ref<Record<string, TreeData>>({})\n  const indent = ref(16)\n  const lazy = ref(false)\n  const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n  const lazyColumnIdentifier = ref('hasChildren')\n  const childrenColumnName = ref('children')\n  const checkStrictly = ref(false)\n  const instance = getCurrentInstance() as Table<T>\n  const normalizedData = computed(() => {\n    if (!watcherData.rowKey.value) return {}\n    const data = watcherData.data.value || []\n    return normalize(data)\n  })\n  const normalizedLazyNode = computed(() => {\n    const rowKey = watcherData.rowKey.value\n    const keys = Object.keys(lazyTreeNodeMap.value)\n    const res: Record<string, { children: string[] }> = {}\n    if (!keys.length) return res\n    keys.forEach((key) => {\n      if (lazyTreeNodeMap.value[key].length) {\n        const item: typeof res[number] = { children: [] }\n        lazyTreeNodeMap.value[key].forEach((row) => {\n          const currentRowKey = getRowIdentity(row, rowKey)\n          item.children.push(currentRowKey)\n          if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n            res[currentRowKey] = { children: [] }\n          }\n        })\n        res[key] = item\n      }\n    })\n    return res\n  })\n\n  const normalize = (data: T[]) => {\n    const rowKey = watcherData.rowKey.value\n    const res = {} as Record<string, TreeData>\n    walkTreeNode(\n      data,\n      (parent, children, level) => {\n        const parentId = getRowIdentity(parent, rowKey)\n        if (isArray(children)) {\n          res[parentId] = {\n            children: children.map((row) => getRowIdentity(row, rowKey)),\n            level,\n          }\n        } else if (lazy.value) {\n          // 当 children 不存在且 lazy 为 true，该节点即为懒加载的节点\n          res[parentId] = {\n            children: [],\n            lazy: true,\n            level,\n          }\n        }\n      },\n      childrenColumnName.value,\n      lazyColumnIdentifier.value,\n      lazy.value\n    )\n    return res\n  }\n\n  const updateTreeData = (\n    ifChangeExpandRowKeys = false,\n    ifExpandAll?: boolean\n  ) => {\n    ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n    const nested = normalizedData.value\n    const normalizedLazyNode_ = normalizedLazyNode.value\n    const keys = Object.keys(nested)\n    const newTreeData: Record<string, TreeData> = {}\n    if (keys.length) {\n      const oldTreeData = unref(treeData)\n      const rootLazyRowKeys: string[] = []\n      const getExpanded = (oldValue: TreeData, key: string) => {\n        if (ifChangeExpandRowKeys) {\n          if (expandRowKeys.value) {\n            return ifExpandAll || expandRowKeys.value.includes(key)\n          } else {\n            return !!(ifExpandAll || oldValue?.expanded)\n          }\n        } else {\n          const included =\n            ifExpandAll ||\n            (expandRowKeys.value && expandRowKeys.value.includes(key))\n          return !!(oldValue?.expanded || included)\n        }\n      }\n      // 合并 expanded 与 display，确保数据刷新后，状态不变\n      keys.forEach((key) => {\n        const oldValue = oldTreeData[key]\n        const newValue = { ...nested[key] }\n        newValue.expanded = getExpanded(oldValue, key)\n        if (newValue.lazy) {\n          const { loaded = false, loading = false } = oldValue || {}\n          newValue.loaded = !!loaded\n          newValue.loading = !!loading\n          rootLazyRowKeys.push(key)\n        }\n        newTreeData[key] = newValue\n      })\n      // 根据懒加载数据更新 treeData\n      const lazyKeys = Object.keys(normalizedLazyNode_)\n      if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n        lazyKeys.forEach((key) => {\n          const oldValue = oldTreeData[key]\n          const lazyNodeChildren = normalizedLazyNode_[key].children\n          if (rootLazyRowKeys.includes(key)) {\n            // 懒加载的 root 节点，更新一下原有的数据，原来的 children 一定是空数组\n            if (newTreeData[key].children?.length !== 0) {\n              throw new Error('[ElTable]children must be an empty array.')\n            }\n            newTreeData[key].children = lazyNodeChildren\n          } else {\n            const { loaded = false, loading = false } = oldValue || {}\n            newTreeData[key] = {\n              lazy: true,\n              loaded: !!loaded,\n              loading: !!loading,\n              expanded: getExpanded(oldValue, key),\n              children: lazyNodeChildren,\n              level: undefined,\n            }\n          }\n        })\n      }\n    }\n    treeData.value = newTreeData\n    instance.store?.updateTableScrollY()\n  }\n\n  watch(\n    () => expandRowKeys.value,\n    () => {\n      updateTreeData(true)\n    }\n  )\n\n  watch(\n    () => normalizedData.value,\n    () => {\n      updateTreeData()\n    }\n  )\n  watch(\n    () => normalizedLazyNode.value,\n    () => {\n      updateTreeData()\n    }\n  )\n\n  const updateTreeExpandKeys = (value: string[]) => {\n    expandRowKeys.value = value\n    updateTreeData()\n  }\n  const isUseLazy = (data: TreeData) => {\n    return lazy.value && data && 'loaded' in data && !data.loaded\n  }\n  const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n    instance.store.assertRowKey()\n\n    const rowKey = watcherData.rowKey.value\n    const id = getRowIdentity(row, rowKey)\n    const data = id && treeData.value[id]\n    if (id && data && 'expanded' in data) {\n      const oldExpanded = data.expanded\n      expanded = isUndefined(expanded) ? !data.expanded : expanded\n      treeData.value[id].expanded = expanded\n      if (oldExpanded !== expanded) {\n        instance.emit('expand-change', row, expanded)\n      }\n      isUseLazy(data) && loadData(row, id, data)\n      instance.store.updateTableScrollY()\n    }\n  }\n\n  const loadOrToggle = (row: T) => {\n    instance.store.assertRowKey()\n    const rowKey = watcherData.rowKey.value\n    const id = getRowIdentity(row, rowKey)\n    const data = treeData.value[id]\n    if (isUseLazy(data)) {\n      loadData(row, id, data)\n    } else {\n      toggleTreeExpansion(row, undefined)\n    }\n  }\n\n  const loadData = (row: T, key: string, treeNode: TreeNode) => {\n    const { load } = instance.props as unknown as TableProps<T>\n    if (load && !treeData.value[key].loaded) {\n      treeData.value[key].loading = true\n      load(row, treeNode, (data) => {\n        if (!isArray(data)) {\n          throw new TypeError('[ElTable] data must be an array')\n        }\n        treeData.value[key].loading = false\n        treeData.value[key].loaded = true\n        treeData.value[key].expanded = true\n        if (data.length) {\n          lazyTreeNodeMap.value[key] = data\n        }\n        instance.emit('expand-change', row, true)\n      })\n    }\n  }\n\n  const updateKeyChildren = (key: string, data: T[]) => {\n    const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n    if (!lazy) return\n    if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n    if (lazyTreeNodeMap.value[key]) {\n      lazyTreeNodeMap.value[key] = data\n    }\n  }\n\n  return {\n    loadData,\n    loadOrToggle,\n    toggleTreeExpansion,\n    updateTreeExpandKeys,\n    updateTreeData,\n    updateKeyChildren,\n    normalize,\n    states: {\n      expandRowKeys,\n      treeData,\n      indent,\n      lazy,\n      lazyTreeNodeMap,\n      lazyColumnIdentifier,\n      childrenColumnName,\n      checkStrictly,\n    },\n  }\n}\n\nexport default useTree\n"],"names":["_a","lazy"],"mappings":"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"}