{"version":3,"file":"useTreeSelect.mjs","sources":["../../../../components/table/hooks/useTreeSelect.tsx"],"sourcesContent":["import { computed, toRefs, ref, Ref, watch } from 'vue';\nimport { get, intersection } from 'lodash-es';\n\nimport { TdEnhancedTableProps, TdPrimaryTableProps, TableRowData, PrimaryTableCol } from '../type';\nimport { KeysType, TableTreeDataMap, TreeDataMapType } from '@tdesign/common-js/table/tree-store';\nimport { useDefaultValue } from '@tdesign/shared-hooks';\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":["childrenMap","Map","getChildrenData","treeDataMap","data","keys","r","get","result","allChildren","allChildrenKeys","leafNodeKeys","children","childrenKey","length","selectableChildren","filter","item","_treeDataMap$get","rowKey","disabled","_toConsumableArray","Set","concat","i","len","tItem","c","nextLevelData","rowValue","push","removeChildrenKeys","p","selectedRowKeys","removeKeys","key","includes","getRowDataByKeys","useTreeSelect","props","_toRefs","toRefs","tree","indeterminateSelectedRowKeys","tIndeterminateSelectedRowKeys","ref","_useDefaultValue","useDefaultValue","defaultSelectedRowKeys","onSelectChange","_useDefaultValue2","_slicedToArray","tSelectedRowKeys","setTSelectedRowKeys","rowDataKeys","computed","_props$tree","watch","_ref","_ref2","size","checkStrictly","updateIndeterminateState","value","parentMap","state","row","parentTmp","parent","id","checkedLength","_getChildrenData","parentTmpIndex","indexOf","selectedIndex","splice","updateParentCheckedState","selectedKeys","currentRowKey","type","_getChildrenData2","checkedChildrenKeys","intersection","onInnerSelectChange","rowKeys","extraData","handleSelectAll","handleSelect","newRowKeys","newRowData","arr","values","newExtraData","_objectSpread","selectedRowData","_props$tree2","currentRowData","set"],"mappings":"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"}