{"version":3,"file":"useSorter.mjs","sources":["../../../../components/table/hooks/useSorter.tsx"],"sourcesContent":["import { SetupContext, computed, toRefs, ref, watch } from 'vue';\nimport { isArray, isFunction } from 'lodash-es';\nimport { SortInfo, TdPrimaryTableProps, PrimaryTableCol, TableRowData } from '../type';\nimport SorterButton from '../components/sorter-button';\nimport { useDefaultValue } from '@tdesign/shared-hooks';\n\nexport type SortMap = Record<string, SortInfo & { index: number }>;\n\nexport default function useSorter(props: TdPrimaryTableProps, { slots }: SetupContext) {\n  const { sort, data } = toRefs(props);\n  const originalData = ref();\n  const [tSortInfo, setTSortInfo] = useDefaultValue(sort, props.defaultSort, props.onSortChange, 'sort');\n  const [tData, setTData] = useDefaultValue(data, [], props.onDataChange, 'data');\n  // 本地数据排序：用于记录哪些字段是自定义排序函数\n  const sorterFuncMap = computed(() => getSorterFuncMap(props.columns));\n  const innerSort = ref<SortInfo | SortInfo[]>();\n\n  const sortArray = computed<Array<SortInfo>>(() => {\n    const sort = tSortInfo.value;\n    if (!sort) return [];\n    return isArray(sort) ? sort : [sort];\n  });\n\n  const sortMap = computed<SortMap>(() => {\n    const sortMap: Record<string, any> = {};\n    sortArray.value.forEach((info, index) => {\n      const { sortBy } = info;\n      sortMap[sortBy] = { index, ...info };\n    });\n    return sortMap;\n  });\n\n  function getSorterFuncMap(columns: PrimaryTableCol[], map: { [key: string]: Function } = {}) {\n    for (let i = 0, len = columns.length; i < len; i++) {\n      const col = columns[i];\n      if (isFunction(col.sorter)) {\n        // eslint-disable-next-line no-param-reassign\n        map[col.colKey] = col.sorter;\n      }\n      // 多级表头中的排序功能\n      if (col.children?.length) {\n        getSorterFuncMap(col.children, map);\n      }\n    }\n    return map;\n  }\n\n  function handleDataSort(sortInfo: SortInfo | Array<SortInfo>) {\n    const sort = sortInfo;\n    if (!Object.keys(sorterFuncMap.value).length) return;\n    if (!originalData.value) {\n      originalData.value = tData.value;\n    }\n    const isEmptyArraySort = !sort || (sort instanceof Array && !sort.length);\n    const isEmptyObjectSort = !(sort instanceof Array) && !sort?.sortBy;\n    if (isEmptyArraySort || isEmptyObjectSort) {\n      setTData(originalData.value, { trigger: 'sort' });\n      return originalData.value;\n    }\n    const formatedSort = sort instanceof Array ? sort : [sort];\n    // data 为受控属性，data.slice() 浅拷贝，防止 sort 导致原数据变异\n    const newData: TableRowData[] = tData.value.slice().sort((a: TableRowData, b: TableRowData) => {\n      let sortResult = 0;\n      for (let i = 0, len = formatedSort.length; i < len; i++) {\n        const item = formatedSort[i];\n        const sortFunc = sorterFuncMap.value[item.sortBy];\n        // 上一个排序字段值相同时才会进行下一个字段的大小对比\n        if (sortResult === 0 && sortFunc) {\n          sortResult = item.descending ? sortFunc(b, a) : sortFunc(a, b);\n        } else {\n          break;\n        }\n      }\n      return sortResult;\n    });\n    // Data 变化返回的是数据引用，为避免死循环，特此检测排序数据前后是否相同，如果相同则不再触发事件\n    if (JSON.stringify(newData) === JSON.stringify(tData.value)) return;\n    setTData(newData, { trigger: 'sort' });\n    return newData;\n  }\n\n  function handleSortHeaderClick(col: PrimaryTableCol<TableRowData>, p: { descending: boolean }) {\n    let sortInfo: SortInfo | Array<SortInfo>;\n    if (props.multipleSort) {\n      sortInfo = getMultipleNextSort(col, p);\n    } else {\n      // 如果此次调用之前开启了multipleSort，tSortInfo可能为数组，尝试取数组中第一个排序字段的参数\n      const sort = tSortInfo.value instanceof Array ? tSortInfo.value[0] : tSortInfo.value;\n      sortInfo = getSingleNextSort(col, sort, p);\n    }\n    // 本地数据 data 排序，需同时抛出 data-change\n    const newData = handleDataSort(sortInfo);\n    const currentData = newData || tData.value;\n    const currentDataSource = currentData;\n    setTSortInfo(sortInfo, { currentDataSource, col });\n    props.onChange?.({ sorter: sortInfo }, { currentData, trigger: 'sorter' });\n    innerSort.value = sortInfo;\n  }\n\n  function getSortOrder(descending: boolean) {\n    if (descending === undefined) return;\n    return descending ? 'desc' : 'asc';\n  }\n\n  // 点击新排序字段，则默认按照降序排序；点击原字段，则排序字段不变仅切换排序方式\n  function getSingleNextSort(col: PrimaryTableCol, sortInfo: SortInfo, p: { descending: boolean }): SortInfo {\n    // 排序字段和排序方式均相同，则取消排序\n    if (sortInfo && sortInfo.sortBy === col.colKey && sortInfo.descending === p.descending) {\n      return undefined;\n    }\n    return { sortBy: col.colKey, descending: p.descending };\n  }\n\n  function getMultipleNextSort(col: PrimaryTableCol<TableRowData>, p: { descending: boolean }): Array<SortInfo> {\n    // 如tSortInfo不是数组，判断是否存在，如存在作为第一个排序字段（保留之前未开启multipleSort时的字段），否则初始化为空数组\n    if (!Array.isArray(tSortInfo.value)) {\n      tSortInfo.value = tSortInfo.value ? [tSortInfo.value] : [];\n    }\n    const sort = tSortInfo.value;\n    const { colKey } = col;\n    const result = [...sort];\n    for (let i = 0, len = sort.length; i < len; i++) {\n      if (sort[i].sortBy === colKey) {\n        const next = getSingleNextSort(col, sort[i], p);\n        next ? (result[i] = next) : result.splice(i, 1);\n        return result;\n      }\n    }\n    result.push({ sortBy: colKey, descending: p.descending });\n    return result;\n  }\n\n  function renderSortIcon({ col }: { col: PrimaryTableCol<TableRowData>; colIndex: number }) {\n    if (!col.sorter) return null;\n    const sorterButtonsProps = {\n      sortType: col.sortType,\n      sortOrder: getSortOrder(sortMap.value[col.colKey]?.descending),\n      sortIcon: props.sortIcon,\n      hideSortTips: props.hideSortTips,\n      locale: props.locale,\n    };\n    return (\n      <SorterButton\n        v-slots={{ sortIcon: slots.sortIcon }}\n        {...sorterButtonsProps}\n        // @ts-expect-error\n        onSortIconClick={(_: MouseEvent, p: { descending: boolean }) => handleSortHeaderClick(col, p)}\n      />\n    );\n  }\n\n  const isSortInfoSame = (a: SortInfo | SortInfo[], b: SortInfo | SortInfo[]) => {\n    const tmpSortInfo = isArray(a) ? a : [a];\n    const tmpInnerSortInfo = isArray(b) ? b : [b];\n    if (tmpSortInfo.length && !b) return false;\n    // eslint-disable-next-line\n    for (let i = 0, len = tmpSortInfo.length; i < len; i++) {\n      const item = tmpSortInfo[i];\n      const result = tmpInnerSortInfo.find((t) => t.sortBy === item.sortBy);\n      if (!result) return false;\n      return item.descending === result.descending;\n    }\n  };\n\n  /**\n   * 如果外部的排序不为空，且和内部排序字段不同，说明传入的 sortInfo 和 data 可能存在不一致，\n   * 此时，需要在组件内部进行排序，并输出事件\n   */\n  watch(\n    () => [tSortInfo, props.data],\n    () => {\n      if (!tSortInfo.value || !Object.keys(tSortInfo.value).length || !tData.value.length) return;\n      // isSortInfoSame 的两个参数顺序不可变\n      if (!isSortInfoSame(tSortInfo.value, innerSort.value)) {\n        handleDataSort(tSortInfo.value);\n      }\n    },\n    { immediate: true },\n  );\n\n  return {\n    renderSortIcon,\n  };\n}\n"],"names":["useSorter","props","_ref","slots","_toRefs","toRefs","sort","data","originalData","ref","_useDefaultValue","useDefaultValue","defaultSort","onSortChange","_useDefaultValue2","_slicedToArray","tSortInfo","setTSortInfo","_useDefaultValue3","onDataChange","_useDefaultValue4","tData","setTData","sorterFuncMap","computed","getSorterFuncMap","columns","innerSort","sortArray","value","isArray","sortMap","forEach","info","index","sortBy","_objectSpread","map","arguments","length","undefined","i","len","_col$children","col","isFunction","sorter","colKey","children","handleDataSort","sortInfo","Object","keys","isEmptyArraySort","Array","isEmptyObjectSort","trigger","formatedSort","newData","slice","a","b","sortResult","item","sortFunc","descending","JSON","stringify","handleSortHeaderClick","p","_props$onChange","multipleSort","getMultipleNextSort","getSingleNextSort","currentData","currentDataSource","onChange","call","getSortOrder","result","_toConsumableArray","next","splice","push","renderSortIcon","_ref2","_sortMap$value$col$co","sorterButtonsProps","sortType","sortOrder","sortIcon","hideSortTips","locale","_createVNode","SorterButton","_mergeProps","onSortIconClick","_","isSortInfoSame","tmpSortInfo","tmpInnerSortInfo","_loop","find","t","v","_ret","watch","immediate"],"mappings":"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"}