{"version":3,"file":"useTreeSelect.mjs","sources":["../../../src/table/hooks/useTreeSelect.tsx"],"sourcesContent":["import { computed, toRefs, ref, Ref, watch } from 'vue';\nimport get from 'lodash/get';\nimport intersection from 'lodash/intersection';\nimport { TdEnhancedTableProps, TdPrimaryTableProps, TableRowData, PrimaryTableCol } from '../type';\nimport { KeysType, TableTreeDataMap, TreeDataMapType } from '../../_common/js/table/tree-store';\nimport useDefaultValue from '../../hooks/useDefaultValue';\n\nexport interface GetChildrenDataReturnValue {\n  allChildren: Array<any>;\n  allChildrenKeys: Array<string | number>;\n  leafNodeKeys: Array<string | number>;\n}\n\n// 保存子节点信息，避免重复计算\nexport const childrenMap = new Map();\n\nexport function getChildrenData(\n  treeDataMap: TreeDataMapType,\n  data: TableRowData,\n  keys: { childrenKey: string; rowKey: string },\n  r?: GetChildrenDataReturnValue,\n): GetChildrenDataReturnValue {\n  if (childrenMap.get(data)) return childrenMap.get(data);\n  const result = r || { allChildren: [], allChildrenKeys: [], leafNodeKeys: [] };\n  const children = get(data, keys.childrenKey);\n  if (!children || !children.length) return result;\n  const selectableChildren = children.filter(\n    (item: TableRowData) => !treeDataMap.get(get(item, keys.rowKey))?.disabled,\n  );\n  result.allChildren = [...new Set(result.allChildren.concat(selectableChildren))];\n  for (let i = 0, len = children.length; i < len; i++) {\n    const tItem = children[i];\n    const c = get(tItem, keys.childrenKey);\n    if (c?.length) {\n      const nextLevelData = getChildrenData(treeDataMap, tItem, keys, result);\n      result.allChildren = [...new Set(result.allChildren.concat(nextLevelData.allChildren))];\n    }\n  }\n  // 避免使用 forEach，减少上下文消耗\n  for (let i = 0, len = result.allChildren.length; i < len; i++) {\n    const item = result.allChildren[i];\n    const children = get(item, keys.childrenKey);\n    const rowValue = get(item, keys.rowKey);\n    result.allChildrenKeys.push(rowValue);\n    if (!children || !children.length) {\n      result.leafNodeKeys.push(rowValue);\n    }\n  }\n  result.allChildrenKeys = [...new Set(result.allChildrenKeys)];\n  result.leafNodeKeys = [...new Set(result.leafNodeKeys)];\n  return result;\n}\n\nexport interface RemoveParams {\n  // 当前选中的数据\n  selectedRowKeys: Array<string | number>;\n  // 需要移除的数据\n  removeKeys: Array<string | number>;\n}\n\nexport interface RemainData {\n  data: Array<any>;\n  keys: Array<string | number>;\n}\n\nexport function removeChildrenKeys(p: RemoveParams, r?: RemainData): RemainData {\n  const { selectedRowKeys, removeKeys } = p;\n  const result = r || { data: [], keys: [] };\n  for (let i = 0, len = selectedRowKeys.length; i < len; i++) {\n    const key = selectedRowKeys[i];\n    if (!removeKeys.includes(key)) {\n      result.keys.push(key);\n    }\n  }\n  return result;\n}\n\nexport interface GetKeyDataParams {\n  treeDataMap: TreeDataMapType;\n  data: Array<any>;\n  column: PrimaryTableCol;\n  keys: KeysType;\n}\n\nexport interface GetRowDataParams {\n  treeDataMap: TreeDataMapType;\n  selectedRowKeys: Array<string | number>;\n}\n\nexport function getRowDataByKeys(p: GetRowDataParams) {\n  const { treeDataMap, selectedRowKeys } = p;\n  const result = [];\n  for (let i = 0, len = selectedRowKeys.length; i < len; i++) {\n    const key = selectedRowKeys[i];\n    result.push(treeDataMap.get(key));\n  }\n  return result;\n}\n\ntype SelectChangeParams = Parameters<TdPrimaryTableProps['onSelectChange']>;\n\nexport default function useTreeSelect(props: TdEnhancedTableProps, treeDataMap: Ref<TableTreeDataMap>) {\n  const { selectedRowKeys, tree, data, indeterminateSelectedRowKeys } = toRefs(props);\n  // 半选状态的节点：子节点选中至少一个，且没有全部选中\n  const tIndeterminateSelectedRowKeys = ref<(string | number)[]>([]);\n\n  const [tSelectedRowKeys, setTSelectedRowKeys] = useDefaultValue(\n    selectedRowKeys,\n    props.defaultSelectedRowKeys || [],\n    props.onSelectChange,\n    'selectedRowKeys',\n  );\n  const rowDataKeys = computed(() => ({\n    rowKey: props.rowKey || 'id',\n    childrenKey: props.tree?.childrenKey || 'children',\n  }));\n\n  watch([tree, treeDataMap, data, tSelectedRowKeys], ([tree, treeDataMap]) => {\n    if (!tree || !treeDataMap.size || tree.checkStrictly) return;\n    updateIndeterminateState();\n  });\n\n  function updateIndeterminateState() {\n    if (!tree.value || tree.value.checkStrictly) return;\n    if (!tSelectedRowKeys.value.length) {\n      tIndeterminateSelectedRowKeys.value = [];\n      return;\n    }\n    const keys: Array<string | number> = [];\n    const parentMap: { [key: string | number]: any[] } = {};\n    for (let i = 0, len = tSelectedRowKeys.value.length; i < len; i++) {\n      const rowValue = tSelectedRowKeys.value[i];\n      const state = treeDataMap.value.get(rowValue);\n      if (!state) continue;\n      const children = get(state.row, rowDataKeys.value.childrenKey);\n      // 根据选中的叶子结点计算父节点半选状态\n      if (!children || !children.length) {\n        let parentTmp = state.parent;\n        while (parentTmp) {\n          if (!parentMap[parentTmp.id]) {\n            parentMap[parentTmp.id] = [];\n          }\n          parentMap[parentTmp.id].push(state.row);\n          const checkedLength = parentMap[parentTmp.id].length;\n          const { allChildrenKeys } = getChildrenData(treeDataMap.value, parentTmp.row, rowDataKeys.value);\n          const parentTmpIndex = keys.indexOf(parentTmp.id);\n          const selectedIndex = tSelectedRowKeys.value.indexOf(parentTmp.id);\n          if (checkedLength > 0 && checkedLength < allChildrenKeys.length && selectedIndex === -1) {\n            parentTmpIndex === -1 && keys.push(parentTmp.id);\n          } else {\n            parentTmpIndex !== -1 && keys.splice(parentTmpIndex, 1);\n          }\n          parentTmp = parentTmp.parent;\n        }\n      }\n    }\n    tIndeterminateSelectedRowKeys.value = keys;\n  }\n\n  function updateParentCheckedState(\n    selectedKeys: (string | number)[],\n    currentRowKey: string | number,\n    type: 'check' | 'uncheck',\n  ) {\n    if (!tree.value || tree.value.checkStrictly) return;\n    const keys = [...selectedKeys];\n    const state = treeDataMap.value.get(currentRowKey);\n    let parentTmp = state.parent;\n    while (parentTmp) {\n      const { leafNodeKeys } = getChildrenData(treeDataMap.value, parentTmp.row, rowDataKeys.value);\n      const checkedChildrenKeys = intersection(leafNodeKeys, selectedKeys);\n      const selectedIndex = keys.indexOf(parentTmp.id);\n      if (type === 'uncheck') {\n        selectedIndex !== -1 && keys.splice(selectedIndex, 1);\n      } else if (checkedChildrenKeys.length === leafNodeKeys.length) {\n        selectedIndex === -1 && keys.push(parentTmp.id);\n      }\n      parentTmp = parentTmp.parent;\n    }\n    return keys;\n  }\n\n  function onInnerSelectChange(rowKeys: SelectChangeParams[0], extraData: SelectChangeParams[1]) {\n    if (!tree.value || tree.value.checkStrictly) {\n      setTSelectedRowKeys(rowKeys, extraData);\n      return;\n    }\n    if (extraData.currentRowKey === 'CHECK_ALL_BOX') {\n      handleSelectAll(extraData);\n    } else {\n      handleSelect(rowKeys, extraData);\n    }\n  }\n\n  function handleSelectAll(extraData: SelectChangeParams[1]) {\n    const newRowKeys: Array<string | number> = [];\n    const newRowData: TableRowData[] = [];\n    if (extraData.type === 'check') {\n      const arr = [...treeDataMap.value.values()];\n      for (let i = 0, len = arr.length; i < len; i++) {\n        const item = arr[i];\n        if (!item.disabled) {\n          newRowData.push(item.row);\n          newRowKeys.push(get(item.row, rowDataKeys.value.rowKey));\n        }\n      }\n    }\n    const newExtraData = {\n      ...extraData,\n      selectedRowData: newRowData || [],\n    };\n    setTSelectedRowKeys(newRowKeys, newExtraData);\n  }\n\n  function handleSelect(rowKeys: SelectChangeParams[0], extraData: SelectChangeParams[1]) {\n    let newRowKeys = [...rowKeys];\n    if (props.tree?.checkStrictly === false) {\n      if (extraData?.type === 'check') {\n        const result = getChildrenData(treeDataMap.value, extraData.currentRowData, rowDataKeys.value);\n        const { allChildrenKeys } = result;\n        childrenMap.set(extraData.currentRowData, result);\n        newRowKeys = [...new Set(newRowKeys.concat(allChildrenKeys))];\n      } else if (extraData?.type === 'uncheck') {\n        const children = getChildrenData(treeDataMap.value, extraData.currentRowData, rowDataKeys.value);\n        const result = removeChildrenKeys({\n          selectedRowKeys: rowKeys,\n          removeKeys: children.allChildrenKeys,\n        });\n        newRowKeys = result.keys;\n      }\n    }\n    newRowKeys = updateParentCheckedState(newRowKeys, extraData.currentRowKey, extraData.type);\n    const newRowData = getRowDataByKeys({ treeDataMap: treeDataMap.value, selectedRowKeys: newRowKeys });\n    const newExtraData = {\n      ...extraData,\n      selectedRowData: newRowData,\n    };\n    setTSelectedRowKeys(newRowKeys, newExtraData);\n  }\n\n  return {\n    // 如果存在受控属性 indeterminateSelectedRowKeys 则优先使用；否则使用内部状态：tIndeterminateSelectedRowKeys\n    tIndeterminateSelectedRowKeys: indeterminateSelectedRowKeys.value\n      ? indeterminateSelectedRowKeys\n      : tIndeterminateSelectedRowKeys,\n    onInnerSelectChange,\n  };\n}\n"],"names":["allChildren","allChildrenKeys","leafNodeKeys","result","data","keys","tSelectedRowKeys","setTSelectedRowKeys","rowKey","childrenKey","watch","tree","treeDataMap","updateIndeterminateState","get","parentMap","intersection","handleSelect","newRowData","newRowKeys","selectedRowKeys","selectedRowData","tIndeterminateSelectedRowKeys","onInnerSelectChange"],"mappings":"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"}