{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/draggable-table/src/index.ts"],"sourcesContent":["import { defineComponent, h, nextTick } from 'vue'\nimport { ElTable, useNamespace } from 'element-plus'\nimport { UseSortable } from '@vueuse/integrations/useSortable/component'\nimport { moveArrayElement } from '@vueuse/integrations/useSortable'\nimport { isArray } from '@element-plus/utils'\nimport { draggableTableProps } from './draggable-table'\nimport type { VNode } from 'vue'\n\nconst ElTableComp: any = { ...ElTable }\n\nconst SORT_DATA_EVENT = 'sort-data'\n\n// 重写 TableBody render 函数\nconst TableBody = {\n  ...ElTableComp.components.TableBody,\n  render() {\n    const { wrappedRowRender, store } = this\n    const data = store.states.data.value || []\n\n    const tableIns = this.context\n    const { draggableProps, disabled } = tableIns.props\n\n    const options = {\n      animation: 300,\n      ...draggableProps,\n      onUpdate: (e: any) => {\n        const { oldIndex, newIndex } = e\n        // update list\n        if (isArray(store.states.data.value)) {\n          moveArrayElement(store.states.data, oldIndex, newIndex, e)\n          nextTick(() => {\n            const newData = store.states.data.value\n            store.commit('setData', newData)\n            tableIns.emit(SORT_DATA_EVENT, newData, { e })\n          })\n        }\n      },\n    }\n\n    const renderChildren = () =>\n      data.reduce((acc: VNode[], row: any) => {\n        return acc.concat(wrappedRowRender(row, acc.length))\n      }, [])\n\n    // disabled如果用于options选项中，只会在初始化中生效\n    return disabled\n      ? h('tbody', { tabIndex: -1 }, [renderChildren()])\n      : h(\n          UseSortable,\n          { options, tag: 'tbody', tabIndex: -1, modelValue: [] },\n          {\n            default: () => renderChildren(),\n          }\n        )\n  },\n}\n\nconst ElTableClone = {\n  ...ElTableComp,\n  name: 'ElTableClone',\n  components: { ...ElTableComp.components, TableBody },\n  emits: [...ElTableComp.emits, SORT_DATA_EVENT],\n  props: {\n    ...ElTableComp.props,\n    ...draggableTableProps,\n  },\n}\n\nconst ElDraggableTable = defineComponent({\n  name: 'ElDraggableTable',\n  setup(props, { slots, attrs }) {\n    const ns = useNamespace('draggable-table')\n\n    return () =>\n      h(\n        ElTableClone,\n        {\n          ...attrs,\n          class: ns.b(),\n        },\n        slots\n      )\n  },\n})\n\nexport default ElDraggableTable\n"],"names":[],"mappings":"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"}