{"version":3,"file":"useDragSort.mjs","sources":["../../../../common/js/utils/swapDragArrayElement.ts","../../../../components/table/hooks/useDragSort.ts"],"sourcesContent":["// 拖拽排序场景中：调整某个元素的顺序\nexport default function swapDragArrayElement(data: any[], currentIndex: number, targetIndex: number) {\n  const newData = [...data];\n  if (targetIndex - currentIndex > 0) {\n    newData.splice(targetIndex + 1, 0, newData[currentIndex]);\n    newData.splice(currentIndex, 1);\n  } else {\n    newData.splice(targetIndex, 0, newData[currentIndex]);\n    newData.splice(currentIndex + 1, 1);\n  }\n  return newData;\n}\n","// 表格 行拖拽 + 列拖拽功能\nimport { SetupContext, computed, toRefs, ref, watch, h, ComputedRef } from 'vue';\nimport Sortable, { SortableEvent, SortableOptions, MoveEvent } from 'sortablejs';\nimport { isFunction } from 'lodash-es';\nimport { TableRowData, TdPrimaryTableProps, DragSortContext, PrimaryTableCol } from '../type';\nimport useClassName from './useClassName';\nimport log from '@tdesign/common-js/log/index';\nimport { hasClass } from '@tdesign/shared-utils';\nimport swapDragArrayElement from '@tdesign/common-js/utils/swapDragArrayElement';\nimport { BaseTableColumns, SimplePageInfo } from '../types';\nimport { getColumnDataByKey, getColumnIndexByKey } from '@tdesign/common-js/table/utils';\n\nfunction removeNode(node: HTMLElement) {\n  if (node.parentElement !== null) {\n    node.parentElement.removeChild(node);\n  }\n}\n\nfunction insertNodeAt(fatherNode: HTMLElement, node: HTMLElement, position: number) {\n  const refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n  fatherNode.insertBefore(node, refNode);\n}\n\nexport default function useDragSort(\n  props: TdPrimaryTableProps,\n  context: SetupContext,\n  params: ComputedRef<{\n    showElement: boolean;\n  }>,\n) {\n  const { sortOnRowDraggable, dragSort, data } = toRefs(props);\n  const innerPagination = ref(props.pagination);\n  const { tableDraggableClasses, tableBaseClass, tableFullRowClasses, tableExpandClasses } = useClassName();\n  const columns = ref<PrimaryTableCol[]>(props.columns || []);\n  const primaryTableRef = ref(null);\n  // @ts-ignore 判断是否有拖拽列\n  const dragCol = computed(() => columns.value.find((item) => item.colKey === 'drag'));\n  // 行拖拽判断条件\n  const isRowDraggable = computed(\n    () => sortOnRowDraggable.value || ['row', 'row-handler-col'].includes(dragSort.value),\n  );\n  // 行拖拽判断条件-手柄列\n  const isRowHandlerDraggable = computed(\n    () => ['row-handler', 'row-handler-col'].includes(dragSort.value) && !!dragCol.value,\n  );\n  // 列拖拽判断条件\n  const isColDraggable = computed(() => ['col', 'row-handler-col'].includes(dragSort.value));\n\n  if (props.sortOnRowDraggable) {\n    log.error('Table', \"`sortOnRowDraggable` is going to be deprecated, use dragSort='row' instead.\");\n  }\n\n  // 本地分页的表格，index 不同，需加上分页计数\n  function getDataPageIndex(index: number, pagination: SimplePageInfo) {\n    const current = pagination.current ?? pagination.defaultCurrent;\n    const pageSize = pagination.pageSize ?? pagination.defaultPageSize;\n    // 开启本地分页的场景\n    if (!props.disableDataPage && pagination && data.value.length > pageSize) {\n      return pageSize * (current - 1) + index;\n    }\n    return index;\n  }\n\n  // 行拖拽排序\n  const registerRowDragEvent = (element: HTMLDivElement): void => {\n    /**\n     * fix: https://github.com/Tencent/tdesign-vue-next/issues/4985\n     * 若table内容未渲染（即element子元素为空），拖拽事件不注册\n     */\n    if (element?.children?.length === 0 || (!isRowHandlerDraggable.value && !isRowDraggable.value)) return;\n    const dragContainer = element?.querySelector('tbody');\n    if (!dragContainer) {\n      console.error('tbody does not exist.');\n      return null;\n    }\n    const baseOptions: SortableOptions = {\n      animation: 150,\n      ghostClass: tableDraggableClasses.ghost,\n      chosenClass: tableDraggableClasses.chosen,\n      dragClass: tableDraggableClasses.dragging,\n      // 过滤首行尾行固定，过滤展开行\n      filter: `.${tableFullRowClasses.base},.${tableExpandClasses.row}`,\n      onMove: (evt: MoveEvent) => !hasClass(evt.related, tableFullRowClasses.base),\n      onEnd(evt: SortableEvent) {\n        if (evt.newIndex === evt.oldIndex) return;\n        // 处理受控：拖拽列表恢复原始排序\n        removeNode(evt.item);\n        insertNodeAt(evt.from, evt.item, evt.oldIndex);\n        let { oldIndex: currentIndex, newIndex: targetIndex } = evt;\n        if (\n          (isFunction(props.firstFullRow) && props.firstFullRow(h)) ||\n          context.slots.firstFullRow ||\n          context.slots['first-full-row']\n        ) {\n          currentIndex -= 1;\n          targetIndex -= 1;\n        }\n        if (innerPagination.value) {\n          currentIndex = getDataPageIndex(currentIndex, innerPagination.value);\n          targetIndex = getDataPageIndex(targetIndex, innerPagination.value);\n        }\n        const params: DragSortContext<TableRowData> = {\n          data: data.value,\n          currentIndex,\n          current: data.value[currentIndex],\n          targetIndex,\n          target: data.value[targetIndex],\n          newData: swapDragArrayElement([...props.data], currentIndex, targetIndex),\n          e: evt,\n          sort: 'row',\n        };\n        // currentData is going to be deprecated\n        params.currentData = params.newData;\n        props.onDragSort?.(params);\n      },\n      ...props.dragSortOptions,\n    };\n\n    if (!dragContainer) return;\n    if (isRowDraggable.value) {\n      new Sortable(dragContainer, { ...baseOptions });\n    } else {\n      new Sortable(dragContainer, {\n        ...baseOptions,\n        handle: `.${tableDraggableClasses.handle}`,\n      });\n    }\n  };\n\n  const registerOneLevelColDragEvent = (container: HTMLElement, recover: boolean) => {\n    const options: SortableOptions = {\n      animation: 150,\n      dataIdAttr: 'data-colkey',\n      direction: 'vertical',\n      ghostClass: tableDraggableClasses.ghost,\n      chosenClass: tableDraggableClasses.chosen,\n      dragClass: tableDraggableClasses.dragging,\n      handle: `.${tableBaseClass.thCellInner}`,\n      // 存在类名：t-table__th--drag-sort 的列才允许拖拽调整顺序（注意：添加 draggable 之后，固定列的表头 和 吸顶表头 位置顺序会错位，暂时注释）\n      // draggable: `th.${tableDraggableClasses.dragSortTh}`,\n      onEnd: (evt: SortableEvent) => {\n        if (evt.newIndex === evt.oldIndex) return;\n        if (recover) {\n          // 处理受控：拖拽列表恢复原始排序，等待外部数据 data 变化，更新最终顺序\n          removeNode(evt.item);\n          insertNodeAt(evt.from, evt.item, evt.oldIndex);\n        }\n        const { oldIndex, newIndex, target: targetElement } = evt;\n        let currentIndex = recover ? oldIndex : newIndex;\n        let targetIndex = recover ? newIndex : oldIndex;\n        const oldElement = targetElement.children[currentIndex] as HTMLElement;\n        const newElement = targetElement.children[targetIndex] as HTMLElement;\n        const current = getColumnDataByKey(columns.value, oldElement.dataset.colkey);\n        const target = getColumnDataByKey(columns.value, newElement.dataset.colkey);\n        if (!current || !current.colKey) {\n          log.error('Table', `colKey is missing in ${JSON.stringify(current)}`);\n        }\n        if (!target || !target.colKey) {\n          log.error('Table', `colKey is missing in ${JSON.stringify(target)}`);\n        }\n        // 寻找外部数据 props.columns 中的真正下标\n        currentIndex = getColumnIndexByKey(props.columns, current.colKey);\n        targetIndex = getColumnIndexByKey(props.columns, target.colKey);\n        const params: DragSortContext<TableRowData> = {\n          data: columns.value,\n          currentIndex,\n          current,\n          targetIndex,\n          target,\n          newData: swapDragArrayElement([...props.columns], currentIndex, targetIndex),\n          e: evt,\n          sort: 'col',\n        };\n        // currentData is going to be deprecated\n        params.currentData = params.newData;\n        props.onDragSort?.(params);\n      },\n      ...props.dragSortOptions,\n    };\n    if (!container) return;\n    new Sortable(container, options);\n  };\n\n  // 列拖拽排序：涉及到多级表头、自定义显示列 等综合场景\n  const registerColDragEvent = (tableElement: HTMLElement) => {\n    if (!isColDraggable.value || !tableElement) return;\n    const trList = tableElement.querySelectorAll('thead > tr');\n    if (trList.length <= 1) {\n      const [container] = trList;\n      registerOneLevelColDragEvent(container as HTMLElement, true);\n    } else {\n      // 多级表头只抛出事件，不处理其他未知逻辑（如多层表头之间具体如何交换）\n      trList?.forEach((container) => {\n        registerOneLevelColDragEvent(container as HTMLElement, false);\n      });\n    }\n  };\n\n  function setDragSortPrimaryTableRef(primaryTableElement: any) {\n    primaryTableRef.value = primaryTableElement;\n  }\n\n  function setDragSortColumns(val: BaseTableColumns) {\n    // @ts-ignore\n    columns.value = val;\n  }\n\n  // eslint-disable-next-line\n  watch([primaryTableRef, columns, dragSort, params], ([val, columns, dragSort, params]) => {\n    register(val, params);\n  });\n\n  function register(val: any, params: any) {\n    const primaryTableCmp = val as any;\n    if (!val || !primaryTableCmp.$el || !params.showElement) return;\n    // register after table tr rendered\n    const timerA = setTimeout(() => {\n      registerRowDragEvent(primaryTableCmp.$el);\n      registerColDragEvent(primaryTableCmp.$el);\n      /** 待表头节点准备完成后 */\n      const timer = setTimeout(() => {\n        if (primaryTableCmp.$refs.affixHeaderRef) {\n          registerColDragEvent(primaryTableCmp.$refs.affixHeaderRef);\n        }\n        clearTimeout(timer);\n      });\n\n      clearTimeout(timerA);\n    }, 60);\n  }\n\n  return {\n    innerPagination,\n    isRowDraggable,\n    isRowHandlerDraggable,\n    isColDraggable,\n    setDragSortPrimaryTableRef,\n    setDragSortColumns,\n  };\n}\n"],"names":["swapDragArrayElement","data","currentIndex","targetIndex","newData","_toConsumableArray","splice","removeNode","node","parentElement","removeChild","insertNodeAt","fatherNode","position","refNode","children","nextSibling","insertBefore","useDragSort","props","context","params","_toRefs","toRefs","sortOnRowDraggable","dragSort","innerPagination","ref","pagination","_useClassName","useClassName","tableDraggableClasses","tableBaseClass","tableFullRowClasses","tableExpandClasses","columns","primaryTableRef","dragCol","computed","value","find","item","colKey","isRowDraggable","includes","isRowHandlerDraggable","isColDraggable","log","error","getDataPageIndex","index","_pagination$current","_pagination$pageSize","current","defaultCurrent","pageSize","defaultPageSize","disableDataPage","length","registerRowDragEvent","element","_element$children","dragContainer","querySelector","console","baseOptions","_objectSpread","animation","ghostClass","ghost","chosenClass","chosen","dragClass","dragging","filter","concat","base","row","onMove","evt","hasClass","related","onEnd","_props$onDragSort","newIndex","oldIndex","from","isFunction","firstFullRow","h","slots","target","e","sort","currentData","onDragSort","call","dragSortOptions","Sortable","handle","registerOneLevelColDragEvent","container","recover","options","dataIdAttr","direction","thCellInner","_props$onDragSort2","targetElement","oldElement","newElement","getColumnDataByKey","dataset","colkey","JSON","stringify","getColumnIndexByKey","registerColDragEvent","tableElement","trList","querySelectorAll","_trList","_slicedToArray","forEach","setDragSortPrimaryTableRef","primaryTableElement","setDragSortColumns","val","watch","_ref","_ref2","register","primaryTableCmp","$el","showElement","timerA","setTimeout","timer","$refs","affixHeaderRef","clearTimeout"],"mappings":"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"}