{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/array-table/src/table.ts"],"sourcesContent":["import { computed, defineComponent, h, provide, ref } from 'vue'\nimport { ElPagination, useNamespace } from 'element-plus'\nimport { ElDraggableTable } from '@element-plus/components/draggable-table'\nimport ArrayBase from '@element-plus/components/array-base'\nimport { DIV_TAG } from '@element-plus/constants'\nimport { useField } from '@element-plus/components/array-base/src/hooks'\nimport { isObject } from '@element-plus/utils'\nimport { sortHandleKls } from '@element-plus/components/array-base/src/constant'\nimport { GetKeySymbol, StartIndexSymbol } from './constant'\nimport type { PaginationProps } from 'element-plus'\nimport type { Ref } from 'vue'\nimport type { IFieldContext } from '@element-plus/components/array-base/src/array-base'\n\nexport type PaginationType =\n  | Pick<PaginationProps, keyof PaginationProps>\n  | undefined\n\nexport type TableDataType = any[]\n\nexport default defineComponent({\n  name: 'ElArrayTable',\n  props: {\n    pagination: {\n      type: null,\n    },\n  },\n  setup(props, { attrs, slots }) {\n    const ns = useNamespace('array-table')\n    const field: IFieldContext = useField()\n    const { keyMap, getKey } = ArrayBase.useKey()\n\n    const pagination: PaginationType = props.pagination\n    const hasPagination = computed(() => isObject(pagination))\n    const paginationProps: Ref<any> = computed(() =>\n      hasPagination.value ? pagination : {}\n    )\n\n    const dataSource = computed(() =>\n      field\n        ? Array.isArray(field.fieldValue)\n          ? field.fieldValue.slice()\n          : []\n        : []\n    )\n\n    const current = ref(1)\n    const total = computed(() => dataSource.value?.length || 0)\n    const pageSize = computed(() => paginationProps.value?.pageSize || 10)\n    const startIndex = computed(() => (current.value - 1) * pageSize.value)\n    const endIndex = computed(() => startIndex.value + pageSize.value - 1)\n\n    provide(StartIndexSymbol, startIndex)\n    provide(GetKeySymbol, getKey)\n\n    const data = computed(() =>\n      dataSource.value?.slice(startIndex.value, endIndex.value + 1)\n    )\n\n    const handleCurrentChange = (currentPage: number) => {\n      current.value = currentPage\n    }\n\n    const handleSortData = (data: any[], { e }: any) => {\n      if (field && Array.isArray(field.fieldValue)) {\n        const { oldIndex, newIndex } = e\n        const newIdx = newIndex + startIndex.value\n        const oldIdx = oldIndex + startIndex.value\n        field.fieldValue.splice(\n          newIdx,\n          0,\n          field.fieldValue.splice(oldIdx, 1)[0]\n        )\n      }\n    }\n\n    return () => {\n      const renderPagination = () => {\n        return [\n          h(\n            ElPagination,\n            {\n              background: true,\n              layout: 'total, prev, pager, next',\n              ...paginationProps.value,\n              class: ns.b('pagination'),\n              currentPage: current.value,\n              pageSize: pageSize.value,\n              total: total.value,\n              onCurrentChange: handleCurrentChange,\n            },\n            slots\n          ),\n        ]\n      }\n\n      const paginationVNode = hasPagination.value ? renderPagination() : []\n\n      const renderTable = (data: TableDataType) => {\n        return h(\n          ArrayBase,\n          {\n            keyMap,\n          },\n          {\n            default: () => [\n              slots?.prepend?.({ field, keyMap, getKey }),\n              h(\n                ElDraggableTable,\n                {\n                  ...attrs,\n                  data,\n                  draggableProps: {\n                    handle: sortHandleKls,\n                  },\n                  onSortData: handleSortData,\n                },\n                {\n                  ...slots,\n                  default: () => [slots.default?.({ field, keyMap, getKey })],\n                }\n              ),\n              ...paginationVNode,\n              slots?.addition?.({ field, keyMap, getKey }),\n            ],\n          }\n        )\n      }\n\n      return h(DIV_TAG, { class: ns.b() }, [renderTable(data.value)])\n    }\n  },\n})\n"],"names":["ArrayBase","data","_a"],"mappings":"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"}