{"version":3,"file":"useTreeData.mjs","sources":["../../../../components/table/hooks/useTreeData.tsx"],"sourcesContent":["import { SetupContext, ref, watch, toRefs, onUnmounted, computed, h, shallowRef } from 'vue';\nimport {\n  AddRectangleIcon as TdAddRectangleIcon,\n  MinusRectangleIcon as TdMinusRectangleIcon,\n} from 'tdesign-icons-vue-next';\nimport { get } from 'lodash-es';\nimport TableTreeStore, { SwapParams } from '@tdesign/common-js/table/tree-store';\nimport {\n  TdEnhancedTableProps,\n  PrimaryTableCol,\n  TableRowData,\n  TableRowValue,\n  TableRowState,\n  PrimaryTableCellParams,\n} from '../type';\nimport useClassName from './useClassName';\nimport { renderCell } from '../components/tr';\nimport { useConfig, useGlobalIcon, useTNodeDefault } from '@tdesign/shared-hooks';\n\nimport useTreeDataExpand from './useTreeDataExpand';\n\nexport default function useTreeData(props: TdEnhancedTableProps, context: SetupContext) {\n  const { data, columns } = toRefs(props);\n  const { t, globalConfig } = useConfig('table', props.locale);\n  const { AddRectangleIcon, MinusRectangleIcon } = useGlobalIcon({\n    AddRectangleIcon: TdAddRectangleIcon,\n    MinusRectangleIcon: TdMinusRectangleIcon,\n  });\n\n  const store = ref(new TableTreeStore());\n  const treeNodeCol = shallowRef<PrimaryTableCol>();\n  const dataSource = ref<TdEnhancedTableProps['data']>([]);\n  const { tableTreeClasses } = useClassName();\n  const renderTNode = useTNodeDefault();\n\n  const rowDataKeys = computed(() => ({\n    rowKey: props.rowKey || 'id',\n    childrenKey: props.tree?.childrenKey || 'children',\n  }));\n\n  const {\n    tExpandedTreeNode,\n    isDefaultExpandAllExecute,\n    isDefaultExpandedTreeNodesExecute,\n    expandAll,\n    foldAll,\n    updateExpandOnDataChange,\n    onExpandFoldIconClick,\n  } = useTreeDataExpand(props, { store, dataSource, rowDataKeys });\n\n  const checkedColumn = computed(() => columns.value.find((col) => col.colKey === 'row-select'));\n\n  watch(checkedColumn, (column) => {\n    if (!store.value) return;\n    store.value.updateDisabledState(dataSource.value, column, rowDataKeys.value);\n  });\n\n  const foldIcon = (context: PrimaryTableCellParams<TableRowData>) => {\n    const params = { ...context, type: 'fold' };\n    const defaultFoldIcon = t(globalConfig.value.treeExpandAndFoldIcon, h, params) || <MinusRectangleIcon />;\n    return renderTNode('treeExpandAndFoldIcon', {\n      defaultNode: defaultFoldIcon,\n      params,\n    });\n  };\n\n  const expandIcon = (context: PrimaryTableCellParams<TableRowData>) => {\n    const params = { ...context, type: 'expand' };\n    const defaultExpandIcon = t(globalConfig.value.treeExpandAndFoldIcon, h, params) || <AddRectangleIcon />;\n    return renderTNode('treeExpandAndFoldIcon', {\n      defaultNode: defaultExpandIcon,\n      params,\n    });\n  };\n\n  watch(\n    [data],\n    () => {\n      if (props.tree) {\n        resetData(data.value);\n      } else {\n        dataSource.value = data.value;\n      }\n    },\n    { immediate: true },\n  );\n\n  // 不能启用这部分代码。如果启用，会导致选中树形结构子节点时数据被重置，全部节点收起\n  // watch([columns, rowDataKeys], ([columns, rowDataKeys]) => {\n  //   store.value.initialTreeStore(data.value, columns, rowDataKeys);\n  // });\n\n  onUnmounted(() => {\n    if (!props.tree) return;\n    store.value.treeDataMap?.clear();\n    store.value = null;\n  });\n\n  watch(\n    () => [columns, props.tree?.treeNodeColumnIndex],\n    () => {\n      treeNodeCol.value = getTreeNodeColumnCol();\n    },\n    { immediate: true },\n  );\n\n  function resetData(data: TableRowData[]) {\n    const { columns, expandedTreeNodes, defaultExpandedTreeNodes, tree } = props;\n    store.value.initialTreeStore(data, columns, rowDataKeys.value);\n    const defaultNeedExpand = Boolean(!isDefaultExpandedTreeNodesExecute.value && defaultExpandedTreeNodes?.length);\n    const needExpandAll = Boolean(tree?.defaultExpandAll && !isDefaultExpandAllExecute.value);\n    if ((tExpandedTreeNode.value?.length && !!(expandedTreeNodes || defaultNeedExpand)) || needExpandAll) {\n      updateExpandOnDataChange(data);\n      isDefaultExpandedTreeNodesExecute.value = true;\n    } else {\n      dataSource.value = [...data];\n    }\n  }\n\n  function getTreeNodeStyle(level: number) {\n    if (level === undefined) return;\n    const indent = props.tree?.indent === undefined ? 24 : props.tree?.indent;\n    // 默认 1px 是为了临界省略\n    return indent ? { paddingLeft: `${level * indent || 1}px` } : {};\n  }\n\n  /**\n   * 组件实例方法，展开或收起某一行\n   * @param p 行数据\n   */\n  function toggleExpandData(p: { row: TableRowData; rowIndex: number }, trigger?: 'expand-fold-icon' | 'row-click') {\n    const currentData = { ...p };\n    if (p.row.VIRTUAL_SCROLL_INDEX !== undefined) {\n      currentData.rowIndex = p.row.VIRTUAL_SCROLL_INDEX;\n    }\n    dataSource.value = [...store.value.toggleExpandData(currentData, dataSource.value, rowDataKeys.value)];\n    const rowValue = get(p.row, rowDataKeys.value.rowKey);\n    const rowState = store.value?.treeDataMap?.get(rowValue);\n    props.onTreeExpandChange?.({\n      row: p.row,\n      rowIndex: p.rowIndex,\n      rowState,\n      trigger,\n    });\n  }\n\n  function getTreeNodeColumnCol() {\n    const { columns } = props;\n    let treeNodeColumnIndex = props.tree?.treeNodeColumnIndex || 0;\n    // type 存在，则表示表格内部渲染的特殊列，比如：展开行按钮、复选框、单选按钮等，不能作为树结点列。因此树结点展开列向后顺移\n    while (\n      columns[treeNodeColumnIndex]?.type ||\n      columns[treeNodeColumnIndex]?.colKey === '__EXPAND_ROW_ICON_COLUMN__'\n    ) {\n      treeNodeColumnIndex += 1;\n    }\n    return columns[treeNodeColumnIndex];\n  }\n\n  function formatTreeColumn(col: PrimaryTableCol): PrimaryTableCol {\n    if (!props.tree || col.colKey !== treeNodeCol.value.colKey) return col;\n    const newCol = { ...treeNodeCol.value };\n    newCol.cell = (h, p) => {\n      const cellInfo = renderCell({ ...p, col: { ...treeNodeCol.value } }, context.slots, {\n        cellEmptyContent: props.cellEmptyContent,\n      });\n      const currentState = store.value.treeDataMap.get(get(p.row, rowDataKeys.value.rowKey));\n      const colStyle = getTreeNodeStyle(currentState?.level);\n      const classes = { [tableTreeClasses.inlineCol]: !!col.ellipsis };\n      const childrenNodes = get(p.row, rowDataKeys.value.childrenKey);\n      if ((childrenNodes && childrenNodes instanceof Array) || childrenNodes === true) {\n        const iconNode = store.value.treeDataMap.get(get(p.row, rowDataKeys.value.rowKey))?.expanded\n          ? foldIcon(p)\n          : expandIcon(p);\n        return (\n          <div class={[tableTreeClasses.col, classes]} style={colStyle}>\n            {!!(childrenNodes.length || childrenNodes === true) && (\n              <span\n                class={tableTreeClasses.icon}\n                onClick={(e: MouseEvent) => {\n                  onExpandFoldIconClick(p, 'expand-fold-icon');\n                  e.stopPropagation();\n                }}\n              >\n                {iconNode}\n              </span>\n            )}\n            {cellInfo}\n          </div>\n        );\n      }\n      return (\n        <div style={colStyle} class={[classes, tableTreeClasses.leafNode]}>\n          <span class={tableTreeClasses.icon}></span>\n          {cellInfo}\n        </div>\n      );\n    };\n    // 树形节点会显示操作符号 [+] 和 [-]，但省略显示的浮层中不需要操作符\n    if (newCol.ellipsis === true) {\n      newCol.ellipsis = (h, p) => renderCell({ ...p, col: { ...treeNodeCol.value } }, context.slots);\n    }\n    return newCol;\n  }\n\n  /**\n   * 对外暴露的组件实例方法，设置行数据，自动刷新界面\n   * @param key 当前行唯一标识值\n   * @param newRowData 新行数据\n   */\n  function setData<T>(key: TableRowValue, newRowData: T) {\n    const rowIndex = store.value.updateData(key, newRowData, dataSource.value, rowDataKeys.value);\n    const newData = [...dataSource.value];\n    newData[rowIndex] = newRowData;\n    dataSource.value = newData;\n  }\n\n  /**\n   * 对外暴露的组件实例方法，获取当前行全部数据\n   * @param key 行唯一标识\n   * @returns {TableRowState} 当前行数据\n   */\n  function getData(key: TableRowValue): TableRowState {\n    return store.value.getData(key);\n  }\n\n  /**\n   * 对外暴露的组件实例方法，移除指定节点\n   * @param key 行唯一标识\n   */\n  function remove(key: TableRowValue) {\n    // 引用传值，可自动更新 dataSource。（dataSource 本是内部变量，可以在任何地方进行任何改变）\n    dataSource.value = [...store.value.remove(key, dataSource.value, rowDataKeys.value)];\n  }\n\n  /**\n   * 移除子节点\n   * @param key 行唯一标识\n   */\n  function removeChildren(key: TableRowValue) {\n    dataSource.value = [...store.value.removeChildren(key, dataSource.value, rowDataKeys.value)];\n  }\n\n  /**\n   * 对外暴露的组件实例方法，为当前节点添加子节点，默认添加到最后一个节点\n   * @param key 当前节点唯一标识，值为空，则表示给根节点添加元素\n   * @param newData 待添加的新节点\n   */\n  function appendTo<T>(key: TableRowValue = '', newData: T | T[]) {\n    if (!key) {\n      dataSource.value = store.value.appendToRoot(newData, dataSource.value, rowDataKeys.value);\n      return;\n    }\n    // 引用传值，可自动更新 dataSource。（dataSource 本是内部变量，可以在任何地方进行任何改变）\n    dataSource.value = [...store.value.appendTo(key, newData, dataSource.value, rowDataKeys.value)];\n  }\n\n  /**\n   * 对外暴露的组件实例方法，当前节点之后，插入节点\n   */\n  function insertAfter<T>(rowValue: TableRowValue, newData: T) {\n    dataSource.value = [...store.value.insertAfter(rowValue, newData, dataSource.value, rowDataKeys.value)];\n  }\n\n  /**\n   * 对外暴露的组件实例方法，当前节点之后，插入节点\n   */\n  function insertBefore<T>(rowValue: TableRowValue, newData: T) {\n    dataSource.value = [...store.value.insertBefore(rowValue, newData, dataSource.value, rowDataKeys.value)];\n  }\n\n  /**\n   * 对外暴露的组件实例方法，交换行数据\n   */\n  function swapData(params: SwapParams<TableRowData>) {\n    const r = store.value.swapData(dataSource.value, params, rowDataKeys.value);\n    if (r.result) {\n      dataSource.value = [...r.dataSource];\n    } else {\n      const params = {\n        code: r.code,\n        reason: r.reason,\n      };\n      props.onAbnormalDragSort?.(params);\n    }\n  }\n\n  /**\n   * 对外暴露的组件实例方法，获取全部数据的树形结构\n   * @param key 节点唯一标识\n   */\n  function getTreeNode() {\n    return store.value.getTreeNode(dataSource.value, rowDataKeys.value);\n  }\n\n  /**\n   * 对外暴露的组件实例方法，获取树形结构展开的节点\n   */\n  function getTreeExpandedRow(type: 'unique' | 'data' | 'all' = 'data') {\n    return store.value.getTreeExpandedRow(dataSource.value, rowDataKeys.value, type);\n  }\n\n  return {\n    store,\n    rowDataKeys,\n    dataSource,\n    swapData,\n    setData,\n    getData,\n    remove,\n    removeChildren,\n    appendTo,\n    insertAfter,\n    insertBefore,\n    formatTreeColumn,\n    toggleExpandData,\n    expandAll,\n    foldAll,\n    getTreeNode,\n    resetData,\n    getTreeExpandedRow,\n    onExpandFoldIconClick,\n  };\n}\n"],"names":["useTreeData","props","context","_toRefs","toRefs","data","columns","_useConfig","useConfig","locale","t","globalConfig","_useGlobalIcon","useGlobalIcon","AddRectangleIcon","TdAddRectangleIcon","MinusRectangleIcon","TdMinusRectangleIcon","store","ref","TableTreeStore","treeNodeCol","shallowRef","dataSource","_useClassName","useClassName","tableTreeClasses","renderTNode","useTNodeDefault","rowDataKeys","computed","_props$tree","rowKey","childrenKey","tree","_useTreeDataExpand","useTreeDataExpand","tExpandedTreeNode","isDefaultExpandAllExecute","isDefaultExpandedTreeNodesExecute","expandAll","foldAll","updateExpandOnDataChange","onExpandFoldIconClick","checkedColumn","value","find","col","colKey","watch","column","updateDisabledState","foldIcon","params","_objectSpread","type","defaultFoldIcon","treeExpandAndFoldIcon","h","_createVNode","defaultNode","expandIcon","defaultExpandIcon","resetData","immediate","onUnmounted","_store$value$treeData","treeDataMap","clear","_props$tree2","treeNodeColumnIndex","getTreeNodeColumnCol","_tExpandedTreeNode$va","expandedTreeNodes","defaultExpandedTreeNodes","initialTreeStore","defaultNeedExpand","Boolean","length","needExpandAll","defaultExpandAll","_toConsumableArray","getTreeNodeStyle","level","_props$tree3","_props$tree4","indent","paddingLeft","concat","toggleExpandData","p","trigger","_store$value","_props$onTreeExpandCh","currentData","row","VIRTUAL_SCROLL_INDEX","rowIndex","rowValue","get","rowState","onTreeExpandChange","call","_props$tree5","_columns2$treeNodeCol","_columns2$treeNodeCol2","formatTreeColumn","newCol","cell","cellInfo","renderCell","slots","cellEmptyContent","currentState","colStyle","classes","_defineProperty","inlineCol","ellipsis","childrenNodes","Array","_store$value$treeData2","iconNode","expanded","icon","onClick","e","stopPropagation","leafNode","setData","key","newRowData","updateData","newData","getData","remove","removeChildren","appendTo","arguments","undefined","appendToRoot","insertAfter","insertBefore","swapData","r","result","_props$onAbnormalDrag","code","reason","onAbnormalDragSort","getTreeNode","getTreeExpandedRow"],"mappings":"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"}