{"version":3,"file":"useTreeData.mjs","sources":["../../../src/table/hooks/useTreeData.tsx"],"sourcesContent":["import { SetupContext, ref, watch, toRefs, onUnmounted, computed, h, shallowRef } from 'vue';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport TableTreeStore, { SwapParams } from '../../_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 '../tr';\nimport { useConfig } from '../../hooks/useConfig';\nimport { useTNodeDefault } from '../../hooks';\n\nexport default function useTreeData(props: TdEnhancedTableProps, context: SetupContext) {\n  const { data, columns } = toRefs(props);\n  const { t, globalConfig } = useConfig('table');\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 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) || <icon-ri-checkbox-indeterminate-line />;\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) || <icon-ri-add-box-line />;\n    return renderTNode('treeExpandAndFoldIcon', {\n      defaultNode: defaultExpandIcon,\n      params,\n    });\n  };\n\n  const uniqueKeys = computed(() => store.value?.getAllUniqueKeys(data.value, rowDataKeys.value)?.join() || '');\n\n  watch(\n    [uniqueKeys],\n    () => {\n      if (!data.value) return;\n      // 如果没有树形解构，则不需要相关逻辑\n      if (!props.tree) {\n        dataSource.value = data.value;\n        return;\n      }\n      resetData(data.value);\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    let newVal = cloneDeep(data);\n    store.value.initialTreeStore(newVal, props.columns, rowDataKeys.value);\n    if (props.tree?.defaultExpandAll) {\n      newVal = store.value.expandAll(newVal, rowDataKeys.value);\n    }\n    dataSource.value = newVal;\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                  toggleExpandData(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   * @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 expandAll() {\n    dataSource.value = [...store.value.expandAll(dataSource.value, rowDataKeys.value)];\n  }\n\n  /**\n   * 对外暴露的组件实例方法，收起所有节点\n   */\n  function foldAll() {\n    dataSource.value = [...store.value.foldAll(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    appendTo,\n    insertAfter,\n    insertBefore,\n    formatTreeColumn,\n    toggleExpandData,\n    expandAll,\n    foldAll,\n    getTreeNode,\n    resetData,\n    getTreeExpandedRow,\n  };\n}\n"],"names":["rowKey","childrenKey","watch","store","type","_createVNode","_resolveComponent","defaultNode","params","dataSource","resetData","immediate","onUnmounted","treeNodeCol","cloneDeep","newVal","paddingLeft","currentData","get","rowState","trigger","treeNodeColumnIndex","newCol","col","toggleExpandData","newData","rowDataKeys","swapData","setData","getData","remove","appendTo","insertAfter","insertBefore","formatTreeColumn","expandAll","foldAll","getTreeNode","getTreeExpandedRow"],"mappings":"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"}