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