pro-design-vue 1.0.0-rc.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.full.js +375 -206
- package/dist/index.full.min.js +8 -8
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +8 -8
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +375 -206
- package/es/components/drawer/src/drawer.vue2.mjs +1 -1
- package/es/components/drawer/src/drawer.vue2.mjs.map +1 -1
- package/es/components/form/src/Form.d.ts +1 -1
- package/es/components/form/src/base/BaseForm.d.ts +1 -1
- package/es/components/form/src/base/BaseForm.mjs +16 -11
- package/es/components/form/src/base/BaseForm.mjs.map +1 -1
- package/es/components/form/src/base/StepForm.d.ts +1 -1
- package/es/components/form/src/components/FormColWrapper.d.ts +9 -0
- package/es/components/form/src/components/FormColWrapper.mjs +9 -1
- package/es/components/form/src/components/FormColWrapper.mjs.map +1 -1
- package/es/components/form/src/components/FormGroup.d.ts +6 -4
- package/es/components/form/src/components/FormGroup.mjs +1 -1
- package/es/components/form/src/components/FormGroup.mjs.map +1 -1
- package/es/components/form/src/components/FormItem.d.ts +9 -0
- package/es/components/form/src/components/FormItem.mjs +32 -24
- package/es/components/form/src/components/FormItem.mjs.map +1 -1
- package/es/components/form/src/components/FormItems.mjs +2 -1
- package/es/components/form/src/components/FormItems.mjs.map +1 -1
- package/es/components/form/src/components/FormList.d.ts +6 -4
- package/es/components/form/src/components/FormList.mjs +1 -1
- package/es/components/form/src/components/FormList.mjs.map +1 -1
- package/es/components/form/src/components/FormListContainer.d.ts +6 -4
- package/es/components/form/src/components/FormListContainer.mjs +1 -1
- package/es/components/form/src/components/FormListContainer.mjs.map +1 -1
- package/es/components/form/src/components/FormSet.d.ts +6 -4
- package/es/components/form/src/components/FormSet.mjs +1 -1
- package/es/components/form/src/components/FormSet.mjs.map +1 -1
- package/es/components/form/src/components/FormSubmitter.d.ts +2 -2
- package/es/components/form/src/components/FormSubmitter.mjs +25 -7
- package/es/components/form/src/components/FormSubmitter.mjs.map +1 -1
- package/es/components/form/src/components/FormTitle.d.ts +6 -4
- package/es/components/form/src/components/FormTitle.mjs +11 -6
- package/es/components/form/src/components/FormTitle.mjs.map +1 -1
- package/es/components/form/src/hooks/useAction.d.ts +5 -3
- package/es/components/form/src/hooks/useAction.mjs +30 -11
- package/es/components/form/src/hooks/useAction.mjs.map +1 -1
- package/es/components/form/src/hooks/useFieldValue.d.ts +1 -1
- package/es/components/form/src/hooks/useFieldValue.mjs +11 -15
- package/es/components/form/src/hooks/useFieldValue.mjs.map +1 -1
- package/es/components/form/src/layouts/DrawerForm.d.ts +1 -1
- package/es/components/form/src/layouts/ModalForm.d.ts +1 -1
- package/es/components/form/src/layouts/QueryFilter.d.ts +1 -1
- package/es/components/form/src/layouts/QueryFilter.mjs +14 -4
- package/es/components/form/src/layouts/QueryFilter.mjs.map +1 -1
- package/es/components/form/src/layouts/StepsForm.d.ts +1 -1
- package/es/components/form/src/layouts/StepsForm.mjs +8 -8
- package/es/components/form/src/layouts/StepsForm.mjs.map +1 -1
- package/es/components/form/src/type.d.ts +24 -11
- package/es/components/form/src/utils/transformer.d.ts +3 -0
- package/es/components/form/src/utils/transformer.mjs +24 -0
- package/es/components/form/src/utils/transformer.mjs.map +1 -0
- package/es/components/modal/src/modal.vue2.mjs +1 -1
- package/es/components/modal/src/modal.vue2.mjs.map +1 -1
- package/es/components/table/src/components/Body/Body.vue.mjs.map +1 -1
- package/es/components/table/src/components/Body/Body.vue2.mjs +1 -2
- package/es/components/table/src/components/Body/Body.vue2.mjs.map +1 -1
- package/es/components/table/src/components/Body/BodyCell.mjs +2 -2
- package/es/components/table/src/components/Body/BodyCell.mjs.map +1 -1
- package/es/components/table/src/components/Body/BodyRow.vue.mjs.map +1 -1
- package/es/components/table/src/components/Body/BodyRow.vue2.mjs +3 -3
- package/es/components/table/src/components/Body/BodyRow.vue2.mjs.map +1 -1
- package/es/components/table/src/components/Drag/RowHandler.vue.mjs.map +1 -1
- package/es/components/table/src/components/Drag/RowHandler.vue2.mjs +17 -16
- package/es/components/table/src/components/Drag/RowHandler.vue2.mjs.map +1 -1
- package/es/components/table/src/components/Header/HeaderCellTitle.vue.mjs +19 -7
- package/es/components/table/src/components/Header/HeaderCellTitle.vue.mjs.map +1 -1
- package/es/components/table/src/components/Header/HeaderCellTitle.vue2.mjs +1 -0
- package/es/components/table/src/components/Header/HeaderCellTitle.vue2.mjs.map +1 -1
- package/es/components/table/src/components/Header/HeaderExtraCell.vue.mjs.map +1 -1
- package/es/components/table/src/components/Header/HeaderExtraCell.vue2.mjs +1 -0
- package/es/components/table/src/components/Header/HeaderExtraCell.vue2.mjs.map +1 -1
- package/es/components/table/src/components/InteralTable.vue.d.ts +21 -0
- package/es/components/table/src/components/InteralTable.vue.mjs.map +1 -1
- package/es/components/table/src/components/InteralTable.vue2.mjs +11 -5
- package/es/components/table/src/components/InteralTable.vue2.mjs.map +1 -1
- package/es/components/table/src/components/Table.d.ts +25 -4
- package/es/components/table/src/components/Table.mjs +48 -14
- package/es/components/table/src/components/Table.mjs.map +1 -1
- package/es/components/table/src/components/ToolBar/ToolBar.vue.mjs +25 -6
- package/es/components/table/src/components/ToolBar/ToolBar.vue.mjs.map +1 -1
- package/es/components/table/src/components/ToolBar/ToolBar.vue2.mjs.map +1 -1
- package/es/components/table/src/components/interface.d.ts +33 -5
- package/es/components/table/src/components/interface.mjs +10 -1
- package/es/components/table/src/components/interface.mjs.map +1 -1
- package/es/components/table/src/hooks/useCellProps.mjs +3 -1
- package/es/components/table/src/hooks/useCellProps.mjs.map +1 -1
- package/es/components/table/src/hooks/useContainer.mjs +1 -1
- package/es/components/table/src/hooks/useContainer.mjs.map +1 -1
- package/es/components/table/src/hooks/useFetchData.mjs +13 -18
- package/es/components/table/src/hooks/useFetchData.mjs.map +1 -1
- package/es/components/table/src/hooks/useHover.d.ts +3 -0
- package/es/components/table/src/hooks/useHover.mjs +3 -1
- package/es/components/table/src/hooks/useHover.mjs.map +1 -1
- package/es/components/table/src/hooks/usePagination.d.ts +1 -0
- package/es/components/table/src/hooks/usePagination.mjs +7 -2
- package/es/components/table/src/hooks/usePagination.mjs.map +1 -1
- package/es/components/table/src/utils/genProColumnToColumn.mjs +5 -4
- package/es/components/table/src/utils/genProColumnToColumn.mjs.map +1 -1
- package/es/components/table/src/utils/util.d.ts +1 -1
- package/es/components/table/src/utils/util.mjs +1 -1
- package/es/components/table/src/utils/util.mjs.map +1 -1
- package/es/index.d.ts +65 -21
- package/es/utils/validate.d.ts +1 -1
- package/es/utils/validate.mjs +1 -1
- package/es/utils/validate.mjs.map +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/drawer/src/drawer.vue2.js +1 -1
- package/lib/components/drawer/src/drawer.vue2.js.map +1 -1
- package/lib/components/form/src/Form.d.ts +1 -1
- package/lib/components/form/src/base/BaseForm.d.ts +1 -1
- package/lib/components/form/src/base/BaseForm.js +14 -9
- package/lib/components/form/src/base/BaseForm.js.map +1 -1
- package/lib/components/form/src/base/StepForm.d.ts +1 -1
- package/lib/components/form/src/components/FormColWrapper.d.ts +9 -0
- package/lib/components/form/src/components/FormColWrapper.js +9 -1
- package/lib/components/form/src/components/FormColWrapper.js.map +1 -1
- package/lib/components/form/src/components/FormGroup.d.ts +6 -4
- package/lib/components/form/src/components/FormGroup.js +1 -1
- package/lib/components/form/src/components/FormGroup.js.map +1 -1
- package/lib/components/form/src/components/FormItem.d.ts +9 -0
- package/lib/components/form/src/components/FormItem.js +32 -24
- package/lib/components/form/src/components/FormItem.js.map +1 -1
- package/lib/components/form/src/components/FormItems.js +2 -1
- package/lib/components/form/src/components/FormItems.js.map +1 -1
- package/lib/components/form/src/components/FormList.d.ts +6 -4
- package/lib/components/form/src/components/FormList.js +1 -1
- package/lib/components/form/src/components/FormList.js.map +1 -1
- package/lib/components/form/src/components/FormListContainer.d.ts +6 -4
- package/lib/components/form/src/components/FormListContainer.js +1 -1
- package/lib/components/form/src/components/FormListContainer.js.map +1 -1
- package/lib/components/form/src/components/FormSet.d.ts +6 -4
- package/lib/components/form/src/components/FormSet.js +1 -1
- package/lib/components/form/src/components/FormSet.js.map +1 -1
- package/lib/components/form/src/components/FormSubmitter.d.ts +2 -2
- package/lib/components/form/src/components/FormSubmitter.js +25 -7
- package/lib/components/form/src/components/FormSubmitter.js.map +1 -1
- package/lib/components/form/src/components/FormTitle.d.ts +6 -4
- package/lib/components/form/src/components/FormTitle.js +11 -6
- package/lib/components/form/src/components/FormTitle.js.map +1 -1
- package/lib/components/form/src/hooks/useAction.d.ts +5 -3
- package/lib/components/form/src/hooks/useAction.js +29 -9
- package/lib/components/form/src/hooks/useAction.js.map +1 -1
- package/lib/components/form/src/hooks/useFieldValue.d.ts +1 -1
- package/lib/components/form/src/hooks/useFieldValue.js +11 -15
- package/lib/components/form/src/hooks/useFieldValue.js.map +1 -1
- package/lib/components/form/src/layouts/DrawerForm.d.ts +1 -1
- package/lib/components/form/src/layouts/ModalForm.d.ts +1 -1
- package/lib/components/form/src/layouts/QueryFilter.d.ts +1 -1
- package/lib/components/form/src/layouts/QueryFilter.js +14 -4
- package/lib/components/form/src/layouts/QueryFilter.js.map +1 -1
- package/lib/components/form/src/layouts/StepsForm.d.ts +1 -1
- package/lib/components/form/src/layouts/StepsForm.js +8 -8
- package/lib/components/form/src/layouts/StepsForm.js.map +1 -1
- package/lib/components/form/src/type.d.ts +24 -11
- package/lib/components/form/src/utils/transformer.d.ts +3 -0
- package/lib/components/form/src/utils/transformer.js +28 -0
- package/lib/components/form/src/utils/transformer.js.map +1 -0
- package/lib/components/modal/src/modal.vue2.js +1 -1
- package/lib/components/modal/src/modal.vue2.js.map +1 -1
- package/lib/components/table/src/components/Body/Body.vue.js.map +1 -1
- package/lib/components/table/src/components/Body/Body.vue2.js +1 -2
- package/lib/components/table/src/components/Body/Body.vue2.js.map +1 -1
- package/lib/components/table/src/components/Body/BodyCell.js +2 -2
- package/lib/components/table/src/components/Body/BodyCell.js.map +1 -1
- package/lib/components/table/src/components/Body/BodyRow.vue.js.map +1 -1
- package/lib/components/table/src/components/Body/BodyRow.vue2.js +3 -3
- package/lib/components/table/src/components/Body/BodyRow.vue2.js.map +1 -1
- package/lib/components/table/src/components/Drag/RowHandler.vue.js.map +1 -1
- package/lib/components/table/src/components/Drag/RowHandler.vue2.js +17 -16
- package/lib/components/table/src/components/Drag/RowHandler.vue2.js.map +1 -1
- package/lib/components/table/src/components/Header/HeaderCellTitle.vue.js +18 -6
- package/lib/components/table/src/components/Header/HeaderCellTitle.vue.js.map +1 -1
- package/lib/components/table/src/components/Header/HeaderCellTitle.vue2.js +1 -0
- package/lib/components/table/src/components/Header/HeaderCellTitle.vue2.js.map +1 -1
- package/lib/components/table/src/components/Header/HeaderExtraCell.vue.js.map +1 -1
- package/lib/components/table/src/components/Header/HeaderExtraCell.vue2.js +1 -0
- package/lib/components/table/src/components/Header/HeaderExtraCell.vue2.js.map +1 -1
- package/lib/components/table/src/components/InteralTable.vue.d.ts +21 -0
- package/lib/components/table/src/components/InteralTable.vue.js.map +1 -1
- package/lib/components/table/src/components/InteralTable.vue2.js +12 -6
- package/lib/components/table/src/components/InteralTable.vue2.js.map +1 -1
- package/lib/components/table/src/components/Table.d.ts +25 -4
- package/lib/components/table/src/components/Table.js +47 -13
- package/lib/components/table/src/components/Table.js.map +1 -1
- package/lib/components/table/src/components/ToolBar/ToolBar.vue.js +24 -5
- package/lib/components/table/src/components/ToolBar/ToolBar.vue.js.map +1 -1
- package/lib/components/table/src/components/ToolBar/ToolBar.vue2.js.map +1 -1
- package/lib/components/table/src/components/interface.d.ts +33 -5
- package/lib/components/table/src/components/interface.js +10 -1
- package/lib/components/table/src/components/interface.js.map +1 -1
- package/lib/components/table/src/hooks/useCellProps.js +3 -1
- package/lib/components/table/src/hooks/useCellProps.js.map +1 -1
- package/lib/components/table/src/hooks/useContainer.js +1 -1
- package/lib/components/table/src/hooks/useContainer.js.map +1 -1
- package/lib/components/table/src/hooks/useFetchData.js +13 -18
- package/lib/components/table/src/hooks/useFetchData.js.map +1 -1
- package/lib/components/table/src/hooks/useHover.d.ts +3 -0
- package/lib/components/table/src/hooks/useHover.js +2 -0
- package/lib/components/table/src/hooks/useHover.js.map +1 -1
- package/lib/components/table/src/hooks/usePagination.d.ts +1 -0
- package/lib/components/table/src/hooks/usePagination.js +7 -1
- package/lib/components/table/src/hooks/usePagination.js.map +1 -1
- package/lib/components/table/src/utils/genProColumnToColumn.js +5 -4
- package/lib/components/table/src/utils/genProColumnToColumn.js.map +1 -1
- package/lib/components/table/src/utils/util.d.ts +1 -1
- package/lib/components/table/src/utils/util.js +1 -1
- package/lib/components/table/src/utils/util.js.map +1 -1
- package/lib/index.d.ts +65 -21
- package/lib/utils/validate.d.ts +1 -1
- package/lib/utils/validate.js +1 -1
- package/lib/utils/validate.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +1 -1
- package/theme-chalk/css-var.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/pro-form.css +1 -1
- package/theme-chalk/src/css-var.less +154 -677
- package/theme-chalk/src/form.less +5 -0
- package/theme-chalk/src/table/alert.less +1 -0
- package/theme-chalk/src/table/table.less +3 -3
- package/theme-chalk/src/common/css-var.less +0 -914
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BodyRow.vue.mjs","sources":["../../../../../../../../packages/components/table/src/components/Body/BodyRow.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-08 21:59:48\n * @LastEditors: shen\n * @LastEditTime: 2025-09-10 15:16:56\n * @Description:\n-->\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n ref,\n watch,\n onBeforeUnmount,\n computed,\n nextTick,\n watchEffect,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRows, useProvideBodyRow } from '../context/BodyRowsContext'\nimport { ExpandColumnKey } from '../../hooks/useColumns'\nimport { RenderSlot } from '../../utils/renderVNode'\nimport { useEditInject } from '../../hooks/useEdit'\nimport { useCellSelection } from '../../hooks/useCellSelection'\nimport { useCellKeyboard } from '../../hooks/useCellKeyboard'\nimport { useInjectHover } from '../../hooks/useHover'\nimport { addClass, removeClass } from '../../utils/class'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport eagerComputed from '../../utils/eagerComputed'\nimport classNames from '../../utils/classNames'\nimport BodyCell from './BodyCell'\nimport ExpandedRow from './ExpandedRow.vue'\nimport BodyExtraCell from './BodyExtraCell.vue'\nimport ExpandIcon from '../ExpandIcon.vue'\n\nimport type { CSSProperties, PropType } from 'vue'\nimport type { RowClassName, RowType, Key } from '../interface'\n\nlet uniIdCount = 0\nexport default defineComponent({\n name: 'ProTableBodyRow',\n components: {\n ExpandIcon,\n BodyCell,\n ExpandedRow,\n BodyExtraCell,\n RenderSlot,\n },\n inheritAttrs: false,\n props: {\n prefixCls: String as PropType<string>,\n isExpandRow: Boolean as PropType<boolean>,\n record: { type: Object },\n type: { type: String as PropType<RowType> },\n rowKey: { type: [Number, String] as PropType<Key>, required: true },\n supportExpand: Boolean,\n pos: Number as PropType<number>,\n rowIndex: Number as PropType<number>,\n flattenRowIndex: Number,\n indent: Number as PropType<number>,\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n getRowClassName: { type: Function as PropType<RowClassName<any>> },\n },\n setup(props) {\n const rowUniId = 'row_uni_id_' + uniIdCount++\n const tableContext = useInjectTable()\n const rowInstance = getCurrentInstance()\n\n const { editCellKeys, closeEditor, openEditor } = useEditInject()\n\n let isUnmount = false\n const bodyRow = ref()\n\n const { onCellMousedown, onCellMousemove, onCellClick } = useCellSelection()\n const { onCellKeydown } = useCellKeyboard()\n\n const calMaxHeight = () => {\n if (isUnmount) return\n let rowHeight = 0\n let autoCells: HTMLDivElement[] = []\n if (bodyRow.value) {\n autoCells = bodyRow.value.querySelectorAll('div[data-cell-auto=true]')\n }\n autoCells.forEach((autoCell: HTMLDivElement) => {\n const { offsetWidth, offsetHeight } = autoCell\n let autoCellHeight = offsetWidth ? offsetHeight : 0\n const parentStyle = getComputedStyle(autoCell.parentNode as Element)\n autoCellHeight +=\n parseFloat(parentStyle.getPropertyValue('border-top-width')) +\n parseFloat(parentStyle.getPropertyValue('border-bottom-width'))\n rowHeight = rowHeight > autoCellHeight ? rowHeight : autoCellHeight\n })\n if (autoCells.length) {\n tableContext.addRowHeight(rowUniId, props.rowKey!, rowHeight)\n } else {\n tableContext.removeRowHeight(rowUniId)\n }\n }\n\n watch(\n () => props.rowKey,\n () => {\n calMaxHeight()\n },\n { flush: 'post' },\n )\n\n const resizeObserver: ResizeObserver = new ResizeObserver(() => {\n calMaxHeight()\n })\n\n const { columns, columnStartIndex } = useInjectBodyRows()\n const mergedColumns = computed(() =>\n (props.type === 'center'\n ? tableContext.centerRowColumnsMap.value.get(props.rowKey)\n : columns.value)!.filter((item) => !!item),\n )\n\n const { tooltipOpen, leftPopupContainer, centerPopupContainer, rightPopupContainer } =\n useInjectBody()\n const { handleCellBlur, handleCellHover, hoverRowKey, hoverColumnKey } = useInjectHover()\n\n const popupContainer = computed(() =>\n props.type === 'left'\n ? leftPopupContainer.value\n : props.type === 'center'\n ? centerPopupContainer.value\n : props.type === 'right'\n ? rightPopupContainer.value\n : null,\n )\n\n const isDragging = eagerComputed(() => tableContext.draggingRowKey.value === props.rowKey)\n const isRowHover = eagerComputed(() => hoverRowKey.value === props.rowKey)\n\n watch(\n [isRowHover, bodyRow],\n () => {\n bodyRow.value &&\n (isRowHover.value\n ? addClass(bodyRow.value, `${props.prefixCls}-row-hover`)\n : removeClass(bodyRow.value, `${props.prefixCls}-row-hover`))\n },\n { immediate: true, flush: 'post' },\n )\n\n const mergedTooltipOpen = eagerComputed(() => tooltipOpen.value && isRowHover.value)\n\n let timer: any\n onBeforeUnmount(() => {\n isUnmount = true\n resizeObserver.disconnect()\n clearTimeout(timer)\n tableContext.removeRowHeight(rowUniId)\n })\n\n const hasMultiRowSpanInfo = eagerComputed(() => {\n return !tableContext.hasMultiRowSpanInfo.value[props.rowKey!]\n })\n\n const customRowProps = computed(() => {\n return tableContext.props.customRow?.(props.record!, props.rowIndex)\n })\n\n const rowSelectionType = computed(() => {\n return tableContext.props.rowSelection?.type\n })\n\n const isExpanded = ref(false)\n const expandedRowKeys = computed(() => tableContext.expandedRowKeys.value)\n const expanded = eagerComputed(() => expandedRowKeys.value.has?.(props.rowKey!))\n const expandIconColumnIndex = computed(() => tableContext.expandIconColumnIndex.value || 0)\n const indentSize = computed(() => tableContext.indentSize.value)\n\n watchEffect(() => {\n if (expanded.value) {\n isExpanded.value = true\n }\n })\n\n const rowExpandable = computed(\n () =>\n tableContext.expandType.value === 'row' &&\n tableContext.props.rowExpandable?.(props.record!),\n )\n\n const nestExpandable = computed(() => tableContext.expandType.value === 'nest')\n\n const hasNestChildren = computed(\n () =>\n !!(\n tableContext.childrenColumnName.value &&\n props.record?.[tableContext.childrenColumnName.value]\n ),\n )\n const mergedExpandable = computed(() => rowExpandable.value || nestExpandable.value)\n\n const onInternalTriggerExpand = (record: any, event: any) => {\n tableContext.onTriggerExpand(record, props.rowKey!, event)\n }\n\n const mergedRowHeights = computed(() => tableContext.mergedRowHeights.value)\n\n const height = eagerComputed(() => mergedRowHeights.value[props.rowKey!])\n const cellHeight = eagerComputed(() => tableContext.rowHeights.value[props.rowKey!])\n\n const isSelected = computed(\n () =>\n tableContext.props.highlightSelectRow &&\n tableContext.selection.derivedSelectedKeySet.value.has(props.rowKey!),\n )\n\n const rowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n const isEven = rowIndex! % 2 == 0\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-row-level-${indent}`]: true,\n [`${prefixCls}-row-hover`]: isRowHover.value,\n [`${prefixCls}-row-dragging`]: isDragging.value,\n [`${prefixCls}-row-dragging-insert-target`]:\n tableContext.insertToRowKey.value === props.rowKey,\n [`${prefixCls}-row-odd`]: !isEven,\n [`${prefixCls}-row-even`]: isEven,\n [`${prefixCls}-no-height`]: !height.value,\n [`${prefixCls}-row-selected`]: isSelected.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandRowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-expanded-row`]: true,\n [`${prefixCls}-expanded-row-level-${indent! + 1}`]: true,\n [`${prefixCls}-no-height`]: !height.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandColumnWidth = eagerComputed(() => {\n return tableContext.allCellProps.value[props.rowKey!]?.[ExpandColumnKey]?.props?.style?.width\n })\n\n const rowStyle = computed<CSSProperties>(() => {\n const style: CSSProperties = {\n opacity: 1,\n [`--${props.prefixCls}-row-bg`]: `var(--${props.prefixCls}-row-bg-${props.rowKey}, var(--${props.prefixCls}-bg))`,\n }\n if (hasMultiRowSpanInfo.value) {\n style.transform = `translateY(${props.pos}px)`\n } else {\n style.top = `${props.pos}px`\n }\n if (height.value !== undefined) {\n style.height = `${height.value}px`\n } else {\n style.height = `${tableContext.baseHeight.value}px`\n }\n if (props.isExpandRow && columnStartIndex.value === 0) {\n style.width = expandColumnWidth.value\n style.minWidth = '100%'\n }\n return style\n })\n\n watch(\n () => ({ ...rowStyle.value }),\n (newStyle, oldStyle = {}) => {\n if (tableContext.animateRows.value && !tableContext.useAnimate.value) {\n if (\n newStyle.top !== oldStyle.top ||\n newStyle.height !== oldStyle.height ||\n newStyle.transform !== oldStyle.transform\n ) {\n nextTick(() => {\n clearTimeout(timer)\n if (rowInstance?.vnode.el && rowInstance.vnode.el.style) {\n rowInstance.vnode.el.style.transition = 'none'\n timer = setTimeout(() => {\n if (rowInstance?.vnode?.el?.style) {\n rowInstance.vnode.el.style.transition = null\n }\n }, 100)\n }\n })\n }\n }\n },\n { immediate: true },\n )\n\n useProvideBodyRow({\n top: computed(() => props.pos!),\n height: computed(() =>\n height.value !== undefined ? height.value : tableContext.baseHeight.value,\n ),\n rowKey: computed(() => props.rowKey),\n })\n\n const cellClass = computed(() => ({\n [`${props.prefixCls}-cell`]: true,\n [`${props.prefixCls}-position-absolute`]: true,\n }))\n\n return {\n rowClass,\n rowStyle,\n cellClass,\n tableContext,\n mergedRowHeights,\n handleCellBlur,\n handleCellHover,\n handleClick: (event: any) => {\n tableContext.props.expandRowByClick &&\n mergedExpandable.value &&\n onInternalTriggerExpand(props.record, event)\n },\n rowSelectionType,\n nestExpandable,\n hasNestChildren,\n mergedExpandable,\n expandIconColumnIndex,\n indentSize,\n expanded,\n onInternalTriggerExpand,\n customRowProps,\n expandColumnKey: ExpandColumnKey,\n expandRowClass,\n mergedColumns,\n height,\n cellHeight,\n columnStartIndex,\n resizeObserver,\n calMaxHeight,\n bodyRow,\n hoverRowKey,\n hoverColumnKey,\n xVirtual: eagerComputed(() => tableContext.xVirtual.value),\n getPopupContainer: () => popupContainer.value!,\n editCellKeys,\n closeEditor,\n openEditor,\n mergedTooltipOpen,\n onCellMousedown,\n onCellKeydown,\n onCellMousemove,\n onCellClick,\n }\n },\n})\n</script>\n\n<template>\n <template v-if=\"isExpandRow\">\n <div\n v-if=\"columnStartIndex === 0\"\n ref=\"bodyRow\"\n :data-row-key=\"rowKey\"\n :class=\"expandRowClass\"\n :style=\"rowStyle\"\n role=\"row\"\n >\n <ExpandedRow\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n />\n </div>\n </template>\n <div\n v-else\n v-bind=\"customRowProps\"\n ref=\"bodyRow\"\n :class=\"rowClass\"\n :style=\"rowStyle\"\n :data-row-key=\"rowKey\"\n role=\"row\"\n @click=\"handleClick\"\n >\n <RenderSlot>\n <template v-for=\"(column, index) in mergedColumns\" :key=\"column && column.columnKey\">\n <BodyExtraCell\n v-if=\"column && column.__Internal__Column__\"\n :prefix-cls=\"prefixCls\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex!\"\n :type=\"type\"\n :column=\"mergedColumns?.[index]\"\n :expanded=\"expanded\"\n :support-expand=\"mergedExpandable\"\n :record=\"record\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @mouseleave=\"handleCellBlur\"\n />\n <BodyCell\n v-else-if=\"column\"\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :type=\"type\"\n :row-index=\"rowIndex!\"\n :flatten-row-index=\"flattenRowIndex\"\n :wrap-text=\"wrapText\"\n :column=\"column\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n :has-append-node=\"column.columnIndex === expandIconColumnIndex && nestExpandable\"\n :height=\"cellHeight\"\n :get-popup-container=\"getPopupContainer\"\n :tooltip-open=\"mergedTooltipOpen && hoverColumnKey === column.columnKey\"\n :edit-cell-keys=\"editCellKeys\"\n @closeEditor=\"closeEditor\"\n @openEditor=\"openEditor\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @cellLeave=\"handleCellBlur\"\n @mousedown=\"onCellMousedown\"\n @mousemove=\"onCellMousemove\"\n @keydown=\"onCellKeydown\"\n @click=\"onCellClick\"\n >\n <template #appendNode>\n <div :class=\"`${prefixCls}-append-node`\">\n <span\n :style=\"`padding-left: ${(indent || 0) * indentSize}px`\"\n :class=\"`${prefixCls}-row-indent indent-level-${indent}`\"\n ></span>\n <ExpandIcon\n :expanded=\"expanded\"\n :prefix-cls=\"prefixCls\"\n :expandable=\"hasNestChildren\"\n :record=\"record\"\n :disabled=\"!mergedExpandable\"\n @expand=\"onInternalTriggerExpand\"\n />\n </div>\n </template>\n </BodyCell>\n </template>\n </RenderSlot>\n <div v-if=\"type !== 'center'\" :class=\"`${prefixCls}-cell-shadow-${type}`\"></div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_Fragment","_normalizeClass","_normalizeStyle","_createVNode","_mergeProps","_withCtx","_renderList","_createBlock","_createElementVNode"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"BodyRow.vue.mjs","sources":["../../../../../../../../packages/components/table/src/components/Body/BodyRow.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-08 21:59:48\n * @LastEditors: shen\n * @LastEditTime: 2025-09-29 09:00:32\n * @Description:\n-->\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n ref,\n watch,\n onBeforeUnmount,\n computed,\n nextTick,\n watchEffect,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRows, useProvideBodyRow } from '../context/BodyRowsContext'\nimport { ExpandColumnKey } from '../../hooks/useColumns'\nimport { RenderSlot } from '../../utils/renderVNode'\nimport { useEditInject } from '../../hooks/useEdit'\nimport { useCellSelection } from '../../hooks/useCellSelection'\nimport { useCellKeyboard } from '../../hooks/useCellKeyboard'\nimport { useInjectHover } from '../../hooks/useHover'\nimport { addClass, removeClass } from '../../utils/class'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport eagerComputed from '../../utils/eagerComputed'\nimport classNames from '../../utils/classNames'\nimport BodyCell from './BodyCell'\nimport ExpandedRow from './ExpandedRow.vue'\nimport BodyExtraCell from './BodyExtraCell.vue'\nimport ExpandIcon from '../ExpandIcon.vue'\n\nimport type { CSSProperties, PropType } from 'vue'\nimport type { RowClassName, RowType, Key } from '../interface'\n\nlet uniIdCount = 0\nexport default defineComponent({\n name: 'ProTableBodyRow',\n components: {\n ExpandIcon,\n BodyCell,\n ExpandedRow,\n BodyExtraCell,\n RenderSlot,\n },\n inheritAttrs: false,\n props: {\n prefixCls: String as PropType<string>,\n isExpandRow: Boolean as PropType<boolean>,\n record: { type: Object },\n type: { type: String as PropType<RowType> },\n rowKey: { type: [Number, String] as PropType<Key>, required: true },\n supportExpand: Boolean,\n pos: Number as PropType<number>,\n rowIndex: Number as PropType<number>,\n flattenRowIndex: Number,\n indent: Number as PropType<number>,\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n getRowClassName: { type: Function as PropType<RowClassName<any>> },\n },\n setup(props) {\n const rowUniId = 'row_uni_id_' + uniIdCount++\n const tableContext = useInjectTable()\n const rowInstance = getCurrentInstance()\n\n const { editCellKeys, closeEditor, openEditor } = useEditInject()\n\n let isUnmount = false\n const bodyRow = ref()\n\n const { onCellMousedown, onCellMousemove, onCellClick } = useCellSelection()\n const { onCellKeydown } = useCellKeyboard()\n\n const calMaxHeight = () => {\n if (isUnmount) return\n let rowHeight = 0\n let autoCells: HTMLDivElement[] = []\n if (bodyRow.value) {\n autoCells = bodyRow.value.querySelectorAll('div[data-cell-auto=true]')\n }\n autoCells.forEach((autoCell: HTMLDivElement) => {\n const { offsetWidth, offsetHeight } = autoCell\n let autoCellHeight = offsetWidth ? offsetHeight : 0\n const parentStyle = getComputedStyle(autoCell.parentNode as Element)\n autoCellHeight +=\n parseFloat(parentStyle.getPropertyValue('border-top-width')) +\n parseFloat(parentStyle.getPropertyValue('border-bottom-width'))\n rowHeight = rowHeight > autoCellHeight ? rowHeight : autoCellHeight\n })\n if (autoCells.length) {\n tableContext.addRowHeight(rowUniId, props.rowKey!, rowHeight)\n } else {\n tableContext.removeRowHeight(rowUniId)\n }\n }\n\n watch(\n () => props.rowKey,\n () => {\n calMaxHeight()\n },\n { flush: 'post' },\n )\n\n const resizeObserver: ResizeObserver = new ResizeObserver(() => {\n calMaxHeight()\n })\n\n const { columns, columnStartIndex } = useInjectBodyRows()\n const mergedColumns = computed(() =>\n (props.type === 'center'\n ? tableContext.centerRowColumnsMap.value.get(props.rowKey)\n : columns.value)!.filter((item) => !!item),\n )\n\n const { tooltipOpen, leftPopupContainer, centerPopupContainer, rightPopupContainer } =\n useInjectBody()\n const { handleCellBlur, handleCellHover, hoverRowKey, hoverColumnKey, rowHover } =\n useInjectHover()\n\n const popupContainer = computed(() =>\n props.type === 'left'\n ? leftPopupContainer.value\n : props.type === 'center'\n ? centerPopupContainer.value\n : props.type === 'right'\n ? rightPopupContainer.value\n : null,\n )\n\n const isDragging = eagerComputed(() => tableContext.draggingRowKey.value === props.rowKey)\n const isRowHover = eagerComputed(() => hoverRowKey.value === props.rowKey)\n\n watch(\n [isRowHover, bodyRow],\n () => {\n bodyRow.value &&\n rowHover.value &&\n (isRowHover.value\n ? addClass(bodyRow.value, `${props.prefixCls}-row-hover`)\n : removeClass(bodyRow.value, `${props.prefixCls}-row-hover`))\n },\n { immediate: true, flush: 'post' },\n )\n\n const mergedTooltipOpen = eagerComputed(() => tooltipOpen.value && isRowHover.value)\n\n let timer: any\n onBeforeUnmount(() => {\n isUnmount = true\n resizeObserver.disconnect()\n clearTimeout(timer)\n tableContext.removeRowHeight(rowUniId)\n })\n\n const hasMultiRowSpanInfo = eagerComputed(() => {\n return !tableContext.hasMultiRowSpanInfo.value[props.rowKey!]\n })\n\n const customRowProps = computed(() => {\n return tableContext.props.customRow?.(props.record!, props.rowIndex)\n })\n\n const rowSelectionType = computed(() => {\n return tableContext.props.rowSelection?.type\n })\n\n const isExpanded = ref(false)\n const expandedRowKeys = computed(() => tableContext.expandedRowKeys.value)\n const expanded = eagerComputed(() => expandedRowKeys.value.has?.(props.rowKey!))\n const expandIconColumnIndex = computed(() => tableContext.expandIconColumnIndex.value || 0)\n const indentSize = computed(() => tableContext.indentSize.value)\n\n watchEffect(() => {\n if (expanded.value) {\n isExpanded.value = true\n }\n })\n\n const rowExpandable = computed(\n () =>\n tableContext.expandType.value === 'row' &&\n tableContext.props.rowExpandable?.(props.record!),\n )\n\n const nestExpandable = computed(() => tableContext.expandType.value === 'nest')\n\n const hasNestChildren = computed(\n () =>\n !!(\n tableContext.childrenColumnName.value &&\n props.record?.[tableContext.childrenColumnName.value]\n ),\n )\n const mergedExpandable = computed(() => rowExpandable.value || nestExpandable.value)\n\n const onInternalTriggerExpand = (record: any, event: any) => {\n tableContext.onTriggerExpand(record, props.rowKey!, event)\n }\n\n const mergedRowHeights = computed(() => tableContext.mergedRowHeights.value)\n\n const height = eagerComputed(() => mergedRowHeights.value[props.rowKey!])\n const cellHeight = eagerComputed(() => tableContext.rowHeights.value[props.rowKey!])\n\n const isSelected = computed(\n () =>\n tableContext.props.highlightSelectRow &&\n tableContext.selection.derivedSelectedKeySet.value.has(props.rowKey!),\n )\n\n const rowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n const isEven = rowIndex! % 2 == 0\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-row-level-${indent}`]: true,\n [`${prefixCls}-row-hover`]: isRowHover.value && rowHover.value,\n [`${prefixCls}-row-dragging`]: isDragging.value,\n [`${prefixCls}-row-dragging-insert-target`]:\n tableContext.insertToRowKey.value === props.rowKey,\n [`${prefixCls}-row-odd`]: !isEven,\n [`${prefixCls}-row-even`]: isEven,\n [`${prefixCls}-no-height`]: !height.value,\n [`${prefixCls}-row-selected`]: isSelected.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandRowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-expanded-row`]: true,\n [`${prefixCls}-expanded-row-level-${indent! + 1}`]: true,\n [`${prefixCls}-no-height`]: !height.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandColumnWidth = eagerComputed(() => {\n return tableContext.allCellProps.value[props.rowKey!]?.[ExpandColumnKey]?.props?.style?.width\n })\n\n const rowStyle = computed<CSSProperties>(() => {\n const style: CSSProperties = {\n opacity: 1,\n [`--${props.prefixCls}-row-bg`]: `var(--${props.prefixCls}-row-bg-${props.rowKey}, var(--${props.prefixCls}-bg))`,\n }\n if (hasMultiRowSpanInfo.value) {\n style.transform = `translateY(${props.pos}px)`\n } else {\n style.top = `${props.pos}px`\n }\n if (height.value !== undefined) {\n style.height = `${height.value}px`\n } else {\n style.height = `${tableContext.baseHeight.value}px`\n }\n if (props.isExpandRow && columnStartIndex.value === 0) {\n style.width = expandColumnWidth.value\n style.minWidth = '100%'\n }\n return style\n })\n\n watch(\n () => ({ ...rowStyle.value }),\n (newStyle, oldStyle = {}) => {\n if (tableContext.animateRows.value && !tableContext.useAnimate.value) {\n if (\n newStyle.top !== oldStyle.top ||\n newStyle.height !== oldStyle.height ||\n newStyle.transform !== oldStyle.transform\n ) {\n nextTick(() => {\n clearTimeout(timer)\n if (rowInstance?.vnode.el && rowInstance.vnode.el.style) {\n rowInstance.vnode.el.style.transition = 'none'\n timer = setTimeout(() => {\n if (rowInstance?.vnode?.el?.style) {\n rowInstance.vnode.el.style.transition = null\n }\n }, 100)\n }\n })\n }\n }\n },\n { immediate: true },\n )\n\n useProvideBodyRow({\n top: computed(() => props.pos!),\n height: computed(() =>\n height.value !== undefined ? height.value : tableContext.baseHeight.value,\n ),\n rowKey: computed(() => props.rowKey),\n })\n\n const cellClass = computed(() => ({\n [`${props.prefixCls}-cell`]: true,\n [`${props.prefixCls}-position-absolute`]: true,\n }))\n\n return {\n rowClass,\n rowStyle,\n cellClass,\n tableContext,\n mergedRowHeights,\n handleCellBlur,\n handleCellHover,\n handleClick: (event: any) => {\n tableContext.props.expandRowByClick &&\n mergedExpandable.value &&\n onInternalTriggerExpand(props.record, event)\n },\n rowSelectionType,\n nestExpandable,\n hasNestChildren,\n mergedExpandable,\n expandIconColumnIndex,\n indentSize,\n expanded,\n onInternalTriggerExpand,\n customRowProps,\n expandColumnKey: ExpandColumnKey,\n expandRowClass,\n mergedColumns,\n height,\n cellHeight,\n columnStartIndex,\n resizeObserver,\n calMaxHeight,\n bodyRow,\n hoverRowKey,\n hoverColumnKey,\n xVirtual: eagerComputed(() => tableContext.xVirtual.value),\n getPopupContainer: () => popupContainer.value!,\n editCellKeys,\n closeEditor,\n openEditor,\n mergedTooltipOpen,\n onCellMousedown,\n onCellKeydown,\n onCellMousemove,\n onCellClick,\n }\n },\n})\n</script>\n\n<template>\n <template v-if=\"isExpandRow\">\n <div\n v-if=\"columnStartIndex === 0\"\n ref=\"bodyRow\"\n :data-row-key=\"rowKey\"\n :class=\"expandRowClass\"\n :style=\"rowStyle\"\n role=\"row\"\n >\n <ExpandedRow\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n />\n </div>\n </template>\n <div\n v-else\n v-bind=\"customRowProps\"\n ref=\"bodyRow\"\n :class=\"rowClass\"\n :style=\"rowStyle\"\n :data-row-key=\"rowKey\"\n role=\"row\"\n @click=\"handleClick\"\n >\n <RenderSlot>\n <template v-for=\"(column, index) in mergedColumns\" :key=\"column && column.columnKey\">\n <BodyExtraCell\n v-if=\"column && column.__Internal__Column__\"\n :prefix-cls=\"prefixCls\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex!\"\n :type=\"type\"\n :column=\"mergedColumns?.[index]\"\n :expanded=\"expanded\"\n :support-expand=\"mergedExpandable\"\n :record=\"record\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @mouseleave=\"handleCellBlur\"\n />\n <BodyCell\n v-else-if=\"column\"\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :type=\"type\"\n :row-index=\"rowIndex!\"\n :flatten-row-index=\"flattenRowIndex\"\n :wrap-text=\"wrapText\"\n :column=\"column\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n :has-append-node=\"column.columnIndex === expandIconColumnIndex && nestExpandable\"\n :height=\"cellHeight\"\n :get-popup-container=\"getPopupContainer\"\n :tooltip-open=\"mergedTooltipOpen && hoverColumnKey === column.columnKey\"\n :edit-cell-keys=\"editCellKeys\"\n @closeEditor=\"closeEditor\"\n @openEditor=\"openEditor\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @cellLeave=\"handleCellBlur\"\n @mousedown=\"onCellMousedown\"\n @mousemove=\"onCellMousemove\"\n @keydown=\"onCellKeydown\"\n @click=\"onCellClick\"\n >\n <template #appendNode>\n <div :class=\"`${prefixCls}-append-node`\">\n <span\n :style=\"`padding-left: ${(indent || 0) * indentSize}px`\"\n :class=\"`${prefixCls}-row-indent indent-level-${indent}`\"\n ></span>\n <ExpandIcon\n :expanded=\"expanded\"\n :prefix-cls=\"prefixCls\"\n :expandable=\"hasNestChildren\"\n :record=\"record\"\n :disabled=\"!mergedExpandable\"\n @expand=\"onInternalTriggerExpand\"\n />\n </div>\n </template>\n </BodyCell>\n </template>\n </RenderSlot>\n <div v-if=\"type !== 'center'\" :class=\"`${prefixCls}-cell-shadow-${type}`\"></div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_Fragment","_normalizeClass","_normalizeStyle","_createVNode","_mergeProps","_withCtx","_renderList","_createBlock","_createElementVNode"],"mappings":";;;;;;;;;;;;SA0WkB,IAAA,CAAA,WAAA,IAAAA,SAAA,EAAA,EAAhBC,kBAAA;AAAA,IAkBWC,QAAA;AAAA,IAAA,EAAA,KAAA,CAAA,EAAA;AAAA,IAAA;AAAA,MAhBD,KAAA,gBAAA,KAAgB,CAAA,iBADxBD,mBAgBM,KAAA,EAAA;AAAA,QAAA,GAAA,EAAA,CAAA;AAAA,QAdJ,GAAA,EAAI,SAAA;AAAA,QACH,gBAAc,IAAA,CAAA,MAAA;AAAA,QACd,KAAA,EAAKE,cAAA,CAAE,IAAA,CAAA,cAAc,CAAA;AAAA,QACrB,KAAA,EAAKC,cAAA,CAAE,IAAA,CAAA,QAAQ,CAAA;AAAA,QAChB,IAAA,EAAK;AAAA,OAAA,EAAA;AAAA,QAELC,YAOE,sBAAA,EAAA;AAAA,UANC,cAAY,IAAA,CAAA,SAAA;AAAA,UACZ,MAAM,IAAA,CAAA,MAAA;AAAA,UACN,WAAS,IAAA,CAAA,MAAA;AAAA,UACT,aAAW,IAAA,CAAA,QAAA;AAAA,UACX,mBAAiB,IAAA,CAAA,cAAA;AAAA,UACjB,kBAAgB,IAAA,CAAA;AAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,YAAA,EAAA,QAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA;AAAA;;;;qBAIvBJ,kBAAA,CA2EM,KAAA,EA3ENK,UAAA,CA2EM,EAAA,GAAA,EAAA,CAAA,EAAA,EAzEI,IAAA,CAAA,cAAA,EAAc;AAAA,IACtB,GAAA,EAAI,SAAA;AAAA,IACH,OAAO,IAAA,CAAA,QAAA;AAAA,IACP,OAAO,IAAA,CAAA,QAAA;AAAA,IACP,gBAAc,IAAA,CAAA,MAAA;AAAA,IACf,IAAA,EAAK,KAAA;AAAA,IACJ,OAAA,EAAK,MAAA,CAAA,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAE,IAAA,CAAA,WAAA,IAAA,IAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA;AAAA,GAAA,CAAA,EAAA;AAAA,IAERD,WAAA,CA+Da,uBAAA,IAAA,EAAA;AAAA,MAAA,OAAA,EAAAE,QA9DD,MAAwC;AAAA,SAAAP,SAAA,CAAA,IAAA,CAAA,EAAlDC,kBAAA;AAAA,UA6DWC,QAAA;AAAA,UAAA,IAAA;AAAA,UAAAM,UAAA,CA7DyB,IAAA,CAAA,aAAA,EAAa,CAA/B,QAAQ,KAAA,KAAK;;;;;gBAA0B,GAAA,EAAA,UAAU,MAAA,CAAO;AAAA,eAAA;AAAA;gBAEhE,UAAU,MAAA,CAAO,oBAAA,iBADzBC,YAcE,wBAAA,EAAA;AAAA,kBAAA,GAAA,EAAA,CAAA;AAAA,kBAZC,cAAY,IAAA,CAAA,SAAA;AAAA,kBACZ,WAAS,IAAA,CAAA,MAAA;AAAA,kBACT,aAAW,IAAA,CAAA,QAAA;AAAA,kBACX,MAAM,IAAA,CAAA,IAAA;AAAA,kBACN,MAAA,EAAA,CAAQ,EAAA,GAAA,IAAA,mBAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,KAAA,CAAA;AAAA,kBACxB,UAAU,IAAA,CAAA,QAAA;AAAA,kBACV,kBAAgB,IAAA,CAAA,gBAAA;AAAA,kBAChB,QAAQ,IAAA,CAAA,MAAA;AAAA,kBACR,YAAA,EAAU,YAAe,IAAA,CAAA,eAAA,CAAgB,IAAA,CAAA,MAAA,EAAQ,MAAA,CAAO,SAAA,EAAW,IAAA,CAAA,YAAA,CAAa,cAAA,CAAe,KAAK,CAAA;AAAA,kBAGpG,cAAY,IAAA,CAAA;AAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,CAAA,cAAA,SAAA,EAAA,WAAA,EAAA,QAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,CAAA,IAGF,uBADbA,YA4CW,mBAAA,EAAA;AAAA,kBAAA,GAAA,EAAA,CAAA;AAAA,kBA1CR,cAAY,IAAA,CAAA,SAAA;AAAA,kBACZ,MAAM,IAAA,CAAA,MAAA;AAAA,kBACN,WAAS,IAAA,CAAA,MAAA;AAAA,kBACT,MAAM,IAAA,CAAA,IAAA;AAAA,kBACN,aAAW,IAAA,CAAA,QAAA;AAAA,kBACX,qBAAmB,IAAA,CAAA,eAAA;AAAA,kBACnB,aAAW,IAAA,CAAA,QAAA;AAAA,kBACX,MAAA;AAAA,kBACA,mBAAiB,IAAA,CAAA,cAAA;AAAA,kBACjB,kBAAgB,IAAA,CAAA,YAAA;AAAA,kBAChB,iBAAA,EAAiB,MAAA,CAAO,WAAA,KAAgB,IAAA,CAAA,yBAAyB,IAAA,CAAA,cAAA;AAAA,kBACjE,QAAQ,IAAA,CAAA,UAAA;AAAA,kBACR,uBAAqB,IAAA,CAAA,iBAAA;AAAA,kBACrB,cAAA,EAAc,IAAA,CAAA,iBAAA,IAAqB,IAAA,CAAA,mBAAmB,MAAA,CAAO,SAAA;AAAA,kBAC7D,kBAAgB,IAAA,CAAA,YAAA;AAAA,kBAChB,eAAa,IAAA,CAAA,WAAA;AAAA,kBACb,cAAY,IAAA,CAAA,UAAA;AAAA,kBACZ,YAAA,EAAU,YAAe,IAAA,CAAA,eAAA,CAAgB,IAAA,CAAA,MAAA,EAAQ,MAAA,CAAO,SAAA,EAAW,IAAA,CAAA,YAAA,CAAa,cAAA,CAAe,KAAK,CAAA;AAAA,kBAGpG,aAAW,IAAA,CAAA,cAAA;AAAA,kBACX,aAAW,IAAA,CAAA,eAAA;AAAA,kBACX,aAAW,IAAA,CAAA,eAAA;AAAA,kBACX,WAAS,IAAA,CAAA,aAAA;AAAA,kBACT,SAAO,IAAA,CAAA;AAAA,iBAAA,EAAA;AAAA,kBAEG,UAAA,EAAUF,QACnB,MAaM;AAAA,oBAbNG,kBAAA;AAAA,sBAaM,KAAA;AAAA,sBAAA;AAAA,wBAbA,KAAA,EAAKP,cAAA,IAAK,IAAA,CAAA,SAAS,CAAA,YAAA,CAAA;AAAA,uBAAA;AAAA;wBACvBO,kBAAA;AAAA,0BAGQ,MAAA;AAAA,0BAAA;AAAA,4BAFL,KAAA,EAAKN,eAAA,CAAA,cAAA,EAAA,CAAoB,IAAA,CAAA,UAAM,CAAA,IAAS,IAAA,CAAA,UAAU,CAAA,EAAA,CAAA,CAAA;AAAA,4BAClD,KAAA,EAAKD,eAAA,CAAA,EAAK,IAAA,CAAA,SAAS,CAAA,yBAAA,EAA4B,IAAA,CAAA,MAAM,CAAA,CAAA;AAAA,2BAAA;AAAA;;;;wBAExDE,YAOE,qBAAA,EAAA;AAAA,0BANC,UAAU,IAAA,CAAA,QAAA;AAAA,0BACV,cAAY,IAAA,CAAA,SAAA;AAAA,0BACZ,YAAY,IAAA,CAAA,eAAA;AAAA,0BACZ,QAAQ,IAAA,CAAA,MAAA;AAAA,0BACR,QAAA,EAAQ,CAAG,IAAA,CAAA,gBAAA;AAAA,0BACX,UAAQ,IAAA,CAAA;AAAA,yBAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,cAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;IAOV,IAAA,CAAA,IAAA,KAAI,QAAA,IAAAL,SAAA,EAAA,EAAfC,kBAAA;AAAA,MAAgF,KAAA;AAAA,MAAA;AAAA,QAAA,GAAA,EAAA,CAAA;AAAA,QAAjD,KAAA,EAAKE,eAAA,CAAA,EAAK,IAAA,CAAA,SAAS,CAAA,aAAA,EAAgB,IAAA,CAAA,IAAI,CAAA,CAAA;AAAA,OAAA;AAAA;;;;;;;;;;"}
|
@@ -86,7 +86,7 @@ var _sfc_main = defineComponent({
|
|
86
86
|
() => (props.type === "center" ? tableContext.centerRowColumnsMap.value.get(props.rowKey) : columns.value).filter((item) => !!item)
|
87
87
|
);
|
88
88
|
const { tooltipOpen, leftPopupContainer, centerPopupContainer, rightPopupContainer } = useInjectBody();
|
89
|
-
const { handleCellBlur, handleCellHover, hoverRowKey, hoverColumnKey } = useInjectHover();
|
89
|
+
const { handleCellBlur, handleCellHover, hoverRowKey, hoverColumnKey, rowHover } = useInjectHover();
|
90
90
|
const popupContainer = computed(
|
91
91
|
() => props.type === "left" ? leftPopupContainer.value : props.type === "center" ? centerPopupContainer.value : props.type === "right" ? rightPopupContainer.value : null
|
92
92
|
);
|
@@ -95,7 +95,7 @@ var _sfc_main = defineComponent({
|
|
95
95
|
watch(
|
96
96
|
[isRowHover, bodyRow],
|
97
97
|
() => {
|
98
|
-
bodyRow.value && (isRowHover.value ? addClass(bodyRow.value, `${props.prefixCls}-row-hover`) : removeClass(bodyRow.value, `${props.prefixCls}-row-hover`));
|
98
|
+
bodyRow.value && rowHover.value && (isRowHover.value ? addClass(bodyRow.value, `${props.prefixCls}-row-hover`) : removeClass(bodyRow.value, `${props.prefixCls}-row-hover`));
|
99
99
|
},
|
100
100
|
{ immediate: true, flush: "post" }
|
101
101
|
);
|
@@ -162,7 +162,7 @@ var _sfc_main = defineComponent({
|
|
162
162
|
{
|
163
163
|
[`${prefixCls}-row`]: true,
|
164
164
|
[`${prefixCls}-row-level-${indent}`]: true,
|
165
|
-
[`${prefixCls}-row-hover`]: isRowHover.value,
|
165
|
+
[`${prefixCls}-row-hover`]: isRowHover.value && rowHover.value,
|
166
166
|
[`${prefixCls}-row-dragging`]: isDragging.value,
|
167
167
|
[`${prefixCls}-row-dragging-insert-target`]: tableContext.insertToRowKey.value === props.rowKey,
|
168
168
|
[`${prefixCls}-row-odd`]: !isEven,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BodyRow.vue2.mjs","sources":["../../../../../../../../packages/components/table/src/components/Body/BodyRow.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-08 21:59:48\n * @LastEditors: shen\n * @LastEditTime: 2025-09-10 15:16:56\n * @Description:\n-->\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n ref,\n watch,\n onBeforeUnmount,\n computed,\n nextTick,\n watchEffect,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRows, useProvideBodyRow } from '../context/BodyRowsContext'\nimport { ExpandColumnKey } from '../../hooks/useColumns'\nimport { RenderSlot } from '../../utils/renderVNode'\nimport { useEditInject } from '../../hooks/useEdit'\nimport { useCellSelection } from '../../hooks/useCellSelection'\nimport { useCellKeyboard } from '../../hooks/useCellKeyboard'\nimport { useInjectHover } from '../../hooks/useHover'\nimport { addClass, removeClass } from '../../utils/class'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport eagerComputed from '../../utils/eagerComputed'\nimport classNames from '../../utils/classNames'\nimport BodyCell from './BodyCell'\nimport ExpandedRow from './ExpandedRow.vue'\nimport BodyExtraCell from './BodyExtraCell.vue'\nimport ExpandIcon from '../ExpandIcon.vue'\n\nimport type { CSSProperties, PropType } from 'vue'\nimport type { RowClassName, RowType, Key } from '../interface'\n\nlet uniIdCount = 0\nexport default defineComponent({\n name: 'ProTableBodyRow',\n components: {\n ExpandIcon,\n BodyCell,\n ExpandedRow,\n BodyExtraCell,\n RenderSlot,\n },\n inheritAttrs: false,\n props: {\n prefixCls: String as PropType<string>,\n isExpandRow: Boolean as PropType<boolean>,\n record: { type: Object },\n type: { type: String as PropType<RowType> },\n rowKey: { type: [Number, String] as PropType<Key>, required: true },\n supportExpand: Boolean,\n pos: Number as PropType<number>,\n rowIndex: Number as PropType<number>,\n flattenRowIndex: Number,\n indent: Number as PropType<number>,\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n getRowClassName: { type: Function as PropType<RowClassName<any>> },\n },\n setup(props) {\n const rowUniId = 'row_uni_id_' + uniIdCount++\n const tableContext = useInjectTable()\n const rowInstance = getCurrentInstance()\n\n const { editCellKeys, closeEditor, openEditor } = useEditInject()\n\n let isUnmount = false\n const bodyRow = ref()\n\n const { onCellMousedown, onCellMousemove, onCellClick } = useCellSelection()\n const { onCellKeydown } = useCellKeyboard()\n\n const calMaxHeight = () => {\n if (isUnmount) return\n let rowHeight = 0\n let autoCells: HTMLDivElement[] = []\n if (bodyRow.value) {\n autoCells = bodyRow.value.querySelectorAll('div[data-cell-auto=true]')\n }\n autoCells.forEach((autoCell: HTMLDivElement) => {\n const { offsetWidth, offsetHeight } = autoCell\n let autoCellHeight = offsetWidth ? offsetHeight : 0\n const parentStyle = getComputedStyle(autoCell.parentNode as Element)\n autoCellHeight +=\n parseFloat(parentStyle.getPropertyValue('border-top-width')) +\n parseFloat(parentStyle.getPropertyValue('border-bottom-width'))\n rowHeight = rowHeight > autoCellHeight ? rowHeight : autoCellHeight\n })\n if (autoCells.length) {\n tableContext.addRowHeight(rowUniId, props.rowKey!, rowHeight)\n } else {\n tableContext.removeRowHeight(rowUniId)\n }\n }\n\n watch(\n () => props.rowKey,\n () => {\n calMaxHeight()\n },\n { flush: 'post' },\n )\n\n const resizeObserver: ResizeObserver = new ResizeObserver(() => {\n calMaxHeight()\n })\n\n const { columns, columnStartIndex } = useInjectBodyRows()\n const mergedColumns = computed(() =>\n (props.type === 'center'\n ? tableContext.centerRowColumnsMap.value.get(props.rowKey)\n : columns.value)!.filter((item) => !!item),\n )\n\n const { tooltipOpen, leftPopupContainer, centerPopupContainer, rightPopupContainer } =\n useInjectBody()\n const { handleCellBlur, handleCellHover, hoverRowKey, hoverColumnKey } = useInjectHover()\n\n const popupContainer = computed(() =>\n props.type === 'left'\n ? leftPopupContainer.value\n : props.type === 'center'\n ? centerPopupContainer.value\n : props.type === 'right'\n ? rightPopupContainer.value\n : null,\n )\n\n const isDragging = eagerComputed(() => tableContext.draggingRowKey.value === props.rowKey)\n const isRowHover = eagerComputed(() => hoverRowKey.value === props.rowKey)\n\n watch(\n [isRowHover, bodyRow],\n () => {\n bodyRow.value &&\n (isRowHover.value\n ? addClass(bodyRow.value, `${props.prefixCls}-row-hover`)\n : removeClass(bodyRow.value, `${props.prefixCls}-row-hover`))\n },\n { immediate: true, flush: 'post' },\n )\n\n const mergedTooltipOpen = eagerComputed(() => tooltipOpen.value && isRowHover.value)\n\n let timer: any\n onBeforeUnmount(() => {\n isUnmount = true\n resizeObserver.disconnect()\n clearTimeout(timer)\n tableContext.removeRowHeight(rowUniId)\n })\n\n const hasMultiRowSpanInfo = eagerComputed(() => {\n return !tableContext.hasMultiRowSpanInfo.value[props.rowKey!]\n })\n\n const customRowProps = computed(() => {\n return tableContext.props.customRow?.(props.record!, props.rowIndex)\n })\n\n const rowSelectionType = computed(() => {\n return tableContext.props.rowSelection?.type\n })\n\n const isExpanded = ref(false)\n const expandedRowKeys = computed(() => tableContext.expandedRowKeys.value)\n const expanded = eagerComputed(() => expandedRowKeys.value.has?.(props.rowKey!))\n const expandIconColumnIndex = computed(() => tableContext.expandIconColumnIndex.value || 0)\n const indentSize = computed(() => tableContext.indentSize.value)\n\n watchEffect(() => {\n if (expanded.value) {\n isExpanded.value = true\n }\n })\n\n const rowExpandable = computed(\n () =>\n tableContext.expandType.value === 'row' &&\n tableContext.props.rowExpandable?.(props.record!),\n )\n\n const nestExpandable = computed(() => tableContext.expandType.value === 'nest')\n\n const hasNestChildren = computed(\n () =>\n !!(\n tableContext.childrenColumnName.value &&\n props.record?.[tableContext.childrenColumnName.value]\n ),\n )\n const mergedExpandable = computed(() => rowExpandable.value || nestExpandable.value)\n\n const onInternalTriggerExpand = (record: any, event: any) => {\n tableContext.onTriggerExpand(record, props.rowKey!, event)\n }\n\n const mergedRowHeights = computed(() => tableContext.mergedRowHeights.value)\n\n const height = eagerComputed(() => mergedRowHeights.value[props.rowKey!])\n const cellHeight = eagerComputed(() => tableContext.rowHeights.value[props.rowKey!])\n\n const isSelected = computed(\n () =>\n tableContext.props.highlightSelectRow &&\n tableContext.selection.derivedSelectedKeySet.value.has(props.rowKey!),\n )\n\n const rowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n const isEven = rowIndex! % 2 == 0\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-row-level-${indent}`]: true,\n [`${prefixCls}-row-hover`]: isRowHover.value,\n [`${prefixCls}-row-dragging`]: isDragging.value,\n [`${prefixCls}-row-dragging-insert-target`]:\n tableContext.insertToRowKey.value === props.rowKey,\n [`${prefixCls}-row-odd`]: !isEven,\n [`${prefixCls}-row-even`]: isEven,\n [`${prefixCls}-no-height`]: !height.value,\n [`${prefixCls}-row-selected`]: isSelected.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandRowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-expanded-row`]: true,\n [`${prefixCls}-expanded-row-level-${indent! + 1}`]: true,\n [`${prefixCls}-no-height`]: !height.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandColumnWidth = eagerComputed(() => {\n return tableContext.allCellProps.value[props.rowKey!]?.[ExpandColumnKey]?.props?.style?.width\n })\n\n const rowStyle = computed<CSSProperties>(() => {\n const style: CSSProperties = {\n opacity: 1,\n [`--${props.prefixCls}-row-bg`]: `var(--${props.prefixCls}-row-bg-${props.rowKey}, var(--${props.prefixCls}-bg))`,\n }\n if (hasMultiRowSpanInfo.value) {\n style.transform = `translateY(${props.pos}px)`\n } else {\n style.top = `${props.pos}px`\n }\n if (height.value !== undefined) {\n style.height = `${height.value}px`\n } else {\n style.height = `${tableContext.baseHeight.value}px`\n }\n if (props.isExpandRow && columnStartIndex.value === 0) {\n style.width = expandColumnWidth.value\n style.minWidth = '100%'\n }\n return style\n })\n\n watch(\n () => ({ ...rowStyle.value }),\n (newStyle, oldStyle = {}) => {\n if (tableContext.animateRows.value && !tableContext.useAnimate.value) {\n if (\n newStyle.top !== oldStyle.top ||\n newStyle.height !== oldStyle.height ||\n newStyle.transform !== oldStyle.transform\n ) {\n nextTick(() => {\n clearTimeout(timer)\n if (rowInstance?.vnode.el && rowInstance.vnode.el.style) {\n rowInstance.vnode.el.style.transition = 'none'\n timer = setTimeout(() => {\n if (rowInstance?.vnode?.el?.style) {\n rowInstance.vnode.el.style.transition = null\n }\n }, 100)\n }\n })\n }\n }\n },\n { immediate: true },\n )\n\n useProvideBodyRow({\n top: computed(() => props.pos!),\n height: computed(() =>\n height.value !== undefined ? height.value : tableContext.baseHeight.value,\n ),\n rowKey: computed(() => props.rowKey),\n })\n\n const cellClass = computed(() => ({\n [`${props.prefixCls}-cell`]: true,\n [`${props.prefixCls}-position-absolute`]: true,\n }))\n\n return {\n rowClass,\n rowStyle,\n cellClass,\n tableContext,\n mergedRowHeights,\n handleCellBlur,\n handleCellHover,\n handleClick: (event: any) => {\n tableContext.props.expandRowByClick &&\n mergedExpandable.value &&\n onInternalTriggerExpand(props.record, event)\n },\n rowSelectionType,\n nestExpandable,\n hasNestChildren,\n mergedExpandable,\n expandIconColumnIndex,\n indentSize,\n expanded,\n onInternalTriggerExpand,\n customRowProps,\n expandColumnKey: ExpandColumnKey,\n expandRowClass,\n mergedColumns,\n height,\n cellHeight,\n columnStartIndex,\n resizeObserver,\n calMaxHeight,\n bodyRow,\n hoverRowKey,\n hoverColumnKey,\n xVirtual: eagerComputed(() => tableContext.xVirtual.value),\n getPopupContainer: () => popupContainer.value!,\n editCellKeys,\n closeEditor,\n openEditor,\n mergedTooltipOpen,\n onCellMousedown,\n onCellKeydown,\n onCellMousemove,\n onCellClick,\n }\n },\n})\n</script>\n\n<template>\n <template v-if=\"isExpandRow\">\n <div\n v-if=\"columnStartIndex === 0\"\n ref=\"bodyRow\"\n :data-row-key=\"rowKey\"\n :class=\"expandRowClass\"\n :style=\"rowStyle\"\n role=\"row\"\n >\n <ExpandedRow\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n />\n </div>\n </template>\n <div\n v-else\n v-bind=\"customRowProps\"\n ref=\"bodyRow\"\n :class=\"rowClass\"\n :style=\"rowStyle\"\n :data-row-key=\"rowKey\"\n role=\"row\"\n @click=\"handleClick\"\n >\n <RenderSlot>\n <template v-for=\"(column, index) in mergedColumns\" :key=\"column && column.columnKey\">\n <BodyExtraCell\n v-if=\"column && column.__Internal__Column__\"\n :prefix-cls=\"prefixCls\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex!\"\n :type=\"type\"\n :column=\"mergedColumns?.[index]\"\n :expanded=\"expanded\"\n :support-expand=\"mergedExpandable\"\n :record=\"record\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @mouseleave=\"handleCellBlur\"\n />\n <BodyCell\n v-else-if=\"column\"\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :type=\"type\"\n :row-index=\"rowIndex!\"\n :flatten-row-index=\"flattenRowIndex\"\n :wrap-text=\"wrapText\"\n :column=\"column\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n :has-append-node=\"column.columnIndex === expandIconColumnIndex && nestExpandable\"\n :height=\"cellHeight\"\n :get-popup-container=\"getPopupContainer\"\n :tooltip-open=\"mergedTooltipOpen && hoverColumnKey === column.columnKey\"\n :edit-cell-keys=\"editCellKeys\"\n @closeEditor=\"closeEditor\"\n @openEditor=\"openEditor\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @cellLeave=\"handleCellBlur\"\n @mousedown=\"onCellMousedown\"\n @mousemove=\"onCellMousemove\"\n @keydown=\"onCellKeydown\"\n @click=\"onCellClick\"\n >\n <template #appendNode>\n <div :class=\"`${prefixCls}-append-node`\">\n <span\n :style=\"`padding-left: ${(indent || 0) * indentSize}px`\"\n :class=\"`${prefixCls}-row-indent indent-level-${indent}`\"\n ></span>\n <ExpandIcon\n :expanded=\"expanded\"\n :prefix-cls=\"prefixCls\"\n :expandable=\"hasNestChildren\"\n :record=\"record\"\n :disabled=\"!mergedExpandable\"\n @expand=\"onInternalTriggerExpand\"\n />\n </div>\n </template>\n </BodyCell>\n </template>\n </RenderSlot>\n <div v-if=\"type !== 'center'\" :class=\"`${prefixCls}-cell-shadow-${type}`\"></div>\n </div>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAuCA,IAAI,UAAA,GAAa,CAAA;AACjB,gBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,iBAAA;AAAA,EACN,UAAA,EAAY;AAAA,IACV,UAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,YAAA,EAAc,KAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,MAAA;AAAA,IACX,WAAA,EAAa,OAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACvB,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAA4B;AAAA,IAC1C,MAAA,EAAQ,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IAClE,aAAA,EAAe,OAAA;AAAA,IACf,GAAA,EAAK,MAAA;AAAA,IACL,QAAA,EAAU,MAAA;AAAA,IACV,eAAA,EAAiB,MAAA;AAAA,IACjB,MAAA,EAAQ,MAAA;AAAA,IACR,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAA8B,SAAS,KAAA,EAAM;AAAA,IAC/D,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAA;AAAwC,GACnE;AAAA,EACA,MAAM,KAAA,EAAO;AACX,IAAA,MAAM,WAAW,aAAA,GAAgB,UAAA,EAAA;AACjC,IAAA,MAAM,eAAe,cAAA,EAAe;AACpC,IAAA,MAAM,cAAc,kBAAA,EAAmB;AAEvC,IAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,UAAA,KAAe,aAAA,EAAc;AAEhE,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,MAAM,UAAU,GAAA,EAAI;AAEpB,IAAA,MAAM,EAAE,eAAA,EAAiB,eAAA,EAAiB,WAAA,KAAgB,gBAAA,EAAiB;AAC3E,IAAA,MAAM,EAAE,aAAA,EAAc,GAAI,eAAA,EAAgB;AAE1C,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,IAAI,SAAA,GAAY,CAAA;AAChB,MAAA,IAAI,YAA8B,EAAC;AACnC,MAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,QAAA,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,gBAAA,CAAiB,0BAA0B,CAAA;AAAA,MACvE;AACA,MAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,QAAA,KAA6B;AAC9C,QAAA,MAAM,EAAE,WAAA,EAAa,YAAA,EAAa,GAAI,QAAA;AACtC,QAAA,IAAI,cAAA,GAAiB,cAAc,YAAA,GAAe,CAAA;AAClD,QAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,QAAA,CAAS,UAAqB,CAAA;AACnE,QAAA,cAAA,IACE,UAAA,CAAW,WAAA,CAAY,gBAAA,CAAiB,kBAAkB,CAAC,IAC3D,UAAA,CAAW,WAAA,CAAY,gBAAA,CAAiB,qBAAqB,CAAC,CAAA;AAChE,QAAA,SAAA,GAAY,SAAA,GAAY,iBAAiB,SAAA,GAAY,cAAA;AAAA,MACvD,CAAC,CAAA;AACD,MAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,QAAA,YAAA,CAAa,YAAA,CAAa,QAAA,EAAU,KAAA,CAAM,MAAA,EAAS,SAAS,CAAA;AAAA,MAC9D,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,gBAAgB,QAAQ,CAAA;AAAA,MACvC;AAAA,IACF,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,MAAA;AAAA,MACZ,MAAM;AACJ,QAAA,YAAA,EAAa;AAAA,MACf,CAAA;AAAA,MACA,EAAE,OAAO,MAAA;AAAO,KAClB;AAEA,IAAA,MAAM,cAAA,GAAiC,IAAI,cAAA,CAAe,MAAM;AAC9D,MAAA,YAAA,EAAa;AAAA,IACf,CAAC,CAAA;AAED,IAAA,MAAM,EAAE,OAAA,EAAS,gBAAA,EAAiB,GAAI,iBAAA,EAAkB;AACxD,IAAA,MAAM,aAAA,GAAgB,QAAA;AAAA,MAAS,OAC5B,KAAA,CAAM,IAAA,KAAS,WACZ,YAAA,CAAa,mBAAA,CAAoB,MAAM,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,GACvD,QAAQ,KAAA,EAAQ,MAAA,CAAO,CAAC,IAAA,KAAS,CAAC,CAAC,IAAI;AAAA,KAC7C;AAEA,IAAA,MAAM,EAAE,WAAA,EAAa,kBAAA,EAAoB,oBAAA,EAAsB,mBAAA,KAC7D,aAAA,EAAc;AAChB,IAAA,MAAM,EAAE,cAAA,EAAgB,eAAA,EAAiB,WAAA,EAAa,cAAA,KAAmB,cAAA,EAAe;AAExF,IAAA,MAAM,cAAA,GAAiB,QAAA;AAAA,MAAS,MAC9B,KAAA,CAAM,IAAA,KAAS,MAAA,GACX,mBAAmB,KAAA,GACnB,KAAA,CAAM,IAAA,KAAS,QAAA,GACb,qBAAqB,KAAA,GACrB,KAAA,CAAM,IAAA,KAAS,OAAA,GACb,oBAAoB,KAAA,GACpB;AAAA,KACV;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc,MAAM,aAAa,cAAA,CAAe,KAAA,KAAU,MAAM,MAAM,CAAA;AACzF,IAAA,MAAM,aAAa,aAAA,CAAc,MAAM,WAAA,CAAY,KAAA,KAAU,MAAM,MAAM,CAAA;AAEzE,IAAA,KAAA;AAAA,MACE,CAAC,YAAY,OAAO,CAAA;AAAA,MACpB,MAAM;AACJ,QAAA,OAAA,CAAQ,UACL,UAAA,CAAW,KAAA,GACR,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,UAAA,CAAY,IACtD,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,UAAA,CAAY,CAAA,CAAA;AAAA,MACjE,CAAA;AAAA,MACA,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAA;AAAO,KACnC;AAEA,IAAA,MAAM,oBAAoB,aAAA,CAAc,MAAM,WAAA,CAAY,KAAA,IAAS,WAAW,KAAK,CAAA;AAEnF,IAAA,IAAI,KAAA;AACJ,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,cAAA,CAAe,UAAA,EAAW;AAC1B,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,YAAA,CAAa,gBAAgB,QAAQ,CAAA;AAAA,IACvC,CAAC,CAAA;AAED,IAAA,MAAM,mBAAA,GAAsB,cAAc,MAAM;AAC9C,MAAA,OAAO,CAAC,YAAA,CAAa,mBAAA,CAAoB,KAAA,CAAM,MAAM,MAAO,CAAA;AAAA,IAC9D,CAAC,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,SAAS,MAAM;;AACpC,MAAA,OAAA,CAAO,wBAAa,KAAA,EAAM,SAAA,KAAnB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAA+B,KAAA,CAAM,QAAS,KAAA,CAAM,QAAA,CAAA;AAAA,IAC7D,CAAC,CAAA;AAED,IAAA,MAAM,gBAAA,GAAmB,SAAS,MAAM;;AACtC,MAAA,OAAA,CAAO,EAAA,GAAA,YAAA,CAAa,KAAA,CAAM,YAAA,KAAnB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiC,IAAA;AAAA,IAC1C,CAAC,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,IAAI,KAAK,CAAA;AAC5B,IAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,MAAM,YAAA,CAAa,gBAAgB,KAAK,CAAA;AACzE,IAAA,MAAM,QAAA,GAAW,cAAc,MAAG;;AAAG,MAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,eAAA,CAAgB,KAAA,EAAM,GAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAA4B,KAAA,CAAM,MAAA,CAAA;AAAA,IAAA,CAAQ,CAAA;AAC/E,IAAA,MAAM,wBAAwB,QAAA,CAAS,MAAM,YAAA,CAAa,qBAAA,CAAsB,SAAS,CAAC,CAAA;AAC1F,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,MAAM,YAAA,CAAa,WAAW,KAAK,CAAA;AAE/D,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,SAAS,KAAA,EAAO;AAClB,QAAA,UAAA,CAAW,KAAA,GAAQ,IAAA;AAAA,MACrB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB,QAAA;AAAA,MACpB,MAAG;;AACD,QAAA,OAAA,YAAA,CAAa,WAAW,KAAA,KAAU,KAAA,KAAA,CAClC,wBAAa,KAAA,EAAM,aAAA,KAAnB,4BAAmC,KAAA,CAAM,MAAA,CAAA,CAAA;AAAA,MAAA;AAAA,KAC7C;AAEA,IAAA,MAAM,iBAAiB,QAAA,CAAS,MAAM,YAAA,CAAa,UAAA,CAAW,UAAU,MAAM,CAAA;AAE9E,IAAA,MAAM,eAAA,GAAkB,QAAA;AAAA,MACtB,MAAG;;AACD,QAAA,OAAA,CAAC,EACC,aAAa,kBAAA,CAAmB,KAAA,KAAA,CAChC,WAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,aAAa,kBAAA,CAAmB,KAAA,CAAA,CAAA,CAAA;AAAA,MAAA;AAAA,KAErD;AACA,IAAA,MAAM,mBAAmB,QAAA,CAAS,MAAM,aAAA,CAAc,KAAA,IAAS,eAAe,KAAK,CAAA;AAEnF,IAAA,MAAM,uBAAA,GAA0B,CAAC,MAAA,EAAa,KAAA,KAAe;AAC3D,MAAA,YAAA,CAAa,eAAA,CAAgB,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAS,KAAK,CAAA;AAAA,IAC3D,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,QAAA,CAAS,MAAM,YAAA,CAAa,iBAAiB,KAAK,CAAA;AAE3E,IAAA,MAAM,SAAS,aAAA,CAAc,MAAM,iBAAiB,KAAA,CAAM,KAAA,CAAM,MAAO,CAAC,CAAA;AACxE,IAAA,MAAM,UAAA,GAAa,cAAc,MAAM,YAAA,CAAa,WAAW,KAAA,CAAM,KAAA,CAAM,MAAO,CAAC,CAAA;AAEnF,IAAA,MAAM,UAAA,GAAa,QAAA;AAAA,MACjB,MACE,YAAA,CAAa,KAAA,CAAM,kBAAA,IACnB,YAAA,CAAa,UAAU,qBAAA,CAAsB,KAAA,CAAM,GAAA,CAAI,KAAA,CAAM,MAAO;AAAA,KACxE;AAEA,IAAA,MAAM,QAAA,GAAW,SAAS,MAAM;;AAC9B,MAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,QAAO,GAAI,KAAA;AAChD,MAAA,MAAM,MAAA,GAAS,WAAY,CAAA,IAAK,CAAA;AAChC,MAAA,OAAO,UAAA;AAAA,QACL;AAAA,UACE,CAAC,CAAA,EAAG,SAAS,CAAA,IAAA,CAAM,GAAG,IAAA;AAAA,UACtB,CAAC,CAAA,EAAG,SAAS,CAAA,WAAA,EAAc,MAAM,EAAE,GAAG,IAAA;AAAA,UACtC,CAAC,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY,GAAG,UAAA,CAAW,KAAA;AAAA,UACvC,CAAC,CAAA,EAAG,SAAS,CAAA,aAAA,CAAe,GAAG,UAAA,CAAW,KAAA;AAAA,UAC1C,CAAC,GAAG,SAAS,CAAA,2BAAA,CAA6B,GACxC,YAAA,CAAa,cAAA,CAAe,UAAU,KAAA,CAAM,MAAA;AAAA,UAC9C,CAAC,CAAA,EAAG,SAAS,CAAA,QAAA,CAAU,GAAG,CAAC,MAAA;AAAA,UAC3B,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG,MAAA;AAAA,UAC3B,CAAC,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY,GAAG,CAAC,MAAA,CAAO,KAAA;AAAA,UACpC,CAAC,CAAA,EAAG,SAAS,CAAA,aAAA,CAAe,GAAG,UAAA,CAAW;AAAA,SAC5C;AAAA,QAAA,CACA,EAAA,GAAA,KAAA,CAAM,eAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAwB,MAAA,EAAQ,QAAA,EAAW,MAAA;AAAA,OAC7C;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,SAAS,MAAM;;AACpC,MAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,QAAO,GAAI,KAAA;AAChD,MAAA,OAAO,UAAA;AAAA,QACL;AAAA,UACE,CAAC,CAAA,EAAG,SAAS,CAAA,IAAA,CAAM,GAAG,IAAA;AAAA,UACtB,CAAC,CAAA,EAAG,SAAS,CAAA,aAAA,CAAe,GAAG,IAAA;AAAA,UAC/B,CAAC,CAAA,EAAG,SAAS,uBAAuB,MAAA,GAAU,CAAC,EAAE,GAAG,IAAA;AAAA,UACpD,CAAC,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY,GAAG,CAAC,MAAA,CAAO;AAAA,SACtC;AAAA,QAAA,CACA,EAAA,GAAA,KAAA,CAAM,eAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAwB,MAAA,EAAQ,QAAA,EAAW,MAAA;AAAA,OAC7C;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,iBAAA,GAAoB,cAAc,MAAM;;AAC5C,MAAA,OAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,YAAA,CAAa,KAAA,CAAM,KAAA,CAAM,MAAO,CAAA,KAA7C,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiD,eAAA,CAAA,KAAjD,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmE,KAAA,KAAnE,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0E,KAAA,KAA1E,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiF,KAAA;AAAA,IAC1F,CAAC,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,SAAwB,MAAM;AAC7C,MAAA,MAAM,KAAA,GAAuB;AAAA,QAC3B,OAAA,EAAS,CAAA;AAAA,QACT,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,SAAS,SAAS,GAAG,CAAA,MAAA,EAAS,KAAA,CAAM,SAAS,CAAA,QAAA,EAAW,KAAA,CAAM,MAAM,CAAA,QAAA,EAAW,MAAM,SAAS,CAAA,KAAA;AAAA,OAC5G;AACA,MAAA,IAAI,oBAAoB,KAAA,EAAO;AAC7B,QAAA,KAAA,CAAM,SAAA,GAAY,CAAA,WAAA,EAAc,KAAA,CAAM,GAAG,CAAA,GAAA,CAAA;AAAA,MAC3C,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,EAAA,CAAA;AAAA,MAC1B;AACA,MAAA,IAAI,MAAA,CAAO,UAAU,MAAA,EAAW;AAC9B,QAAA,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,EAAA,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,YAAA,CAAa,UAAA,CAAW,KAAK,CAAA,EAAA,CAAA;AAAA,MACjD;AACA,MAAA,IAAI,KAAA,CAAM,WAAA,IAAe,gBAAA,CAAiB,KAAA,KAAU,CAAA,EAAG;AACrD,QAAA,KAAA,CAAM,QAAQ,iBAAA,CAAkB,KAAA;AAChC,QAAA,KAAA,CAAM,QAAA,GAAW,MAAA;AAAA,MACnB;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,KAAA;AAAA,MACE,OAAO,EAAE,GAAG,QAAA,CAAS,KAAA,EAAM,CAAA;AAAA,MAC3B,CAAC,QAAA,EAAU,QAAA,GAAW,EAAC,KAAM;AAC3B,QAAA,IAAI,aAAa,WAAA,CAAY,KAAA,IAAS,CAAC,YAAA,CAAa,WAAW,KAAA,EAAO;AACpE,UAAA,IACE,QAAA,CAAS,GAAA,KAAQ,QAAA,CAAS,GAAA,IAC1B,QAAA,CAAS,MAAA,KAAW,QAAA,CAAS,MAAA,IAC7B,QAAA,CAAS,SAAA,KAAc,QAAA,CAAS,SAAA,EAChC;AACA,YAAA,QAAA,CAAS,MAAM;AACb,cAAA,YAAA,CAAa,KAAK,CAAA;AAClB,cAAA,IAAA,CAAI,2CAAa,KAAA,CAAM,EAAA,KAAM,WAAA,CAAY,KAAA,CAAM,GAAG,KAAA,EAAO;AACvD,gBAAA,WAAA,CAAY,KAAA,CAAM,EAAA,CAAG,KAAA,CAAM,UAAA,GAAa,MAAA;AACxC,gBAAA,KAAA,GAAQ,WAAW,MAAM;;AACvB,kBAAA,IAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,KAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,EAAA,KAApB,mBAAwB,KAAA,EAAO;AACjC,oBAAA,WAAA,CAAY,KAAA,CAAM,EAAA,CAAG,KAAA,CAAM,UAAA,GAAa,IAAA;AAAA,kBAC1C;AAAA,gBACF,GAAG,GAAG,CAAA;AAAA,cACR;AAAA,YACF,CAAC,CAAA;AAAA,UACH;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,EAAE,WAAW,IAAA;AAAK,KACpB;AAEA,IAAA,iBAAA,CAAkB;AAAA,MAChB,GAAA,EAAK,QAAA,CAAS,MAAM,KAAA,CAAM,GAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,QAAA;AAAA,QAAS,MACf,MAAA,CAAO,KAAA,KAAU,SAAY,MAAA,CAAO,KAAA,GAAQ,aAAa,UAAA,CAAW;AAAA,OACtE;AAAA,MACA,MAAA,EAAQ,QAAA,CAAS,MAAM,KAAA,CAAM,MAAM;AAAA,KACpC,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,SAAS,OAAO;AAAA,MAChC,CAAC,CAAA,EAAG,KAAA,CAAM,SAAS,OAAO,GAAG,IAAA;AAAA,MAC7B,CAAC,CAAA,EAAG,KAAA,CAAM,SAAS,oBAAoB,GAAG;AAAA,KAC5C,CAAE,CAAA;AAEF,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,KAAe;AAC3B,QAAA,YAAA,CAAa,MAAM,gBAAA,IACjB,gBAAA,CAAiB,SACjB,uBAAA,CAAwB,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,MAC/C,CAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,uBAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA,EAAiB,eAAA;AAAA,MACjB,cAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA,EAAU,aAAA,CAAc,MAAM,YAAA,CAAa,SAAS,KAAK,CAAA;AAAA,MACzD,iBAAA,EAAmB,MAAM,cAAA,CAAe,KAAA;AAAA,MACxC,YAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,iBAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}
|
1
|
+
{"version":3,"file":"BodyRow.vue2.mjs","sources":["../../../../../../../../packages/components/table/src/components/Body/BodyRow.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-08 21:59:48\n * @LastEditors: shen\n * @LastEditTime: 2025-09-29 09:00:32\n * @Description:\n-->\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n ref,\n watch,\n onBeforeUnmount,\n computed,\n nextTick,\n watchEffect,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRows, useProvideBodyRow } from '../context/BodyRowsContext'\nimport { ExpandColumnKey } from '../../hooks/useColumns'\nimport { RenderSlot } from '../../utils/renderVNode'\nimport { useEditInject } from '../../hooks/useEdit'\nimport { useCellSelection } from '../../hooks/useCellSelection'\nimport { useCellKeyboard } from '../../hooks/useCellKeyboard'\nimport { useInjectHover } from '../../hooks/useHover'\nimport { addClass, removeClass } from '../../utils/class'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport eagerComputed from '../../utils/eagerComputed'\nimport classNames from '../../utils/classNames'\nimport BodyCell from './BodyCell'\nimport ExpandedRow from './ExpandedRow.vue'\nimport BodyExtraCell from './BodyExtraCell.vue'\nimport ExpandIcon from '../ExpandIcon.vue'\n\nimport type { CSSProperties, PropType } from 'vue'\nimport type { RowClassName, RowType, Key } from '../interface'\n\nlet uniIdCount = 0\nexport default defineComponent({\n name: 'ProTableBodyRow',\n components: {\n ExpandIcon,\n BodyCell,\n ExpandedRow,\n BodyExtraCell,\n RenderSlot,\n },\n inheritAttrs: false,\n props: {\n prefixCls: String as PropType<string>,\n isExpandRow: Boolean as PropType<boolean>,\n record: { type: Object },\n type: { type: String as PropType<RowType> },\n rowKey: { type: [Number, String] as PropType<Key>, required: true },\n supportExpand: Boolean,\n pos: Number as PropType<number>,\n rowIndex: Number as PropType<number>,\n flattenRowIndex: Number,\n indent: Number as PropType<number>,\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n getRowClassName: { type: Function as PropType<RowClassName<any>> },\n },\n setup(props) {\n const rowUniId = 'row_uni_id_' + uniIdCount++\n const tableContext = useInjectTable()\n const rowInstance = getCurrentInstance()\n\n const { editCellKeys, closeEditor, openEditor } = useEditInject()\n\n let isUnmount = false\n const bodyRow = ref()\n\n const { onCellMousedown, onCellMousemove, onCellClick } = useCellSelection()\n const { onCellKeydown } = useCellKeyboard()\n\n const calMaxHeight = () => {\n if (isUnmount) return\n let rowHeight = 0\n let autoCells: HTMLDivElement[] = []\n if (bodyRow.value) {\n autoCells = bodyRow.value.querySelectorAll('div[data-cell-auto=true]')\n }\n autoCells.forEach((autoCell: HTMLDivElement) => {\n const { offsetWidth, offsetHeight } = autoCell\n let autoCellHeight = offsetWidth ? offsetHeight : 0\n const parentStyle = getComputedStyle(autoCell.parentNode as Element)\n autoCellHeight +=\n parseFloat(parentStyle.getPropertyValue('border-top-width')) +\n parseFloat(parentStyle.getPropertyValue('border-bottom-width'))\n rowHeight = rowHeight > autoCellHeight ? rowHeight : autoCellHeight\n })\n if (autoCells.length) {\n tableContext.addRowHeight(rowUniId, props.rowKey!, rowHeight)\n } else {\n tableContext.removeRowHeight(rowUniId)\n }\n }\n\n watch(\n () => props.rowKey,\n () => {\n calMaxHeight()\n },\n { flush: 'post' },\n )\n\n const resizeObserver: ResizeObserver = new ResizeObserver(() => {\n calMaxHeight()\n })\n\n const { columns, columnStartIndex } = useInjectBodyRows()\n const mergedColumns = computed(() =>\n (props.type === 'center'\n ? tableContext.centerRowColumnsMap.value.get(props.rowKey)\n : columns.value)!.filter((item) => !!item),\n )\n\n const { tooltipOpen, leftPopupContainer, centerPopupContainer, rightPopupContainer } =\n useInjectBody()\n const { handleCellBlur, handleCellHover, hoverRowKey, hoverColumnKey, rowHover } =\n useInjectHover()\n\n const popupContainer = computed(() =>\n props.type === 'left'\n ? leftPopupContainer.value\n : props.type === 'center'\n ? centerPopupContainer.value\n : props.type === 'right'\n ? rightPopupContainer.value\n : null,\n )\n\n const isDragging = eagerComputed(() => tableContext.draggingRowKey.value === props.rowKey)\n const isRowHover = eagerComputed(() => hoverRowKey.value === props.rowKey)\n\n watch(\n [isRowHover, bodyRow],\n () => {\n bodyRow.value &&\n rowHover.value &&\n (isRowHover.value\n ? addClass(bodyRow.value, `${props.prefixCls}-row-hover`)\n : removeClass(bodyRow.value, `${props.prefixCls}-row-hover`))\n },\n { immediate: true, flush: 'post' },\n )\n\n const mergedTooltipOpen = eagerComputed(() => tooltipOpen.value && isRowHover.value)\n\n let timer: any\n onBeforeUnmount(() => {\n isUnmount = true\n resizeObserver.disconnect()\n clearTimeout(timer)\n tableContext.removeRowHeight(rowUniId)\n })\n\n const hasMultiRowSpanInfo = eagerComputed(() => {\n return !tableContext.hasMultiRowSpanInfo.value[props.rowKey!]\n })\n\n const customRowProps = computed(() => {\n return tableContext.props.customRow?.(props.record!, props.rowIndex)\n })\n\n const rowSelectionType = computed(() => {\n return tableContext.props.rowSelection?.type\n })\n\n const isExpanded = ref(false)\n const expandedRowKeys = computed(() => tableContext.expandedRowKeys.value)\n const expanded = eagerComputed(() => expandedRowKeys.value.has?.(props.rowKey!))\n const expandIconColumnIndex = computed(() => tableContext.expandIconColumnIndex.value || 0)\n const indentSize = computed(() => tableContext.indentSize.value)\n\n watchEffect(() => {\n if (expanded.value) {\n isExpanded.value = true\n }\n })\n\n const rowExpandable = computed(\n () =>\n tableContext.expandType.value === 'row' &&\n tableContext.props.rowExpandable?.(props.record!),\n )\n\n const nestExpandable = computed(() => tableContext.expandType.value === 'nest')\n\n const hasNestChildren = computed(\n () =>\n !!(\n tableContext.childrenColumnName.value &&\n props.record?.[tableContext.childrenColumnName.value]\n ),\n )\n const mergedExpandable = computed(() => rowExpandable.value || nestExpandable.value)\n\n const onInternalTriggerExpand = (record: any, event: any) => {\n tableContext.onTriggerExpand(record, props.rowKey!, event)\n }\n\n const mergedRowHeights = computed(() => tableContext.mergedRowHeights.value)\n\n const height = eagerComputed(() => mergedRowHeights.value[props.rowKey!])\n const cellHeight = eagerComputed(() => tableContext.rowHeights.value[props.rowKey!])\n\n const isSelected = computed(\n () =>\n tableContext.props.highlightSelectRow &&\n tableContext.selection.derivedSelectedKeySet.value.has(props.rowKey!),\n )\n\n const rowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n const isEven = rowIndex! % 2 == 0\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-row-level-${indent}`]: true,\n [`${prefixCls}-row-hover`]: isRowHover.value && rowHover.value,\n [`${prefixCls}-row-dragging`]: isDragging.value,\n [`${prefixCls}-row-dragging-insert-target`]:\n tableContext.insertToRowKey.value === props.rowKey,\n [`${prefixCls}-row-odd`]: !isEven,\n [`${prefixCls}-row-even`]: isEven,\n [`${prefixCls}-no-height`]: !height.value,\n [`${prefixCls}-row-selected`]: isSelected.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandRowClass = computed(() => {\n const { prefixCls, record, rowIndex, indent } = props\n return classNames(\n {\n [`${prefixCls}-row`]: true,\n [`${prefixCls}-expanded-row`]: true,\n [`${prefixCls}-expanded-row-level-${indent! + 1}`]: true,\n [`${prefixCls}-no-height`]: !height.value,\n },\n props.getRowClassName?.(record, rowIndex!, indent),\n )\n })\n\n const expandColumnWidth = eagerComputed(() => {\n return tableContext.allCellProps.value[props.rowKey!]?.[ExpandColumnKey]?.props?.style?.width\n })\n\n const rowStyle = computed<CSSProperties>(() => {\n const style: CSSProperties = {\n opacity: 1,\n [`--${props.prefixCls}-row-bg`]: `var(--${props.prefixCls}-row-bg-${props.rowKey}, var(--${props.prefixCls}-bg))`,\n }\n if (hasMultiRowSpanInfo.value) {\n style.transform = `translateY(${props.pos}px)`\n } else {\n style.top = `${props.pos}px`\n }\n if (height.value !== undefined) {\n style.height = `${height.value}px`\n } else {\n style.height = `${tableContext.baseHeight.value}px`\n }\n if (props.isExpandRow && columnStartIndex.value === 0) {\n style.width = expandColumnWidth.value\n style.minWidth = '100%'\n }\n return style\n })\n\n watch(\n () => ({ ...rowStyle.value }),\n (newStyle, oldStyle = {}) => {\n if (tableContext.animateRows.value && !tableContext.useAnimate.value) {\n if (\n newStyle.top !== oldStyle.top ||\n newStyle.height !== oldStyle.height ||\n newStyle.transform !== oldStyle.transform\n ) {\n nextTick(() => {\n clearTimeout(timer)\n if (rowInstance?.vnode.el && rowInstance.vnode.el.style) {\n rowInstance.vnode.el.style.transition = 'none'\n timer = setTimeout(() => {\n if (rowInstance?.vnode?.el?.style) {\n rowInstance.vnode.el.style.transition = null\n }\n }, 100)\n }\n })\n }\n }\n },\n { immediate: true },\n )\n\n useProvideBodyRow({\n top: computed(() => props.pos!),\n height: computed(() =>\n height.value !== undefined ? height.value : tableContext.baseHeight.value,\n ),\n rowKey: computed(() => props.rowKey),\n })\n\n const cellClass = computed(() => ({\n [`${props.prefixCls}-cell`]: true,\n [`${props.prefixCls}-position-absolute`]: true,\n }))\n\n return {\n rowClass,\n rowStyle,\n cellClass,\n tableContext,\n mergedRowHeights,\n handleCellBlur,\n handleCellHover,\n handleClick: (event: any) => {\n tableContext.props.expandRowByClick &&\n mergedExpandable.value &&\n onInternalTriggerExpand(props.record, event)\n },\n rowSelectionType,\n nestExpandable,\n hasNestChildren,\n mergedExpandable,\n expandIconColumnIndex,\n indentSize,\n expanded,\n onInternalTriggerExpand,\n customRowProps,\n expandColumnKey: ExpandColumnKey,\n expandRowClass,\n mergedColumns,\n height,\n cellHeight,\n columnStartIndex,\n resizeObserver,\n calMaxHeight,\n bodyRow,\n hoverRowKey,\n hoverColumnKey,\n xVirtual: eagerComputed(() => tableContext.xVirtual.value),\n getPopupContainer: () => popupContainer.value!,\n editCellKeys,\n closeEditor,\n openEditor,\n mergedTooltipOpen,\n onCellMousedown,\n onCellKeydown,\n onCellMousemove,\n onCellClick,\n }\n },\n})\n</script>\n\n<template>\n <template v-if=\"isExpandRow\">\n <div\n v-if=\"columnStartIndex === 0\"\n ref=\"bodyRow\"\n :data-row-key=\"rowKey\"\n :class=\"expandRowClass\"\n :style=\"rowStyle\"\n role=\"row\"\n >\n <ExpandedRow\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n />\n </div>\n </template>\n <div\n v-else\n v-bind=\"customRowProps\"\n ref=\"bodyRow\"\n :class=\"rowClass\"\n :style=\"rowStyle\"\n :data-row-key=\"rowKey\"\n role=\"row\"\n @click=\"handleClick\"\n >\n <RenderSlot>\n <template v-for=\"(column, index) in mergedColumns\" :key=\"column && column.columnKey\">\n <BodyExtraCell\n v-if=\"column && column.__Internal__Column__\"\n :prefix-cls=\"prefixCls\"\n :row-key=\"rowKey\"\n :row-index=\"rowIndex!\"\n :type=\"type\"\n :column=\"mergedColumns?.[index]\"\n :expanded=\"expanded\"\n :support-expand=\"mergedExpandable\"\n :record=\"record\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @mouseleave=\"handleCellBlur\"\n />\n <BodyCell\n v-else-if=\"column\"\n :prefix-cls=\"prefixCls\"\n :item=\"record\"\n :row-key=\"rowKey\"\n :type=\"type\"\n :row-index=\"rowIndex!\"\n :flatten-row-index=\"flattenRowIndex\"\n :wrap-text=\"wrapText\"\n :column=\"column\"\n :resize-observer=\"resizeObserver\"\n :cal-max-height=\"calMaxHeight\"\n :has-append-node=\"column.columnIndex === expandIconColumnIndex && nestExpandable\"\n :height=\"cellHeight\"\n :get-popup-container=\"getPopupContainer\"\n :tooltip-open=\"mergedTooltipOpen && hoverColumnKey === column.columnKey\"\n :edit-cell-keys=\"editCellKeys\"\n @closeEditor=\"closeEditor\"\n @openEditor=\"openEditor\"\n @mouseenter=\"\n handleCellHover(rowKey, column.columnKey, tableContext.draggingRowKey.value!)\n \"\n @cellLeave=\"handleCellBlur\"\n @mousedown=\"onCellMousedown\"\n @mousemove=\"onCellMousemove\"\n @keydown=\"onCellKeydown\"\n @click=\"onCellClick\"\n >\n <template #appendNode>\n <div :class=\"`${prefixCls}-append-node`\">\n <span\n :style=\"`padding-left: ${(indent || 0) * indentSize}px`\"\n :class=\"`${prefixCls}-row-indent indent-level-${indent}`\"\n ></span>\n <ExpandIcon\n :expanded=\"expanded\"\n :prefix-cls=\"prefixCls\"\n :expandable=\"hasNestChildren\"\n :record=\"record\"\n :disabled=\"!mergedExpandable\"\n @expand=\"onInternalTriggerExpand\"\n />\n </div>\n </template>\n </BodyCell>\n </template>\n </RenderSlot>\n <div v-if=\"type !== 'center'\" :class=\"`${prefixCls}-cell-shadow-${type}`\"></div>\n </div>\n</template>\n"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RowHandler.vue.mjs","sources":["../../../../../../../../packages/components/table/src/components/Drag/RowHandler.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-08-29 13:59:21\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, VNode } from 'vue'\nimport type { ColumnType, DefaultRecordType, DragRowEventInfo, Key } from '../interface'\nimport type { RafFrame } from '../../utils/raf'\n\nimport {\n defineComponent,\n ref,\n computed,\n watch,\n onMounted,\n onBeforeUnmount,\n render,\n shallowRef,\n createVNode,\n reactive,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRow } from '../context/BodyRowsContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport {\n ICON_TYPE_DOWN,\n ICON_TYPE_FORBID,\n ICON_TYPE_UP,\n OFFSET_X,\n OFFSET_Y,\n DOWN,\n UP,\n} from './constant'\nimport { dragForbidIcon, dragUpAndDownIcon, dragIcon } from './icon'\nimport { eventsClose } from '../../utils/util'\nimport { useAutoScroll } from '../../hooks/useAutoScroll'\nimport raf from '../../utils/raf'\n\nexport default defineComponent({\n name: 'RowDragHandler',\n props: {\n columnKey: [String, Number],\n disabled: Boolean,\n column: Object as PropType<ColumnType<DefaultRecordType>>,\n },\n setup(props, { slots }) {\n const dragging = ref(false)\n const spanRef = ref<HTMLSpanElement>()\n\n const {\n prefixCls,\n dragRowsHandle,\n draggingRowKey,\n insertToRowKey,\n onRowDragEnd,\n scrollTo,\n bodyMaxWidth,\n isMyChildren,\n getRecordByKey,\n getIndexsByKey,\n childrenColumnName,\n getKeyByIndexs,\n scrollTop,\n scrollLeft,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n } = useInjectTable()\n const { dragRowPlaceholderRef, bodyRef } = useInjectBody()\n const { height, top, rowKey } = useInjectBodyRow()\n const tableSlotsContext = useInjectSlots()\n\n let rafFrame: RafFrame\n const clientY = ref()\n const clientX = ref()\n const clientY2 = ref()\n const dragGhostDom = document.createElement('div')\n const allowed = ref(true)\n let cacheMouseEvent: MouseEvent | null = null\n let bodyRect: DOMRect | Record<string, any> = {}\n let parentOffsetWidth = 0\n const destroyHandlers: Array<() => void> = []\n let dragGhostImage: VNode | null = null\n const iconType = ref(ICON_TYPE_DOWN)\n const fromIndexs = computed(() => getIndexsByKey(rowKey.value))\n\n onMounted(() => {\n if (dragRowsHandle.has(props.columnKey!)) {\n dragRowsHandle.get?.(props.columnKey!)?.add(spanRef.value!)\n } else {\n dragRowsHandle.set(props.columnKey!, new Set([spanRef.value!]))\n }\n })\n onBeforeUnmount(() => {\n dragRowsHandle.get(props.columnKey!)?.delete(spanRef.value!)\n if (dragRowsHandle.get(props.columnKey!)?.size === 0) {\n dragRowsHandle.delete(props.columnKey!)\n }\n raf.cancel(rafFrame)\n render(null, dragGhostDom)\n })\n\n const batchEvent = (eventList: any) => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.addEventListener(type, listener, options)\n })\n destroyHandlers.push(() => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.removeEventListener(type, listener, options)\n })\n })\n }\n const rowDragEvent = shallowRef<MouseEvent | Touch>()\n const handleMouseMoveOrTouchMove = (\n event: MouseEvent | Touch,\n cacheEvent: MouseEvent | Touch,\n ) => {\n rowDragEvent.value = event\n if (!dragging.value) {\n if (eventsClose(event, cacheEvent, 4)) {\n return\n }\n dragging.value = true\n clientY2.value = event.clientY\n draggingRowKey.value = rowKey.value\n parentOffsetWidth = spanRef.value!.parentElement!.offsetWidth\n getRootDocument().appendChild(dragGhostDom)\n renderDragGhost()\n }\n allowed.value = true\n clientX.value = event.clientX\n clientY.value = event.clientY\n ;(() => {\n const { y, height } = bodyRect\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop\n return clientY.value + 10 <= y\n ? ((dragGhostDom.style.top = y + pageYOffset - 20 + 'px'), true)\n : clientY.value > y + height &&\n ((dragGhostDom.style.top = y + pageYOffset + height - OFFSET_Y + 'px'), true)\n })()\n ? ((allowed.value = false), ensureCleared())\n : (check(event, false), (dragGhostDom.style.top = event.pageY - OFFSET_Y + 'px'))\n ;(() => {\n const { x, width } = bodyRect\n const left = window.pageXOffset || document.documentElement.scrollLeft\n return clientX.value + OFFSET_X <= x\n ? ((dragGhostDom.style.left = x + left - 20 + 'px'), true)\n : clientX.value + OFFSET_X >= x + width &&\n ((dragGhostDom.style.left = x + left + width - 20 + 'px'), true)\n })()\n ? (allowed.value = false)\n : (dragGhostDom.style.left = event.pageX - OFFSET_X + 'px')\n }\n\n let cacheStartTouch: TouchList[number] | null | undefined\n let cacheTouch: TouchList[number] | null | undefined\n const getTouch = (touches: TouchList) => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i]?.identifier === cacheTouch?.identifier) {\n return touches[i]\n }\n }\n return null\n }\n\n const handleMouseUpOrToucheEnd = (event: MouseEvent | Touch) => {\n if (dragging.value) {\n dragging.value = false\n getRootDocument().removeChild(dragGhostDom)\n }\n rowDragEvent.value = event\n cacheMouseEvent = null\n cacheTouch = null\n cacheStartTouch = null\n ensureCleared()\n draggingRowKey.value = null\n insertToRowKey.value = null\n dragRowPlaceholderRef.value!.style.opacity = '0'\n destroyHandlers.forEach((fn) => fn())\n destroyHandlers.length = 0\n raf.cancel(rafFrame)\n }\n\n const documentTouchMoveHandler = (event: TouchEvent) => {\n event.cancelable && event.preventDefault()\n }\n const touchMoveHandler = (event: TouchEvent) => {\n const touch = getTouch(event.touches)\n touch && handleMouseMoveOrTouchMove(touch, cacheTouch!)\n }\n const touchEndHandler = (event: TouchEvent) => {\n let touch = getTouch(event.touches)\n if (!touch) {\n touch = cacheStartTouch\n }\n handleMouseUpOrToucheEnd(touch!)\n }\n\n const contextmenuHandler = (event: MouseEvent) => event.preventDefault()\n const mouseMoveHandler = (event: MouseEvent) => {\n handleMouseMoveOrTouchMove(event, cacheMouseEvent!)\n }\n const mouseUpHandler = (event: MouseEvent) => {\n handleMouseUpOrToucheEnd(event)\n }\n\n const renderDragGhostImage = () => {\n let dragIcon = dragUpAndDownIcon\n if (iconType.value === ICON_TYPE_FORBID) {\n dragIcon = dragForbidIcon\n }\n if (tableSlotsContext.rowDragGhost) {\n if ('preTargetInfo' in dragRowEventInfo) {\n return tableSlotsContext.rowDragGhost({\n record: getRecordByKey(rowKey.value),\n preTargetInfo: dragRowEventInfo.preTargetInfo,\n nextTargetInfo: dragRowEventInfo.nextTargetInfo,\n column: props.column!,\n icon: createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n allowed: allowed.value,\n dragging: dragging.value,\n event: rowDragEvent.value!,\n })\n }\n }\n return [\n createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n createVNode(\n 'span',\n {\n class: `${prefixCls.value}-drag-ghost-image-label`,\n style: { maxWidth: `${parentOffsetWidth}px` },\n },\n [slots.label?.()],\n ),\n ]\n }\n\n const renderDragGhost = () => {\n if (!dragGhostImage) {\n dragGhostImage = createVNode(renderDragGhostImage)\n }\n render(dragGhostImage, dragGhostDom)\n }\n\n watch(\n [prefixCls],\n () => {\n dragGhostDom.className = `${prefixCls.value}-drag-ghost-image`\n },\n { immediate: true },\n )\n const dragRowEventInfo = reactive<DragRowEventInfo>({} as DragRowEventInfo)\n const getRootDocument = () => document.fullscreenElement || document.body\n\n const getDragDirection = () => {\n const { top } = spanRef.value!.getBoundingClientRect()\n return clientY.value - top >= 0 ? DOWN : UP\n }\n\n const handleDraging = () => {\n const { preTargetInfo, nextTargetInfo } = dragRowEventInfo\n if (isMyChildren(rowKey.value, preTargetInfo?.rowKey || '') || !allowed.value) {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n insertToRowKey.value = null\n return\n }\n let nextTargetRowKey: any = null\n const preTargetParentIndexs = preTargetInfo ? preTargetInfo.indexs.slice(0, -1) : []\n let preTargetParentRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n if (nextTargetInfo) {\n const { y, centerY, record, rowKey: nextRowKey } = nextTargetInfo\n if (\n record[childrenColumnName.value] &&\n clientY.value > y + OFFSET_Y &&\n clientY.value < centerY\n ) {\n nextTargetRowKey = nextRowKey\n }\n }\n if (preTargetInfo && nextTargetRowKey === null) {\n if (\n (nextTargetInfo &&\n !isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n nextTargetInfo.indexs.slice(0, -1).join('-') !==\n preTargetInfo.indexs.slice(0, -1).join('-')) ||\n !nextTargetInfo\n ) {\n const { centerY, height, y } = preTargetInfo\n if (clientY.value < centerY + height / 4) {\n nextTargetRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n } else if (\n clientY.value < y + height &&\n (!nextTargetInfo || nextTargetInfo.indexs.length < preTargetInfo.indexs.length)\n ) {\n const preTargetParentParentIndexs = preTargetParentIndexs.slice(0, -1)\n nextTargetRowKey = preTargetParentParentIndexs.length\n ? getKeyByIndexs(preTargetParentParentIndexs.join('-'))\n : null\n preTargetParentRowKey = nextTargetRowKey\n } else {\n preTargetParentRowKey = null\n }\n } else {\n isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n (nextTargetRowKey = preTargetInfo.rowKey)\n }\n }\n\n nextTargetRowKey === rowKey.value && (nextTargetRowKey = null)\n if (nextTargetRowKey !== nextTargetInfo?.rowKey) {\n dragRowPlaceholderRef.value!.style.opacity = '1'\n dragRowPlaceholderRef.value!.style.top = `${preTargetInfo ? preTargetInfo.top + preTargetInfo.height : 0}px`\n dragRowPlaceholderRef.value!.style.width = `${bodyMaxWidth.value}px`\n if (!nextTargetInfo && preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top =\n preTargetInfo.top +\n preTargetInfo.height -\n dragRowPlaceholderRef.value!.offsetHeight +\n 'px'\n } else if (!preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top = `0px`\n }\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n dragRowEventInfo.insertToRowKey = (nextTargetRowKey ?? preTargetParentRowKey) as Key\n insertToRowKey.value = dragRowEventInfo.insertToRowKey\n }\n\n watch([dragging, clientY, allowed], () => {\n raf.cancel(rafFrame)\n rafFrame = raf(() => {\n dragging.value && !allowed.value && (iconType.value = ICON_TYPE_FORBID)\n if (dragging.value && allowed.value) {\n const dir = getDragDirection()\n iconType.value = dir === DOWN ? ICON_TYPE_DOWN : ICON_TYPE_UP\n const targetInfos: any[] = []\n for (const dragHandle of dragRowsHandle.get(props.columnKey!)!.values()) {\n const { y } = dragHandle.getBoundingClientRect()\n const top = +dragHandle.getAttribute('data-scroll-top')!\n const height = +dragHandle.getAttribute('data-height')!\n const rowKeyType = dragHandle.getAttribute('data-row-key-type')\n let rowKey: Key = dragHandle.getAttribute('data-row-key')!\n rowKey = rowKeyType === 'number' ? +rowKey : rowKey\n targetInfos.push({\n y,\n top,\n height,\n rowKey,\n record: getRecordByKey(rowKey),\n indexs: getIndexsByKey(rowKey),\n centerY: y + height / 2,\n })\n }\n targetInfos.sort((a, b) => a.centerY - b.centerY)\n let preTargetInfo = targetInfos[targetInfos.length - 1] || null\n let nextTargetInfo = null\n const currentClientY = clientY.value\n for (let i = 0, len = targetInfos.length; i < len; i++) {\n const targetInfo = targetInfos[i]\n const { centerY } = targetInfo\n if (currentClientY <= centerY) {\n preTargetInfo = targetInfos[i - 1] || null\n nextTargetInfo = targetInfo\n break\n }\n }\n\n const newDragRowEventInfo = {\n record: getRecordByKey(rowKey.value),\n top: top.value,\n height: height.value,\n dir,\n rowKey: rowKey.value,\n event: rowDragEvent.value,\n column: props.column,\n preTargetInfo,\n nextTargetInfo,\n fromIndexs: fromIndexs.value,\n insertToRowKey: undefined,\n }\n Object.assign(dragRowEventInfo, newDragRowEventInfo)\n handleDraging()\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n })\n })\n\n const { check, ensureCleared } = useAutoScroll({\n scrollContainer: bodyRef,\n scrollAxis: 'y',\n getVerticalPosition: () => scrollTop.value,\n setVerticalPosition: (pos: number) => {\n scrollTo(pos)\n },\n getHorizontalPosition: () => scrollLeft.value,\n setHorizontalPosition: (pos: number) => scrollTo({ left: pos }),\n showVerticalScrollbar: showVerticalScrollbar,\n showHorizontalScrollbar: showHorizontalScrollbar,\n })\n\n watch(dragging, () => {\n if (!dragging.value && allowed.value) {\n onRowDragEnd(Object.assign({}, dragRowEventInfo, { event: rowDragEvent.value }))\n }\n })\n\n const className = computed(() => ({\n [`${prefixCls.value}-drag-handle`]: true,\n [`${prefixCls.value}-drag-handle-disabled`]: props.disabled,\n [`${prefixCls.value}-drag-dragging`]: dragging.value,\n }))\n\n return {\n dragIcon,\n dragging,\n className,\n spanRef,\n top,\n height,\n rowKey,\n rowKeyType: computed(() => typeof rowKey.value),\n onMousedown: (event: MouseEvent) => {\n event.preventDefault()\n if (props.disabled) {\n return\n }\n dragging.value = false\n cacheMouseEvent = event\n bodyRect = bodyRef.value!.getBoundingClientRect()\n batchEvent([\n { target: document, type: 'mousemove', listener: mouseMoveHandler },\n { target: document, type: 'mouseup', listener: mouseUpHandler },\n { target: document, type: 'contextmenu', listener: contextmenuHandler },\n ])\n },\n onTouchStart: (event: TouchEvent) => {\n if (props.disabled) return\n dragging.value = false\n const touch = event.touches[0]\n cacheStartTouch = touch\n cacheTouch = touch\n bodyRect = bodyRef.value!.getBoundingClientRect()\n const spanDom = spanRef.value\n const eventList = [\n {\n target: document,\n type: 'touchmove',\n listener: documentTouchMoveHandler,\n options: { passive: false },\n },\n {\n target: spanDom,\n type: 'touchmove',\n listener: touchMoveHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchend',\n listener: touchEndHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchcancel',\n listener: touchEndHandler,\n options: { passive: true },\n },\n ]\n batchEvent(eventList)\n },\n }\n },\n})\n</script>\n\n<template>\n <span\n ref=\"spanRef\"\n :class=\"className\"\n :aria-grabbed=\"dragging\"\n :aria-hidden=\"true\"\n :data-scroll-top=\"top\"\n :data-height=\"height\"\n :data-row-key=\"rowKey\"\n :data-row-key-type=\"rowKeyType\"\n :innerHTML=\"dragIcon\"\n unselectable=\"on\"\n @mousedown.stop=\"onMousedown\"\n @touchstartPassive=\"onTouchStart\"\n >\n </span>\n</template>\n"],"names":["_createElementBlock","_normalizeClass"],"mappings":";;;;;;sBAifEA,kBAAA,CAcO,MAAA,EAAA;AAAA,IAbL,GAAA,EAAI,SAAA;AAAA,IACH,KAAA,EAAKC,cAAA,CAAE,IAAA,CAAA,SAAS,CAAA;AAAA,IAChB,gBAAc,IAAA,CAAA,QAAA;AAAA,IACd,aAAA,EAAa,IAAA;AAAA,IACb,mBAAiB,IAAA,CAAA,GAAA;AAAA,IACjB,eAAa,IAAA,CAAA,MAAA;AAAA,IACb,gBAAc,IAAA,CAAA,MAAA;AAAA,IACd,qBAAmB,IAAA,CAAA,UAAA;AAAA,IACnB,WAAW,IAAA,CAAA,QAAA;AAAA,IACZ,YAAA,EAAa,IAAA;AAAA,IACZ,aAAS,MAAA,+CAAO,IAAA,CAAA,WAAA,IAAA,KAAA,WAAA,CAAA,GAAA,IAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,IAC3B,sBAAA,EAAiB,MAAA,CAAA,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAE,IAAA,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA;AAAA,GAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA;;;;;;"}
|
1
|
+
{"version":3,"file":"RowHandler.vue.mjs","sources":["../../../../../../../../packages/components/table/src/components/Drag/RowHandler.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-09-30 10:41:46\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, VNode } from 'vue'\nimport type { ColumnType, DefaultRecordType, DragRowEventInfo, Key } from '../interface'\nimport type { RafFrame } from '../../utils/raf'\n\nimport {\n defineComponent,\n ref,\n computed,\n watch,\n onMounted,\n onBeforeUnmount,\n render,\n shallowRef,\n createVNode,\n reactive,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRow } from '../context/BodyRowsContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport {\n ICON_TYPE_DOWN,\n ICON_TYPE_FORBID,\n ICON_TYPE_UP,\n OFFSET_X,\n OFFSET_Y,\n DOWN,\n UP,\n} from './constant'\nimport { dragForbidIcon, dragUpAndDownIcon, dragIcon } from './icon'\nimport { eventsClose } from '../../utils/util'\nimport { useAutoScroll } from '../../hooks/useAutoScroll'\nimport raf from '../../utils/raf'\n\nexport default defineComponent({\n name: 'RowDragHandler',\n props: {\n columnKey: [String, Number],\n disabled: Boolean,\n column: Object as PropType<ColumnType<DefaultRecordType>>,\n },\n setup(props, { slots }) {\n const dragging = ref(false)\n const spanRef = ref<HTMLSpanElement>()\n\n const {\n prefixCls,\n dragRowsHandle,\n draggingRowKey,\n insertToRowKey,\n onRowDragEnd,\n scrollTo,\n bodyMaxWidth,\n isMyChildren,\n getRecordByKey,\n getIndexsByKey,\n childrenColumnName,\n getKeyByIndexs,\n scrollTop,\n scrollLeft,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n } = useInjectTable()\n const { dragRowPlaceholderRef, bodyRef } = useInjectBody()\n const { height, top, rowKey } = useInjectBodyRow()\n const tableSlotsContext = useInjectSlots()\n\n let rafFrame: RafFrame\n const clientY = ref()\n const clientX = ref()\n const clientY2 = ref()\n const dragGhostDom = document.createElement('div')\n const allowed = ref(true)\n let cacheMouseEvent: MouseEvent | null = null\n let bodyRect: DOMRect | Record<string, any> = {}\n let parentOffsetWidth = 0\n const destroyHandlers: Array<() => void> = []\n let dragGhostImage: VNode | null = null\n const iconType = ref(ICON_TYPE_DOWN)\n const fromIndexs = computed(() => getIndexsByKey(rowKey.value))\n\n onMounted(() => {\n if (dragRowsHandle.has(props.columnKey!)) {\n dragRowsHandle.get?.(props.columnKey!)?.add(spanRef.value!)\n } else {\n dragRowsHandle.set(props.columnKey!, new Set([spanRef.value!]))\n }\n })\n onBeforeUnmount(() => {\n dragRowsHandle.get(props.columnKey!)?.delete(spanRef.value!)\n if (dragRowsHandle.get(props.columnKey!)?.size === 0) {\n dragRowsHandle.delete(props.columnKey!)\n }\n raf.cancel(rafFrame)\n render(null, dragGhostDom)\n })\n\n const batchEvent = (eventList: any) => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.addEventListener(type, listener, options)\n })\n destroyHandlers.push(() => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.removeEventListener(type, listener, options)\n })\n })\n }\n const rowDragEvent = shallowRef<MouseEvent | Touch>()\n const handleMouseMoveOrTouchMove = (\n event: MouseEvent | Touch,\n cacheEvent: MouseEvent | Touch,\n ) => {\n rowDragEvent.value = event\n if (!dragging.value) {\n if (eventsClose(event, cacheEvent, 4)) {\n return\n }\n dragging.value = true\n clientY2.value = event.clientY\n draggingRowKey.value = rowKey.value\n parentOffsetWidth = spanRef.value!.parentElement!.offsetWidth\n getRootDocument().appendChild(dragGhostDom)\n renderDragGhost()\n }\n allowed.value = true\n clientX.value = event.clientX\n clientY.value = event.clientY\n ;(() => {\n const { y, height } = bodyRect\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop\n return clientY.value + 10 <= y\n ? ((dragGhostDom.style.top = y + pageYOffset - 20 + 'px'), true)\n : clientY.value > y + height &&\n ((dragGhostDom.style.top = y + pageYOffset + height - OFFSET_Y + 'px'), true)\n })()\n ? ((allowed.value = false), ensureCleared())\n : (check(event, false), (dragGhostDom.style.top = event.pageY - OFFSET_Y + 'px'))\n ;(() => {\n const { x, width } = bodyRect\n const left = window.pageXOffset || document.documentElement.scrollLeft\n return clientX.value + OFFSET_X <= x\n ? ((dragGhostDom.style.left = x + left - 20 + 'px'), true)\n : clientX.value + OFFSET_X >= x + width &&\n ((dragGhostDom.style.left = x + left + width - 20 + 'px'), true)\n })()\n ? (allowed.value = false)\n : (dragGhostDom.style.left = event.pageX - OFFSET_X + 'px')\n }\n\n let cacheStartTouch: TouchList[number] | null | undefined\n let cacheTouch: TouchList[number] | null | undefined\n const getTouch = (touches: TouchList) => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i]?.identifier === cacheTouch?.identifier) {\n return touches[i]\n }\n }\n return null\n }\n\n const handleMouseUpOrToucheEnd = (event: MouseEvent | Touch) => {\n if (dragging.value) {\n dragging.value = false\n getRootDocument().removeChild(dragGhostDom)\n }\n rowDragEvent.value = event\n cacheMouseEvent = null\n cacheTouch = null\n cacheStartTouch = null\n ensureCleared()\n draggingRowKey.value = null\n insertToRowKey.value = null\n dragRowPlaceholderRef.value!.style.opacity = '0'\n destroyHandlers.forEach((fn) => fn())\n destroyHandlers.length = 0\n raf.cancel(rafFrame)\n }\n\n const documentTouchMoveHandler = (event: TouchEvent) => {\n event.cancelable && event.preventDefault()\n }\n const touchMoveHandler = (event: TouchEvent) => {\n const touch = getTouch(event.touches)\n touch && handleMouseMoveOrTouchMove(touch, cacheTouch!)\n }\n const touchEndHandler = (event: TouchEvent) => {\n let touch = getTouch(event.touches)\n if (!touch) {\n touch = cacheStartTouch\n }\n handleMouseUpOrToucheEnd(touch!)\n }\n\n const contextmenuHandler = (event: MouseEvent) => event.preventDefault()\n const mouseMoveHandler = (event: MouseEvent) => {\n handleMouseMoveOrTouchMove(event, cacheMouseEvent!)\n }\n const mouseUpHandler = (event: MouseEvent) => {\n handleMouseUpOrToucheEnd(event)\n }\n\n const renderDragGhostImage = () => {\n let dragIcon = dragUpAndDownIcon\n if (iconType.value === ICON_TYPE_FORBID) {\n dragIcon = dragForbidIcon\n }\n if (tableSlotsContext.rowDragGhost) {\n if ('preTargetInfo' in dragRowEventInfo) {\n return tableSlotsContext.rowDragGhost({\n record: getRecordByKey(rowKey.value),\n preTargetInfo: dragRowEventInfo.preTargetInfo,\n nextTargetInfo: dragRowEventInfo.nextTargetInfo,\n column: props.column!,\n icon: createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n allowed: allowed.value,\n dragging: dragging.value,\n event: rowDragEvent.value!,\n })\n }\n } else {\n return [\n createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n createVNode(\n 'span',\n {\n class: `${prefixCls.value}-drag-ghost-image-label`,\n style: { maxWidth: `${parentOffsetWidth}px` },\n },\n [slots.label?.()],\n ),\n ]\n }\n }\n\n const renderDragGhost = () => {\n if (!dragGhostImage) {\n dragGhostImage = createVNode(renderDragGhostImage)\n render(dragGhostImage, dragGhostDom)\n }\n }\n\n watch(\n [prefixCls],\n () => {\n dragGhostDom.className = `${prefixCls.value}-drag-ghost-image`\n },\n { immediate: true },\n )\n const dragRowEventInfo = reactive<DragRowEventInfo>({} as DragRowEventInfo)\n const getRootDocument = () => document.fullscreenElement || document.body\n\n const getDragDirection = () => {\n const { top } = spanRef.value!.getBoundingClientRect()\n return clientY.value - top >= 0 ? DOWN : UP\n }\n\n const handleDraging = () => {\n const { preTargetInfo, nextTargetInfo } = dragRowEventInfo\n if (isMyChildren(rowKey.value, preTargetInfo?.rowKey || '') || !allowed.value) {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n insertToRowKey.value = null\n return\n }\n let nextTargetRowKey: any = null\n const preTargetParentIndexs = preTargetInfo ? preTargetInfo.indexs.slice(0, -1) : []\n let preTargetParentRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n if (nextTargetInfo) {\n const { y, centerY, record, rowKey: nextRowKey } = nextTargetInfo\n if (\n record[childrenColumnName.value] &&\n clientY.value > y + OFFSET_Y &&\n clientY.value < centerY\n ) {\n nextTargetRowKey = nextRowKey\n }\n }\n if (preTargetInfo && nextTargetRowKey === null) {\n if (\n (nextTargetInfo &&\n !isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n nextTargetInfo.indexs.slice(0, -1).join('-') !==\n preTargetInfo.indexs.slice(0, -1).join('-')) ||\n !nextTargetInfo\n ) {\n const { centerY, height, y } = preTargetInfo\n if (clientY.value < centerY + height / 4) {\n nextTargetRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n } else if (\n clientY.value < y + height &&\n (!nextTargetInfo || nextTargetInfo.indexs.length < preTargetInfo.indexs.length)\n ) {\n const preTargetParentParentIndexs = preTargetParentIndexs.slice(0, -1)\n nextTargetRowKey = preTargetParentParentIndexs.length\n ? getKeyByIndexs(preTargetParentParentIndexs.join('-'))\n : null\n preTargetParentRowKey = nextTargetRowKey\n } else {\n preTargetParentRowKey = null\n }\n } else {\n isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n (nextTargetRowKey = preTargetInfo.rowKey)\n }\n }\n\n nextTargetRowKey === rowKey.value && (nextTargetRowKey = null)\n if (nextTargetRowKey !== nextTargetInfo?.rowKey) {\n dragRowPlaceholderRef.value!.style.opacity = '1'\n dragRowPlaceholderRef.value!.style.top = `${preTargetInfo ? preTargetInfo.top + preTargetInfo.height : 0}px`\n dragRowPlaceholderRef.value!.style.width = `${bodyMaxWidth.value}px`\n if (!nextTargetInfo && preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top =\n preTargetInfo.top +\n preTargetInfo.height -\n dragRowPlaceholderRef.value!.offsetHeight +\n 'px'\n } else if (!preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top = `0px`\n }\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n dragRowEventInfo.insertToRowKey = (nextTargetRowKey ?? preTargetParentRowKey) as Key\n insertToRowKey.value = dragRowEventInfo.insertToRowKey\n }\n\n watch([dragging, clientY, allowed], () => {\n raf.cancel(rafFrame)\n rafFrame = raf(() => {\n dragging.value && !allowed.value && (iconType.value = ICON_TYPE_FORBID)\n if (dragging.value && allowed.value) {\n const dir = getDragDirection()\n iconType.value = dir === DOWN ? ICON_TYPE_DOWN : ICON_TYPE_UP\n const targetInfos: any[] = []\n for (const dragHandle of dragRowsHandle.get(props.columnKey!)!.values()) {\n const { y } = dragHandle.getBoundingClientRect()\n const top = +dragHandle.getAttribute('data-scroll-top')!\n const height = +dragHandle.getAttribute('data-height')!\n const rowKeyType = dragHandle.getAttribute('data-row-key-type')\n let rowKey: Key = dragHandle.getAttribute('data-row-key')!\n rowKey = rowKeyType === 'number' ? +rowKey : rowKey\n targetInfos.push({\n y,\n top,\n height,\n rowKey,\n record: getRecordByKey(rowKey),\n indexs: getIndexsByKey(rowKey),\n centerY: y + height / 2,\n })\n }\n targetInfos.sort((a, b) => a.centerY - b.centerY)\n let preTargetInfo = targetInfos[targetInfos.length - 1] || null\n let nextTargetInfo = null\n const currentClientY = clientY.value\n for (let i = 0, len = targetInfos.length; i < len; i++) {\n const targetInfo = targetInfos[i]\n const { centerY } = targetInfo\n if (currentClientY <= centerY) {\n preTargetInfo = targetInfos[i - 1] || null\n nextTargetInfo = targetInfo\n break\n }\n }\n\n const newDragRowEventInfo = {\n record: getRecordByKey(rowKey.value),\n top: top.value,\n height: height.value,\n dir,\n rowKey: rowKey.value,\n event: rowDragEvent.value,\n column: props.column,\n preTargetInfo,\n nextTargetInfo,\n fromIndexs: fromIndexs.value,\n insertToRowKey: undefined,\n }\n Object.assign(dragRowEventInfo, newDragRowEventInfo)\n handleDraging()\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n })\n })\n\n const { check, ensureCleared } = useAutoScroll({\n scrollContainer: bodyRef,\n scrollAxis: 'y',\n getVerticalPosition: () => scrollTop.value,\n setVerticalPosition: (pos: number) => {\n scrollTo(pos)\n },\n getHorizontalPosition: () => scrollLeft.value,\n setHorizontalPosition: (pos: number) => scrollTo({ left: pos }),\n showVerticalScrollbar: showVerticalScrollbar,\n showHorizontalScrollbar: showHorizontalScrollbar,\n })\n\n watch(dragging, () => {\n if (!dragging.value && allowed.value) {\n onRowDragEnd(Object.assign({}, dragRowEventInfo, { event: rowDragEvent.value }))\n }\n })\n\n const className = computed(() => ({\n [`${prefixCls.value}-drag-handle`]: true,\n [`${prefixCls.value}-drag-handle-disabled`]: props.disabled,\n [`${prefixCls.value}-drag-dragging`]: dragging.value,\n }))\n\n return {\n dragIcon,\n dragging,\n className,\n spanRef,\n top,\n height,\n rowKey,\n rowKeyType: computed(() => typeof rowKey.value),\n onMousedown: (event: MouseEvent) => {\n event.preventDefault()\n if (props.disabled) {\n return\n }\n dragging.value = false\n cacheMouseEvent = event\n bodyRect = bodyRef.value!.getBoundingClientRect()\n batchEvent([\n { target: document, type: 'mousemove', listener: mouseMoveHandler },\n { target: document, type: 'mouseup', listener: mouseUpHandler },\n { target: document, type: 'contextmenu', listener: contextmenuHandler },\n ])\n },\n onTouchStart: (event: TouchEvent) => {\n if (props.disabled) return\n dragging.value = false\n const touch = event.touches[0]\n cacheStartTouch = touch\n cacheTouch = touch\n bodyRect = bodyRef.value!.getBoundingClientRect()\n const spanDom = spanRef.value\n const eventList = [\n {\n target: document,\n type: 'touchmove',\n listener: documentTouchMoveHandler,\n options: { passive: false },\n },\n {\n target: spanDom,\n type: 'touchmove',\n listener: touchMoveHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchend',\n listener: touchEndHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchcancel',\n listener: touchEndHandler,\n options: { passive: true },\n },\n ]\n batchEvent(eventList)\n },\n }\n },\n})\n</script>\n\n<template>\n <span\n ref=\"spanRef\"\n :class=\"className\"\n :aria-grabbed=\"dragging\"\n :aria-hidden=\"true\"\n :data-scroll-top=\"top\"\n :data-height=\"height\"\n :data-row-key=\"rowKey\"\n :data-row-key-type=\"rowKeyType\"\n :innerHTML=\"dragIcon\"\n unselectable=\"on\"\n @mousedown.stop=\"onMousedown\"\n @touchstartPassive=\"onTouchStart\"\n >\n </span>\n</template>\n"],"names":["_createElementBlock","_normalizeClass"],"mappings":";;;;;;sBAkfEA,kBAAA,CAcO,MAAA,EAAA;AAAA,IAbL,GAAA,EAAI,SAAA;AAAA,IACH,KAAA,EAAKC,cAAA,CAAE,IAAA,CAAA,SAAS,CAAA;AAAA,IAChB,gBAAc,IAAA,CAAA,QAAA;AAAA,IACd,aAAA,EAAa,IAAA;AAAA,IACb,mBAAiB,IAAA,CAAA,GAAA;AAAA,IACjB,eAAa,IAAA,CAAA,MAAA;AAAA,IACb,gBAAc,IAAA,CAAA,MAAA;AAAA,IACd,qBAAmB,IAAA,CAAA,UAAA;AAAA,IACnB,WAAW,IAAA,CAAA,QAAA;AAAA,IACZ,YAAA,EAAa,IAAA;AAAA,IACZ,aAAS,MAAA,+CAAO,IAAA,CAAA,WAAA,IAAA,KAAA,WAAA,CAAA,GAAA,IAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,IAC3B,sBAAA,EAAiB,MAAA,CAAA,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAE,IAAA,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA;AAAA,GAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA;;;;;;"}
|
@@ -182,28 +182,29 @@ var _sfc_main = defineComponent({
|
|
182
182
|
event: rowDragEvent.value
|
183
183
|
});
|
184
184
|
}
|
185
|
+
} else {
|
186
|
+
return [
|
187
|
+
createVNode(
|
188
|
+
"span",
|
189
|
+
{ class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon2 },
|
190
|
+
null
|
191
|
+
),
|
192
|
+
createVNode(
|
193
|
+
"span",
|
194
|
+
{
|
195
|
+
class: `${prefixCls.value}-drag-ghost-image-label`,
|
196
|
+
style: { maxWidth: `${parentOffsetWidth}px` }
|
197
|
+
},
|
198
|
+
[(_a = slots.label) == null ? void 0 : _a.call(slots)]
|
199
|
+
)
|
200
|
+
];
|
185
201
|
}
|
186
|
-
return [
|
187
|
-
createVNode(
|
188
|
-
"span",
|
189
|
-
{ class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon2 },
|
190
|
-
null
|
191
|
-
),
|
192
|
-
createVNode(
|
193
|
-
"span",
|
194
|
-
{
|
195
|
-
class: `${prefixCls.value}-drag-ghost-image-label`,
|
196
|
-
style: { maxWidth: `${parentOffsetWidth}px` }
|
197
|
-
},
|
198
|
-
[(_a = slots.label) == null ? void 0 : _a.call(slots)]
|
199
|
-
)
|
200
|
-
];
|
201
202
|
};
|
202
203
|
const renderDragGhost = () => {
|
203
204
|
if (!dragGhostImage) {
|
204
205
|
dragGhostImage = createVNode(renderDragGhostImage);
|
206
|
+
render(dragGhostImage, dragGhostDom);
|
205
207
|
}
|
206
|
-
render(dragGhostImage, dragGhostDom);
|
207
208
|
};
|
208
209
|
watch(
|
209
210
|
[prefixCls],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RowHandler.vue2.mjs","sources":["../../../../../../../../packages/components/table/src/components/Drag/RowHandler.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-08-29 13:59:21\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, VNode } from 'vue'\nimport type { ColumnType, DefaultRecordType, DragRowEventInfo, Key } from '../interface'\nimport type { RafFrame } from '../../utils/raf'\n\nimport {\n defineComponent,\n ref,\n computed,\n watch,\n onMounted,\n onBeforeUnmount,\n render,\n shallowRef,\n createVNode,\n reactive,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRow } from '../context/BodyRowsContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport {\n ICON_TYPE_DOWN,\n ICON_TYPE_FORBID,\n ICON_TYPE_UP,\n OFFSET_X,\n OFFSET_Y,\n DOWN,\n UP,\n} from './constant'\nimport { dragForbidIcon, dragUpAndDownIcon, dragIcon } from './icon'\nimport { eventsClose } from '../../utils/util'\nimport { useAutoScroll } from '../../hooks/useAutoScroll'\nimport raf from '../../utils/raf'\n\nexport default defineComponent({\n name: 'RowDragHandler',\n props: {\n columnKey: [String, Number],\n disabled: Boolean,\n column: Object as PropType<ColumnType<DefaultRecordType>>,\n },\n setup(props, { slots }) {\n const dragging = ref(false)\n const spanRef = ref<HTMLSpanElement>()\n\n const {\n prefixCls,\n dragRowsHandle,\n draggingRowKey,\n insertToRowKey,\n onRowDragEnd,\n scrollTo,\n bodyMaxWidth,\n isMyChildren,\n getRecordByKey,\n getIndexsByKey,\n childrenColumnName,\n getKeyByIndexs,\n scrollTop,\n scrollLeft,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n } = useInjectTable()\n const { dragRowPlaceholderRef, bodyRef } = useInjectBody()\n const { height, top, rowKey } = useInjectBodyRow()\n const tableSlotsContext = useInjectSlots()\n\n let rafFrame: RafFrame\n const clientY = ref()\n const clientX = ref()\n const clientY2 = ref()\n const dragGhostDom = document.createElement('div')\n const allowed = ref(true)\n let cacheMouseEvent: MouseEvent | null = null\n let bodyRect: DOMRect | Record<string, any> = {}\n let parentOffsetWidth = 0\n const destroyHandlers: Array<() => void> = []\n let dragGhostImage: VNode | null = null\n const iconType = ref(ICON_TYPE_DOWN)\n const fromIndexs = computed(() => getIndexsByKey(rowKey.value))\n\n onMounted(() => {\n if (dragRowsHandle.has(props.columnKey!)) {\n dragRowsHandle.get?.(props.columnKey!)?.add(spanRef.value!)\n } else {\n dragRowsHandle.set(props.columnKey!, new Set([spanRef.value!]))\n }\n })\n onBeforeUnmount(() => {\n dragRowsHandle.get(props.columnKey!)?.delete(spanRef.value!)\n if (dragRowsHandle.get(props.columnKey!)?.size === 0) {\n dragRowsHandle.delete(props.columnKey!)\n }\n raf.cancel(rafFrame)\n render(null, dragGhostDom)\n })\n\n const batchEvent = (eventList: any) => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.addEventListener(type, listener, options)\n })\n destroyHandlers.push(() => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.removeEventListener(type, listener, options)\n })\n })\n }\n const rowDragEvent = shallowRef<MouseEvent | Touch>()\n const handleMouseMoveOrTouchMove = (\n event: MouseEvent | Touch,\n cacheEvent: MouseEvent | Touch,\n ) => {\n rowDragEvent.value = event\n if (!dragging.value) {\n if (eventsClose(event, cacheEvent, 4)) {\n return\n }\n dragging.value = true\n clientY2.value = event.clientY\n draggingRowKey.value = rowKey.value\n parentOffsetWidth = spanRef.value!.parentElement!.offsetWidth\n getRootDocument().appendChild(dragGhostDom)\n renderDragGhost()\n }\n allowed.value = true\n clientX.value = event.clientX\n clientY.value = event.clientY\n ;(() => {\n const { y, height } = bodyRect\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop\n return clientY.value + 10 <= y\n ? ((dragGhostDom.style.top = y + pageYOffset - 20 + 'px'), true)\n : clientY.value > y + height &&\n ((dragGhostDom.style.top = y + pageYOffset + height - OFFSET_Y + 'px'), true)\n })()\n ? ((allowed.value = false), ensureCleared())\n : (check(event, false), (dragGhostDom.style.top = event.pageY - OFFSET_Y + 'px'))\n ;(() => {\n const { x, width } = bodyRect\n const left = window.pageXOffset || document.documentElement.scrollLeft\n return clientX.value + OFFSET_X <= x\n ? ((dragGhostDom.style.left = x + left - 20 + 'px'), true)\n : clientX.value + OFFSET_X >= x + width &&\n ((dragGhostDom.style.left = x + left + width - 20 + 'px'), true)\n })()\n ? (allowed.value = false)\n : (dragGhostDom.style.left = event.pageX - OFFSET_X + 'px')\n }\n\n let cacheStartTouch: TouchList[number] | null | undefined\n let cacheTouch: TouchList[number] | null | undefined\n const getTouch = (touches: TouchList) => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i]?.identifier === cacheTouch?.identifier) {\n return touches[i]\n }\n }\n return null\n }\n\n const handleMouseUpOrToucheEnd = (event: MouseEvent | Touch) => {\n if (dragging.value) {\n dragging.value = false\n getRootDocument().removeChild(dragGhostDom)\n }\n rowDragEvent.value = event\n cacheMouseEvent = null\n cacheTouch = null\n cacheStartTouch = null\n ensureCleared()\n draggingRowKey.value = null\n insertToRowKey.value = null\n dragRowPlaceholderRef.value!.style.opacity = '0'\n destroyHandlers.forEach((fn) => fn())\n destroyHandlers.length = 0\n raf.cancel(rafFrame)\n }\n\n const documentTouchMoveHandler = (event: TouchEvent) => {\n event.cancelable && event.preventDefault()\n }\n const touchMoveHandler = (event: TouchEvent) => {\n const touch = getTouch(event.touches)\n touch && handleMouseMoveOrTouchMove(touch, cacheTouch!)\n }\n const touchEndHandler = (event: TouchEvent) => {\n let touch = getTouch(event.touches)\n if (!touch) {\n touch = cacheStartTouch\n }\n handleMouseUpOrToucheEnd(touch!)\n }\n\n const contextmenuHandler = (event: MouseEvent) => event.preventDefault()\n const mouseMoveHandler = (event: MouseEvent) => {\n handleMouseMoveOrTouchMove(event, cacheMouseEvent!)\n }\n const mouseUpHandler = (event: MouseEvent) => {\n handleMouseUpOrToucheEnd(event)\n }\n\n const renderDragGhostImage = () => {\n let dragIcon = dragUpAndDownIcon\n if (iconType.value === ICON_TYPE_FORBID) {\n dragIcon = dragForbidIcon\n }\n if (tableSlotsContext.rowDragGhost) {\n if ('preTargetInfo' in dragRowEventInfo) {\n return tableSlotsContext.rowDragGhost({\n record: getRecordByKey(rowKey.value),\n preTargetInfo: dragRowEventInfo.preTargetInfo,\n nextTargetInfo: dragRowEventInfo.nextTargetInfo,\n column: props.column!,\n icon: createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n allowed: allowed.value,\n dragging: dragging.value,\n event: rowDragEvent.value!,\n })\n }\n }\n return [\n createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n createVNode(\n 'span',\n {\n class: `${prefixCls.value}-drag-ghost-image-label`,\n style: { maxWidth: `${parentOffsetWidth}px` },\n },\n [slots.label?.()],\n ),\n ]\n }\n\n const renderDragGhost = () => {\n if (!dragGhostImage) {\n dragGhostImage = createVNode(renderDragGhostImage)\n }\n render(dragGhostImage, dragGhostDom)\n }\n\n watch(\n [prefixCls],\n () => {\n dragGhostDom.className = `${prefixCls.value}-drag-ghost-image`\n },\n { immediate: true },\n )\n const dragRowEventInfo = reactive<DragRowEventInfo>({} as DragRowEventInfo)\n const getRootDocument = () => document.fullscreenElement || document.body\n\n const getDragDirection = () => {\n const { top } = spanRef.value!.getBoundingClientRect()\n return clientY.value - top >= 0 ? DOWN : UP\n }\n\n const handleDraging = () => {\n const { preTargetInfo, nextTargetInfo } = dragRowEventInfo\n if (isMyChildren(rowKey.value, preTargetInfo?.rowKey || '') || !allowed.value) {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n insertToRowKey.value = null\n return\n }\n let nextTargetRowKey: any = null\n const preTargetParentIndexs = preTargetInfo ? preTargetInfo.indexs.slice(0, -1) : []\n let preTargetParentRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n if (nextTargetInfo) {\n const { y, centerY, record, rowKey: nextRowKey } = nextTargetInfo\n if (\n record[childrenColumnName.value] &&\n clientY.value > y + OFFSET_Y &&\n clientY.value < centerY\n ) {\n nextTargetRowKey = nextRowKey\n }\n }\n if (preTargetInfo && nextTargetRowKey === null) {\n if (\n (nextTargetInfo &&\n !isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n nextTargetInfo.indexs.slice(0, -1).join('-') !==\n preTargetInfo.indexs.slice(0, -1).join('-')) ||\n !nextTargetInfo\n ) {\n const { centerY, height, y } = preTargetInfo\n if (clientY.value < centerY + height / 4) {\n nextTargetRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n } else if (\n clientY.value < y + height &&\n (!nextTargetInfo || nextTargetInfo.indexs.length < preTargetInfo.indexs.length)\n ) {\n const preTargetParentParentIndexs = preTargetParentIndexs.slice(0, -1)\n nextTargetRowKey = preTargetParentParentIndexs.length\n ? getKeyByIndexs(preTargetParentParentIndexs.join('-'))\n : null\n preTargetParentRowKey = nextTargetRowKey\n } else {\n preTargetParentRowKey = null\n }\n } else {\n isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n (nextTargetRowKey = preTargetInfo.rowKey)\n }\n }\n\n nextTargetRowKey === rowKey.value && (nextTargetRowKey = null)\n if (nextTargetRowKey !== nextTargetInfo?.rowKey) {\n dragRowPlaceholderRef.value!.style.opacity = '1'\n dragRowPlaceholderRef.value!.style.top = `${preTargetInfo ? preTargetInfo.top + preTargetInfo.height : 0}px`\n dragRowPlaceholderRef.value!.style.width = `${bodyMaxWidth.value}px`\n if (!nextTargetInfo && preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top =\n preTargetInfo.top +\n preTargetInfo.height -\n dragRowPlaceholderRef.value!.offsetHeight +\n 'px'\n } else if (!preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top = `0px`\n }\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n dragRowEventInfo.insertToRowKey = (nextTargetRowKey ?? preTargetParentRowKey) as Key\n insertToRowKey.value = dragRowEventInfo.insertToRowKey\n }\n\n watch([dragging, clientY, allowed], () => {\n raf.cancel(rafFrame)\n rafFrame = raf(() => {\n dragging.value && !allowed.value && (iconType.value = ICON_TYPE_FORBID)\n if (dragging.value && allowed.value) {\n const dir = getDragDirection()\n iconType.value = dir === DOWN ? ICON_TYPE_DOWN : ICON_TYPE_UP\n const targetInfos: any[] = []\n for (const dragHandle of dragRowsHandle.get(props.columnKey!)!.values()) {\n const { y } = dragHandle.getBoundingClientRect()\n const top = +dragHandle.getAttribute('data-scroll-top')!\n const height = +dragHandle.getAttribute('data-height')!\n const rowKeyType = dragHandle.getAttribute('data-row-key-type')\n let rowKey: Key = dragHandle.getAttribute('data-row-key')!\n rowKey = rowKeyType === 'number' ? +rowKey : rowKey\n targetInfos.push({\n y,\n top,\n height,\n rowKey,\n record: getRecordByKey(rowKey),\n indexs: getIndexsByKey(rowKey),\n centerY: y + height / 2,\n })\n }\n targetInfos.sort((a, b) => a.centerY - b.centerY)\n let preTargetInfo = targetInfos[targetInfos.length - 1] || null\n let nextTargetInfo = null\n const currentClientY = clientY.value\n for (let i = 0, len = targetInfos.length; i < len; i++) {\n const targetInfo = targetInfos[i]\n const { centerY } = targetInfo\n if (currentClientY <= centerY) {\n preTargetInfo = targetInfos[i - 1] || null\n nextTargetInfo = targetInfo\n break\n }\n }\n\n const newDragRowEventInfo = {\n record: getRecordByKey(rowKey.value),\n top: top.value,\n height: height.value,\n dir,\n rowKey: rowKey.value,\n event: rowDragEvent.value,\n column: props.column,\n preTargetInfo,\n nextTargetInfo,\n fromIndexs: fromIndexs.value,\n insertToRowKey: undefined,\n }\n Object.assign(dragRowEventInfo, newDragRowEventInfo)\n handleDraging()\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n })\n })\n\n const { check, ensureCleared } = useAutoScroll({\n scrollContainer: bodyRef,\n scrollAxis: 'y',\n getVerticalPosition: () => scrollTop.value,\n setVerticalPosition: (pos: number) => {\n scrollTo(pos)\n },\n getHorizontalPosition: () => scrollLeft.value,\n setHorizontalPosition: (pos: number) => scrollTo({ left: pos }),\n showVerticalScrollbar: showVerticalScrollbar,\n showHorizontalScrollbar: showHorizontalScrollbar,\n })\n\n watch(dragging, () => {\n if (!dragging.value && allowed.value) {\n onRowDragEnd(Object.assign({}, dragRowEventInfo, { event: rowDragEvent.value }))\n }\n })\n\n const className = computed(() => ({\n [`${prefixCls.value}-drag-handle`]: true,\n [`${prefixCls.value}-drag-handle-disabled`]: props.disabled,\n [`${prefixCls.value}-drag-dragging`]: dragging.value,\n }))\n\n return {\n dragIcon,\n dragging,\n className,\n spanRef,\n top,\n height,\n rowKey,\n rowKeyType: computed(() => typeof rowKey.value),\n onMousedown: (event: MouseEvent) => {\n event.preventDefault()\n if (props.disabled) {\n return\n }\n dragging.value = false\n cacheMouseEvent = event\n bodyRect = bodyRef.value!.getBoundingClientRect()\n batchEvent([\n { target: document, type: 'mousemove', listener: mouseMoveHandler },\n { target: document, type: 'mouseup', listener: mouseUpHandler },\n { target: document, type: 'contextmenu', listener: contextmenuHandler },\n ])\n },\n onTouchStart: (event: TouchEvent) => {\n if (props.disabled) return\n dragging.value = false\n const touch = event.touches[0]\n cacheStartTouch = touch\n cacheTouch = touch\n bodyRect = bodyRef.value!.getBoundingClientRect()\n const spanDom = spanRef.value\n const eventList = [\n {\n target: document,\n type: 'touchmove',\n listener: documentTouchMoveHandler,\n options: { passive: false },\n },\n {\n target: spanDom,\n type: 'touchmove',\n listener: touchMoveHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchend',\n listener: touchEndHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchcancel',\n listener: touchEndHandler,\n options: { passive: true },\n },\n ]\n batchEvent(eventList)\n },\n }\n },\n})\n</script>\n\n<template>\n <span\n ref=\"spanRef\"\n :class=\"className\"\n :aria-grabbed=\"dragging\"\n :aria-hidden=\"true\"\n :data-scroll-top=\"top\"\n :data-height=\"height\"\n :data-row-key=\"rowKey\"\n :data-row-key-type=\"rowKeyType\"\n :innerHTML=\"dragIcon\"\n unselectable=\"on\"\n @mousedown.stop=\"onMousedown\"\n @touchstartPassive=\"onTouchStart\"\n >\n </span>\n</template>\n"],"names":["height","dragIcon","top","rowKey"],"mappings":";;;;;;;;;;;AA0CA,gBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,gBAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,IAC1B,QAAA,EAAU,OAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,KAAA,CAAM,KAAA,EAAO,EAAE,KAAA,EAAM,EAAG;AACtB,IAAA,MAAM,QAAA,GAAW,IAAI,KAAK,CAAA;AAC1B,IAAA,MAAM,UAAU,GAAA,EAAqB;AAErC,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,QACE,cAAA,EAAe;AACnB,IAAA,MAAM,EAAE,qBAAA,EAAuB,OAAA,EAAQ,GAAI,aAAA,EAAc;AACzD,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,MAAA,KAAW,gBAAA,EAAiB;AACjD,IAAA,MAAM,oBAAoB,cAAA,EAAe;AAEzC,IAAA,IAAI,QAAA;AACJ,IAAA,MAAM,UAAU,GAAA,EAAI;AACpB,IAAA,MAAM,UAAU,GAAA,EAAI;AACpB,IAAA,MAAM,WAAW,GAAA,EAAI;AACrB,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,IAAI,IAAI,CAAA;AACxB,IAAA,IAAI,eAAA,GAAqC,IAAA;AACzC,IAAA,IAAI,WAA0C,EAAC;AAC/C,IAAA,IAAI,iBAAA,GAAoB,CAAA;AACxB,IAAA,MAAM,kBAAqC,EAAC;AAC5C,IAAA,IAAI,cAAA,GAA+B,IAAA;AACnC,IAAA,MAAM,QAAA,GAAW,IAAI,cAAc,CAAA;AACnC,IAAA,MAAM,aAAa,QAAA,CAAS,MAAM,cAAA,CAAe,MAAA,CAAO,KAAK,CAAC,CAAA;AAE9D,IAAA,SAAA,CAAU,MAAM;;AACd,MAAA,IAAI,cAAA,CAAe,GAAA,CAAI,KAAA,CAAM,SAAU,CAAA,EAAG;AACxC,QAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,cAAA,CAAe,QAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,cAAA,EAAqB,KAAA,CAAM,SAAA,CAAA,KAA3B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAwC,IAAI,OAAA,CAAQ,KAAA,CAAA;AAAA,MACtD,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,GAAA,CAAI,MAAM,SAAA,kBAAY,IAAI,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAC,CAAC,CAAA;AAAA,MAChE;AAAA,IACF,CAAC,CAAA;AACD,IAAA,eAAA,CAAgB,MAAM;;AACpB,MAAA,CAAA,EAAA,GAAA,cAAA,CAAe,IAAI,KAAA,CAAM,SAAU,CAAA,KAAnC,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsC,OAAO,OAAA,CAAQ,KAAA,CAAA;AACrD,MAAA,IAAA,CAAA,CAAI,oBAAe,GAAA,CAAI,KAAA,CAAM,SAAU,CAAA,KAAnC,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsC,UAAS,CAAA,EAAG;AACpD,QAAA,cAAA,CAAe,MAAA,CAAO,MAAM,SAAU,CAAA;AAAA,MACxC;AACA,MAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AACnB,MAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAAA,IAC3B,CAAC,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAAmB;AACrC,MAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,MAAA,KAAgB;AACjC,QAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,SAAQ,GAAI,MAAA;AAC5C,QAAA,MAAA,CAAO,gBAAA,CAAiB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAA,MACjD,CAAC,CAAA;AACD,MAAA,eAAA,CAAgB,KAAK,MAAM;AACzB,QAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,MAAA,KAAgB;AACjC,UAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,SAAQ,GAAI,MAAA;AAC5C,UAAA,MAAA,CAAO,mBAAA,CAAoB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAA,QACpD,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAA;AACA,IAAA,MAAM,eAAe,UAAA,EAA+B;AACpD,IAAA,MAAM,0BAAA,GAA6B,CACjC,KAAA,EACA,UAAA,KACG;AACH,MAAA,YAAA,CAAa,KAAA,GAAQ,KAAA;AACrB,MAAA,IAAI,CAAC,SAAS,KAAA,EAAO;AACnB,QAAA,IAAI,WAAA,CAAY,KAAA,EAAO,UAAA,EAAY,CAAC,CAAA,EAAG;AACrC,UAAA;AAAA,QACF;AACA,QAAA,QAAA,CAAS,KAAA,GAAQ,IAAA;AACjB,QAAA,QAAA,CAAS,QAAQ,KAAA,CAAM,OAAA;AACvB,QAAA,cAAA,CAAe,QAAQ,MAAA,CAAO,KAAA;AAC9B,QAAA,iBAAA,GAAoB,OAAA,CAAQ,MAAO,aAAA,CAAe,WAAA;AAClD,QAAA,eAAA,EAAgB,CAAE,YAAY,YAAY,CAAA;AAC1C,QAAA,eAAA,EAAgB;AAAA,MAClB;AACA,MAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAChB,MAAA,OAAA,CAAQ,QAAQ,KAAA,CAAM,OAAA;AACtB,MAAA,OAAA,CAAQ,QAAQ,KAAA,CAAM,OAAA;AACrB,MAAA,CAAC,MAAM;AACN,QAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAAA,OAAAA,EAAO,GAAI,QAAA;AACtB,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,WAAA,IAAe,QAAA,CAAS,eAAA,CAAgB,SAAA;AACnE,QAAA,OAAO,OAAA,CAAQ,QAAQ,EAAA,IAAM,CAAA,IACvB,aAAa,KAAA,CAAM,GAAA,GAAM,CAAA,GAAI,WAAA,GAAc,EAAA,GAAK,IAAA,EAAO,QACzD,OAAA,CAAQ,KAAA,GAAQ,CAAA,GAAIA,OAAAA,KAChB,YAAA,CAAa,KAAA,CAAM,MAAM,CAAA,GAAI,WAAA,GAAcA,OAAAA,GAAS,QAAA,GAAW,IAAA,EAAO,IAAA,CAAA;AAAA,MAChF,IAAG,IACG,OAAA,CAAQ,KAAA,GAAQ,KAAA,EAAQ,eAAc,KACvC,KAAA,CAAM,KAAA,EAAO,KAAK,GAAI,YAAA,CAAa,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,QAAQ,QAAA,GAAW,IAAA,CAAA;AAC5E,MAAA,CAAC,MAAM;AACN,QAAA,MAAM,EAAE,CAAA,EAAG,KAAA,EAAM,GAAI,QAAA;AACrB,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,WAAA,IAAe,QAAA,CAAS,eAAA,CAAgB,UAAA;AAC5D,QAAA,OAAO,OAAA,CAAQ,KAAA,GAAQ,QAAA,IAAY,CAAA,IAC7B,YAAA,CAAa,MAAM,IAAA,GAAO,CAAA,GAAI,IAAA,GAAO,EAAA,GAAK,IAAA,EAAO,IAAA,IACnD,QAAQ,KAAA,GAAQ,QAAA,IAAY,CAAA,GAAI,KAAA,KAC5B,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA,GAAI,IAAA,GAAO,KAAA,GAAQ,EAAA,GAAK,IAAA,EAAO,IAAA,CAAA;AAAA,MACnE,CAAA,GAAG,GACE,OAAA,CAAQ,KAAA,GAAQ,KAAA,GAChB,aAAa,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,KAAA,GAAQ,QAAA,GAAW,IAAA;AAAA,IAC1D,CAAA;AAEA,IAAA,IAAI,eAAA;AACJ,IAAA,IAAI,UAAA;AACJ,IAAA,MAAM,QAAA,GAAW,CAAC,OAAA,KAAuB;;AACvC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,QAAA,IAAA,CAAA,CAAI,aAAQ,CAAC,CAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,UAAA,OAAe,yCAAY,UAAA,CAAA,EAAY;AACrD,UAAA,OAAO,QAAQ,CAAC,CAAA;AAAA,QAClB;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAA8B;AAC9D,MAAA,IAAI,SAAS,KAAA,EAAO;AAClB,QAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,QAAA,eAAA,EAAgB,CAAE,YAAY,YAAY,CAAA;AAAA,MAC5C;AACA,MAAA,YAAA,CAAa,KAAA,GAAQ,KAAA;AACrB,MAAA,eAAA,GAAkB,IAAA;AAClB,MAAA,UAAA,GAAa,IAAA;AACb,MAAA,eAAA,GAAkB,IAAA;AAClB,MAAA,aAAA,EAAc;AACd,MAAA,cAAA,CAAe,KAAA,GAAQ,IAAA;AACvB,MAAA,cAAA,CAAe,KAAA,GAAQ,IAAA;AACvB,MAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AAC7C,MAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,EAAA,KAAO,EAAA,EAAI,CAAA;AACpC,MAAA,eAAA,CAAgB,MAAA,GAAS,CAAA;AACzB,MAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAAsB;AACtD,MAAA,KAAA,CAAM,UAAA,IAAc,MAAM,cAAA,EAAe;AAAA,IAC3C,CAAA;AACA,IAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAsB;AAC9C,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA;AACpC,MAAA,KAAA,IAAS,0BAAA,CAA2B,OAAO,UAAW,CAAA;AAAA,IACxD,CAAA;AACA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAsB;AAC7C,MAAA,IAAI,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA;AAClC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,KAAA,GAAQ,eAAA;AAAA,MACV;AACA,MAAA,wBAAA,CAAyB,KAAM,CAAA;AAAA,IACjC,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAsB,KAAA,CAAM,cAAA,EAAe;AACvE,IAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAsB;AAC9C,MAAA,0BAAA,CAA2B,OAAO,eAAgB,CAAA;AAAA,IACpD,CAAA;AACA,IAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAsB;AAC5C,MAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,uBAAuB,MAAM;;AACjC,MAAA,IAAIC,SAAAA,GAAW,iBAAA;AACf,MAAA,IAAI,QAAA,CAAS,UAAU,gBAAA,EAAkB;AACvC,QAAAA,SAAAA,GAAW,cAAA;AAAA,MACb;AACA,MAAA,IAAI,kBAAkB,YAAA,EAAc;AAClC,QAAA,IAAI,mBAAmB,gBAAA,EAAkB;AACvC,UAAA,OAAO,kBAAkB,YAAA,CAAa;AAAA,YACpC,MAAA,EAAQ,cAAA,CAAe,MAAA,CAAO,KAAK,CAAA;AAAA,YACnC,eAAe,gBAAA,CAAiB,aAAA;AAAA,YAChC,gBAAgB,gBAAA,CAAiB,cAAA;AAAA,YACjC,QAAQ,KAAA,CAAM,MAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,cACJ,MAAA;AAAA,cACA,EAAE,KAAA,EAAO,CAAA,EAAG,UAAU,KAAK,CAAA,sBAAA,CAAA,EAA0B,WAAWA,SAAAA,EAAS;AAAA,cACzE;AAAA,aACF;AAAA,YACA,SAAS,OAAA,CAAQ,KAAA;AAAA,YACjB,UAAU,QAAA,CAAS,KAAA;AAAA,YACnB,OAAO,YAAA,CAAa;AAAA,WACrB,CAAA;AAAA,QACH;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,WAAA;AAAA,UACE,MAAA;AAAA,UACA,EAAE,KAAA,EAAO,CAAA,EAAG,UAAU,KAAK,CAAA,sBAAA,CAAA,EAA0B,WAAWA,SAAAA,EAAS;AAAA,UACzE;AAAA,SACF;AAAA,QACA,WAAA;AAAA,UACE,MAAA;AAAA,UACA;AAAA,YACE,KAAA,EAAO,CAAA,EAAG,SAAA,CAAU,KAAK,CAAA,uBAAA,CAAA;AAAA,YACzB,KAAA,EAAO,EAAE,QAAA,EAAU,CAAA,EAAG,iBAAiB,CAAA,EAAA,CAAA;AAAK,WAC9C;AAAA,UACA,CAAA,CAAC,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAe;AAAA;AAClB,OACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,cAAA,GAAiB,YAAY,oBAAoB,CAAA;AAAA,MACnD;AACA,MAAA,MAAA,CAAO,gBAAgB,YAAY,CAAA;AAAA,IACrC,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,CAAC,SAAS,CAAA;AAAA,MACV,MAAM;AACJ,QAAA,YAAA,CAAa,SAAA,GAAY,CAAA,EAAG,SAAA,CAAU,KAAK,CAAA,iBAAA,CAAA;AAAA,MAC7C,CAAA;AAAA,MACA,EAAE,WAAW,IAAA;AAAK,KACpB;AACA,IAAA,MAAM,gBAAA,GAAmB,QAAA,CAA2B,EAAsB,CAAA;AAC1E,IAAA,MAAM,eAAA,GAAkB,MAAM,QAAA,CAAS,iBAAA,IAAqB,QAAA,CAAS,IAAA;AAErE,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,EAAE,GAAA,EAAAC,IAAAA,EAAI,GAAI,OAAA,CAAQ,MAAO,qBAAA,EAAsB;AACrD,MAAA,OAAO,OAAA,CAAQ,KAAA,GAAQA,IAAAA,IAAO,CAAA,GAAI,IAAA,GAAO,EAAA;AAAA,IAC3C,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,EAAE,aAAA,EAAe,cAAA,EAAe,GAAI,gBAAA;AAC1C,MAAA,IAAI,YAAA,CAAa,OAAO,KAAA,EAAA,CAAO,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,WAAU,EAAE,CAAA,IAAK,CAAC,OAAA,CAAQ,KAAA,EAAO;AAC7E,QAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AAC7C,QAAA,cAAA,CAAe,KAAA,GAAQ,IAAA;AACvB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,gBAAA,GAAwB,IAAA;AAC5B,MAAA,MAAM,qBAAA,GAAwB,gBAAgB,aAAA,CAAc,MAAA,CAAO,MAAM,CAAA,EAAG,EAAE,IAAI,EAAC;AACnF,MAAA,IAAI,qBAAA,GAAwB,sBAAsB,MAAA,GAC9C,cAAA,CAAe,sBAAsB,IAAA,CAAK,GAAG,CAAC,CAAA,GAC9C,IAAA;AACJ,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,MAAM,EAAE,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,YAAW,GAAI,cAAA;AACnD,QAAA,IACE,MAAA,CAAO,kBAAA,CAAmB,KAAK,CAAA,IAC/B,OAAA,CAAQ,QAAQ,CAAA,GAAI,QAAA,IACpB,OAAA,CAAQ,KAAA,GAAQ,OAAA,EAChB;AACA,UAAA,gBAAA,GAAmB,UAAA;AAAA,QACrB;AAAA,MACF;AACA,MAAA,IAAI,aAAA,IAAiB,qBAAqB,IAAA,EAAM;AAC9C,QAAA,IACG,cAAA,IACC,CAAC,YAAA,CAAa,aAAA,CAAc,MAAA,EAAQ,cAAA,CAAe,MAAM,CAAA,IACzD,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,KACzC,aAAA,CAAc,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAC9C,CAAC,cAAA,EACD;AACA,UAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAAF,OAAAA,EAAQ,GAAE,GAAI,aAAA;AAC/B,UAAA,IAAI,OAAA,CAAQ,KAAA,GAAQ,OAAA,GAAUA,OAAAA,GAAS,CAAA,EAAG;AACxC,YAAA,gBAAA,GAAmB,sBAAsB,MAAA,GACrC,cAAA,CAAe,sBAAsB,IAAA,CAAK,GAAG,CAAC,CAAA,GAC9C,IAAA;AAAA,UACN,CAAA,MAAA,IACE,OAAA,CAAQ,KAAA,GAAQ,CAAA,GAAIA,OAAAA,KACnB,CAAC,cAAA,IAAkB,cAAA,CAAe,MAAA,CAAO,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,MAAA,CAAA,EACxE;AACA,YAAA,MAAM,2BAAA,GAA8B,qBAAA,CAAsB,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACrE,YAAA,gBAAA,GAAmB,4BAA4B,MAAA,GAC3C,cAAA,CAAe,4BAA4B,IAAA,CAAK,GAAG,CAAC,CAAA,GACpD,IAAA;AACJ,YAAA,qBAAA,GAAwB,gBAAA;AAAA,UAC1B,CAAA,MAAO;AACL,YAAA,qBAAA,GAAwB,IAAA;AAAA,UAC1B;AAAA,QACF,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,cAAc,MAAA,EAAQ,cAAA,CAAe,MAAM,CAAA,KACrD,mBAAmB,aAAA,CAAc,MAAA,CAAA;AAAA,QACtC;AAAA,MACF;AAEA,MAAA,gBAAA,KAAqB,MAAA,CAAO,UAAU,gBAAA,GAAmB,IAAA,CAAA;AACzD,MAAA,IAAI,gBAAA,MAAqB,iDAAgB,MAAA,CAAA,EAAQ;AAC/C,QAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AAC7C,QAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,GAAA,GAAM,CAAA,EAAG,gBAAgB,aAAA,CAAc,GAAA,GAAM,aAAA,CAAc,MAAA,GAAS,CAAC,CAAA,EAAA,CAAA;AACxG,QAAA,qBAAA,CAAsB,KAAA,CAAO,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,aAAa,KAAK,CAAA,EAAA,CAAA;AAChE,QAAA,IAAI,CAAC,kBAAkB,aAAA,EAAe;AACpC,UAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,GAAA,GACjC,aAAA,CAAc,MACd,aAAA,CAAc,MAAA,GACd,qBAAA,CAAsB,KAAA,CAAO,YAAA,GAC7B,IAAA;AAAA,QACJ,CAAA,MAAA,IAAW,CAAC,aAAA,EAAe;AACzB,UAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,GAAA,GAAM,CAAA,GAAA,CAAA;AAAA,QAC3C;AAAA,MACF,CAAA,MAAO;AACL,QAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AAAA,MAC/C;AACA,MAAA,gBAAA,CAAiB,iBAAkB,gBAAA,IAAA,IAAA,GAAA,gBAAA,GAAoB,qBAAA;AACvD,MAAA,cAAA,CAAe,QAAQ,gBAAA,CAAiB,cAAA;AAAA,IAC1C,CAAA;AAEA,IAAA,KAAA,CAAM,CAAC,QAAA,EAAU,OAAA,EAAS,OAAO,GAAG,MAAM;AACxC,MAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AACnB,MAAA,QAAA,GAAW,IAAI,MAAM;AACnB,QAAA,QAAA,CAAS,KAAA,IAAS,CAAC,OAAA,CAAQ,KAAA,KAAU,SAAS,KAAA,GAAQ,gBAAA,CAAA;AACtD,QAAA,IAAI,QAAA,CAAS,KAAA,IAAS,OAAA,CAAQ,KAAA,EAAO;AACnC,UAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,UAAA,QAAA,CAAS,KAAA,GAAQ,GAAA,KAAQ,IAAA,GAAO,cAAA,GAAiB,YAAA;AACjD,UAAA,MAAM,cAAqB,EAAC;AAC5B,UAAA,KAAA,MAAW,cAAc,cAAA,CAAe,GAAA,CAAI,MAAM,SAAU,CAAA,CAAG,QAAO,EAAG;AACvE,YAAA,MAAM,EAAE,CAAA,EAAE,GAAI,UAAA,CAAW,qBAAA,EAAsB;AAC/C,YAAA,MAAME,IAAAA,GAAM,CAAC,UAAA,CAAW,YAAA,CAAa,iBAAiB,CAAA;AACtD,YAAA,MAAMF,OAAAA,GAAS,CAAC,UAAA,CAAW,YAAA,CAAa,aAAa,CAAA;AACrD,YAAA,MAAM,UAAA,GAAa,UAAA,CAAW,YAAA,CAAa,mBAAmB,CAAA;AAC9D,YAAA,IAAIG,OAAAA,GAAc,UAAA,CAAW,YAAA,CAAa,cAAc,CAAA;AACxD,YAAAA,OAAAA,GAAS,UAAA,KAAe,QAAA,GAAW,CAACA,OAAAA,GAASA,OAAAA;AAC7C,YAAA,WAAA,CAAY,IAAA,CAAK;AAAA,cACf,CAAA;AAAA,cACA,GAAA,EAAAD,IAAAA;AAAA,cACA,MAAA,EAAAF,OAAAA;AAAA,cACA,MAAA,EAAAG,OAAAA;AAAA,cACA,MAAA,EAAQ,eAAeA,OAAM,CAAA;AAAA,cAC7B,MAAA,EAAQ,eAAeA,OAAM,CAAA;AAAA,cAC7B,OAAA,EAAS,IAAIH,OAAAA,GAAS;AAAA,aACvB,CAAA;AAAA,UACH;AACA,UAAA,WAAA,CAAY,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,OAAA,GAAU,EAAE,OAAO,CAAA;AAChD,UAAA,IAAI,aAAA,GAAgB,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA,IAAK,IAAA;AAC3D,UAAA,IAAI,cAAA,GAAiB,IAAA;AACrB,UAAA,MAAM,iBAAiB,OAAA,CAAQ,KAAA;AAC/B,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,GAAA,GAAM,YAAY,MAAA,EAAQ,CAAA,GAAI,KAAK,CAAA,EAAA,EAAK;AACtD,YAAA,MAAM,UAAA,GAAa,YAAY,CAAC,CAAA;AAChC,YAAA,MAAM,EAAE,SAAQ,GAAI,UAAA;AACpB,YAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,cAAA,aAAA,GAAgB,WAAA,CAAY,CAAA,GAAI,CAAC,CAAA,IAAK,IAAA;AACtC,cAAA,cAAA,GAAiB,UAAA;AACjB,cAAA;AAAA,YACF;AAAA,UACF;AAEA,UAAA,MAAM,mBAAA,GAAsB;AAAA,YAC1B,MAAA,EAAQ,cAAA,CAAe,MAAA,CAAO,KAAK,CAAA;AAAA,YACnC,KAAK,GAAA,CAAI,KAAA;AAAA,YACT,QAAQ,MAAA,CAAO,KAAA;AAAA,YACf,GAAA;AAAA,YACA,QAAQ,MAAA,CAAO,KAAA;AAAA,YACf,OAAO,YAAA,CAAa,KAAA;AAAA,YACpB,QAAQ,KAAA,CAAM,MAAA;AAAA,YACd,aAAA;AAAA,YACA,cAAA;AAAA,YACA,YAAY,UAAA,CAAW,KAAA;AAAA,YACvB,cAAA,EAAgB;AAAA,WAClB;AACA,UAAA,MAAA,CAAO,MAAA,CAAO,kBAAkB,mBAAmB,CAAA;AACnD,UAAA,aAAA,EAAc;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,qBAAA,CAAsB,KAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AAAA,QAC/C;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI,aAAA,CAAc;AAAA,MAC7C,eAAA,EAAiB,OAAA;AAAA,MACjB,UAAA,EAAY,GAAA;AAAA,MACZ,mBAAA,EAAqB,MAAM,SAAA,CAAU,KAAA;AAAA,MACrC,mBAAA,EAAqB,CAAC,GAAA,KAAgB;AACpC,QAAA,QAAA,CAAS,GAAG,CAAA;AAAA,MACd,CAAA;AAAA,MACA,qBAAA,EAAuB,MAAM,UAAA,CAAW,KAAA;AAAA,MACxC,uBAAuB,CAAC,GAAA,KAAgB,SAAS,EAAE,IAAA,EAAM,KAAK,CAAA;AAAA,MAC9D,qBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,QAAA,CAAS,KAAA,IAAS,OAAA,CAAQ,KAAA,EAAO;AACpC,QAAA,YAAA,CAAa,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,gBAAA,EAAkB,EAAE,KAAA,EAAO,YAAA,CAAa,KAAA,EAAO,CAAC,CAAA;AAAA,MACjF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,SAAS,OAAO;AAAA,MAChC,CAAC,CAAA,EAAG,SAAA,CAAU,KAAK,cAAc,GAAG,IAAA;AAAA,MACpC,CAAC,CAAA,EAAG,SAAA,CAAU,KAAK,CAAA,qBAAA,CAAuB,GAAG,KAAA,CAAM,QAAA;AAAA,MACnD,CAAC,CAAA,EAAG,SAAA,CAAU,KAAK,CAAA,cAAA,CAAgB,GAAG,QAAA,CAAS;AAAA,KACjD,CAAE,CAAA;AAEF,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA,EAAY,QAAA,CAAS,MAAM,OAAO,OAAO,KAAK,CAAA;AAAA,MAC9C,WAAA,EAAa,CAAC,KAAA,KAAsB;AAClC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,IAAI,MAAM,QAAA,EAAU;AAClB,UAAA;AAAA,QACF;AACA,QAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,QAAA,eAAA,GAAkB,KAAA;AAClB,QAAA,QAAA,GAAW,OAAA,CAAQ,MAAO,qBAAA,EAAsB;AAChD,QAAA,UAAA,CAAW;AAAA,UACT,EAAE,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,WAAA,EAAa,UAAU,gBAAA,EAAiB;AAAA,UAClE,EAAE,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,UAAU,cAAA,EAAe;AAAA,UAC9D,EAAE,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,aAAA,EAAe,UAAU,kBAAA;AAAmB,SACvE,CAAA;AAAA,MACH,CAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAA,KAAsB;AACnC,QAAA,IAAI,MAAM,QAAA,EAAU;AACpB,QAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAC7B,QAAA,eAAA,GAAkB,KAAA;AAClB,QAAA,UAAA,GAAa,KAAA;AACb,QAAA,QAAA,GAAW,OAAA,CAAQ,MAAO,qBAAA,EAAsB;AAChD,QAAA,MAAM,UAAU,OAAA,CAAQ,KAAA;AACxB,QAAA,MAAM,SAAA,GAAY;AAAA,UAChB;AAAA,YACE,MAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAM,WAAA;AAAA,YACN,QAAA,EAAU,wBAAA;AAAA,YACV,OAAA,EAAS,EAAE,OAAA,EAAS,KAAA;AAAM,WAC5B;AAAA,UACA;AAAA,YACE,MAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAM,WAAA;AAAA,YACN,QAAA,EAAU,gBAAA;AAAA,YACV,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA;AAAK,WAC3B;AAAA,UACA;AAAA,YACE,MAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAM,UAAA;AAAA,YACN,QAAA,EAAU,eAAA;AAAA,YACV,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA;AAAK,WAC3B;AAAA,UACA;AAAA,YACE,MAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAM,aAAA;AAAA,YACN,QAAA,EAAU,eAAA;AAAA,YACV,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA;AAAK;AAC3B,SACF;AACA,QAAA,UAAA,CAAW,SAAS,CAAA;AAAA,MACtB;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}
|
1
|
+
{"version":3,"file":"RowHandler.vue2.mjs","sources":["../../../../../../../../packages/components/table/src/components/Drag/RowHandler.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-09-30 10:41:46\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, VNode } from 'vue'\nimport type { ColumnType, DefaultRecordType, DragRowEventInfo, Key } from '../interface'\nimport type { RafFrame } from '../../utils/raf'\n\nimport {\n defineComponent,\n ref,\n computed,\n watch,\n onMounted,\n onBeforeUnmount,\n render,\n shallowRef,\n createVNode,\n reactive,\n} from 'vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectBody } from '../context/BodyContext'\nimport { useInjectBodyRow } from '../context/BodyRowsContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport {\n ICON_TYPE_DOWN,\n ICON_TYPE_FORBID,\n ICON_TYPE_UP,\n OFFSET_X,\n OFFSET_Y,\n DOWN,\n UP,\n} from './constant'\nimport { dragForbidIcon, dragUpAndDownIcon, dragIcon } from './icon'\nimport { eventsClose } from '../../utils/util'\nimport { useAutoScroll } from '../../hooks/useAutoScroll'\nimport raf from '../../utils/raf'\n\nexport default defineComponent({\n name: 'RowDragHandler',\n props: {\n columnKey: [String, Number],\n disabled: Boolean,\n column: Object as PropType<ColumnType<DefaultRecordType>>,\n },\n setup(props, { slots }) {\n const dragging = ref(false)\n const spanRef = ref<HTMLSpanElement>()\n\n const {\n prefixCls,\n dragRowsHandle,\n draggingRowKey,\n insertToRowKey,\n onRowDragEnd,\n scrollTo,\n bodyMaxWidth,\n isMyChildren,\n getRecordByKey,\n getIndexsByKey,\n childrenColumnName,\n getKeyByIndexs,\n scrollTop,\n scrollLeft,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n } = useInjectTable()\n const { dragRowPlaceholderRef, bodyRef } = useInjectBody()\n const { height, top, rowKey } = useInjectBodyRow()\n const tableSlotsContext = useInjectSlots()\n\n let rafFrame: RafFrame\n const clientY = ref()\n const clientX = ref()\n const clientY2 = ref()\n const dragGhostDom = document.createElement('div')\n const allowed = ref(true)\n let cacheMouseEvent: MouseEvent | null = null\n let bodyRect: DOMRect | Record<string, any> = {}\n let parentOffsetWidth = 0\n const destroyHandlers: Array<() => void> = []\n let dragGhostImage: VNode | null = null\n const iconType = ref(ICON_TYPE_DOWN)\n const fromIndexs = computed(() => getIndexsByKey(rowKey.value))\n\n onMounted(() => {\n if (dragRowsHandle.has(props.columnKey!)) {\n dragRowsHandle.get?.(props.columnKey!)?.add(spanRef.value!)\n } else {\n dragRowsHandle.set(props.columnKey!, new Set([spanRef.value!]))\n }\n })\n onBeforeUnmount(() => {\n dragRowsHandle.get(props.columnKey!)?.delete(spanRef.value!)\n if (dragRowsHandle.get(props.columnKey!)?.size === 0) {\n dragRowsHandle.delete(props.columnKey!)\n }\n raf.cancel(rafFrame)\n render(null, dragGhostDom)\n })\n\n const batchEvent = (eventList: any) => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.addEventListener(type, listener, options)\n })\n destroyHandlers.push(() => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.removeEventListener(type, listener, options)\n })\n })\n }\n const rowDragEvent = shallowRef<MouseEvent | Touch>()\n const handleMouseMoveOrTouchMove = (\n event: MouseEvent | Touch,\n cacheEvent: MouseEvent | Touch,\n ) => {\n rowDragEvent.value = event\n if (!dragging.value) {\n if (eventsClose(event, cacheEvent, 4)) {\n return\n }\n dragging.value = true\n clientY2.value = event.clientY\n draggingRowKey.value = rowKey.value\n parentOffsetWidth = spanRef.value!.parentElement!.offsetWidth\n getRootDocument().appendChild(dragGhostDom)\n renderDragGhost()\n }\n allowed.value = true\n clientX.value = event.clientX\n clientY.value = event.clientY\n ;(() => {\n const { y, height } = bodyRect\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop\n return clientY.value + 10 <= y\n ? ((dragGhostDom.style.top = y + pageYOffset - 20 + 'px'), true)\n : clientY.value > y + height &&\n ((dragGhostDom.style.top = y + pageYOffset + height - OFFSET_Y + 'px'), true)\n })()\n ? ((allowed.value = false), ensureCleared())\n : (check(event, false), (dragGhostDom.style.top = event.pageY - OFFSET_Y + 'px'))\n ;(() => {\n const { x, width } = bodyRect\n const left = window.pageXOffset || document.documentElement.scrollLeft\n return clientX.value + OFFSET_X <= x\n ? ((dragGhostDom.style.left = x + left - 20 + 'px'), true)\n : clientX.value + OFFSET_X >= x + width &&\n ((dragGhostDom.style.left = x + left + width - 20 + 'px'), true)\n })()\n ? (allowed.value = false)\n : (dragGhostDom.style.left = event.pageX - OFFSET_X + 'px')\n }\n\n let cacheStartTouch: TouchList[number] | null | undefined\n let cacheTouch: TouchList[number] | null | undefined\n const getTouch = (touches: TouchList) => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i]?.identifier === cacheTouch?.identifier) {\n return touches[i]\n }\n }\n return null\n }\n\n const handleMouseUpOrToucheEnd = (event: MouseEvent | Touch) => {\n if (dragging.value) {\n dragging.value = false\n getRootDocument().removeChild(dragGhostDom)\n }\n rowDragEvent.value = event\n cacheMouseEvent = null\n cacheTouch = null\n cacheStartTouch = null\n ensureCleared()\n draggingRowKey.value = null\n insertToRowKey.value = null\n dragRowPlaceholderRef.value!.style.opacity = '0'\n destroyHandlers.forEach((fn) => fn())\n destroyHandlers.length = 0\n raf.cancel(rafFrame)\n }\n\n const documentTouchMoveHandler = (event: TouchEvent) => {\n event.cancelable && event.preventDefault()\n }\n const touchMoveHandler = (event: TouchEvent) => {\n const touch = getTouch(event.touches)\n touch && handleMouseMoveOrTouchMove(touch, cacheTouch!)\n }\n const touchEndHandler = (event: TouchEvent) => {\n let touch = getTouch(event.touches)\n if (!touch) {\n touch = cacheStartTouch\n }\n handleMouseUpOrToucheEnd(touch!)\n }\n\n const contextmenuHandler = (event: MouseEvent) => event.preventDefault()\n const mouseMoveHandler = (event: MouseEvent) => {\n handleMouseMoveOrTouchMove(event, cacheMouseEvent!)\n }\n const mouseUpHandler = (event: MouseEvent) => {\n handleMouseUpOrToucheEnd(event)\n }\n\n const renderDragGhostImage = () => {\n let dragIcon = dragUpAndDownIcon\n if (iconType.value === ICON_TYPE_FORBID) {\n dragIcon = dragForbidIcon\n }\n if (tableSlotsContext.rowDragGhost) {\n if ('preTargetInfo' in dragRowEventInfo) {\n return tableSlotsContext.rowDragGhost({\n record: getRecordByKey(rowKey.value),\n preTargetInfo: dragRowEventInfo.preTargetInfo,\n nextTargetInfo: dragRowEventInfo.nextTargetInfo,\n column: props.column!,\n icon: createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n allowed: allowed.value,\n dragging: dragging.value,\n event: rowDragEvent.value!,\n })\n }\n } else {\n return [\n createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n createVNode(\n 'span',\n {\n class: `${prefixCls.value}-drag-ghost-image-label`,\n style: { maxWidth: `${parentOffsetWidth}px` },\n },\n [slots.label?.()],\n ),\n ]\n }\n }\n\n const renderDragGhost = () => {\n if (!dragGhostImage) {\n dragGhostImage = createVNode(renderDragGhostImage)\n render(dragGhostImage, dragGhostDom)\n }\n }\n\n watch(\n [prefixCls],\n () => {\n dragGhostDom.className = `${prefixCls.value}-drag-ghost-image`\n },\n { immediate: true },\n )\n const dragRowEventInfo = reactive<DragRowEventInfo>({} as DragRowEventInfo)\n const getRootDocument = () => document.fullscreenElement || document.body\n\n const getDragDirection = () => {\n const { top } = spanRef.value!.getBoundingClientRect()\n return clientY.value - top >= 0 ? DOWN : UP\n }\n\n const handleDraging = () => {\n const { preTargetInfo, nextTargetInfo } = dragRowEventInfo\n if (isMyChildren(rowKey.value, preTargetInfo?.rowKey || '') || !allowed.value) {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n insertToRowKey.value = null\n return\n }\n let nextTargetRowKey: any = null\n const preTargetParentIndexs = preTargetInfo ? preTargetInfo.indexs.slice(0, -1) : []\n let preTargetParentRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n if (nextTargetInfo) {\n const { y, centerY, record, rowKey: nextRowKey } = nextTargetInfo\n if (\n record[childrenColumnName.value] &&\n clientY.value > y + OFFSET_Y &&\n clientY.value < centerY\n ) {\n nextTargetRowKey = nextRowKey\n }\n }\n if (preTargetInfo && nextTargetRowKey === null) {\n if (\n (nextTargetInfo &&\n !isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n nextTargetInfo.indexs.slice(0, -1).join('-') !==\n preTargetInfo.indexs.slice(0, -1).join('-')) ||\n !nextTargetInfo\n ) {\n const { centerY, height, y } = preTargetInfo\n if (clientY.value < centerY + height / 4) {\n nextTargetRowKey = preTargetParentIndexs.length\n ? getKeyByIndexs(preTargetParentIndexs.join('-'))\n : null\n } else if (\n clientY.value < y + height &&\n (!nextTargetInfo || nextTargetInfo.indexs.length < preTargetInfo.indexs.length)\n ) {\n const preTargetParentParentIndexs = preTargetParentIndexs.slice(0, -1)\n nextTargetRowKey = preTargetParentParentIndexs.length\n ? getKeyByIndexs(preTargetParentParentIndexs.join('-'))\n : null\n preTargetParentRowKey = nextTargetRowKey\n } else {\n preTargetParentRowKey = null\n }\n } else {\n isMyChildren(preTargetInfo.rowKey, nextTargetInfo.rowKey) &&\n (nextTargetRowKey = preTargetInfo.rowKey)\n }\n }\n\n nextTargetRowKey === rowKey.value && (nextTargetRowKey = null)\n if (nextTargetRowKey !== nextTargetInfo?.rowKey) {\n dragRowPlaceholderRef.value!.style.opacity = '1'\n dragRowPlaceholderRef.value!.style.top = `${preTargetInfo ? preTargetInfo.top + preTargetInfo.height : 0}px`\n dragRowPlaceholderRef.value!.style.width = `${bodyMaxWidth.value}px`\n if (!nextTargetInfo && preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top =\n preTargetInfo.top +\n preTargetInfo.height -\n dragRowPlaceholderRef.value!.offsetHeight +\n 'px'\n } else if (!preTargetInfo) {\n dragRowPlaceholderRef.value!.style.top = `0px`\n }\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n dragRowEventInfo.insertToRowKey = (nextTargetRowKey ?? preTargetParentRowKey) as Key\n insertToRowKey.value = dragRowEventInfo.insertToRowKey\n }\n\n watch([dragging, clientY, allowed], () => {\n raf.cancel(rafFrame)\n rafFrame = raf(() => {\n dragging.value && !allowed.value && (iconType.value = ICON_TYPE_FORBID)\n if (dragging.value && allowed.value) {\n const dir = getDragDirection()\n iconType.value = dir === DOWN ? ICON_TYPE_DOWN : ICON_TYPE_UP\n const targetInfos: any[] = []\n for (const dragHandle of dragRowsHandle.get(props.columnKey!)!.values()) {\n const { y } = dragHandle.getBoundingClientRect()\n const top = +dragHandle.getAttribute('data-scroll-top')!\n const height = +dragHandle.getAttribute('data-height')!\n const rowKeyType = dragHandle.getAttribute('data-row-key-type')\n let rowKey: Key = dragHandle.getAttribute('data-row-key')!\n rowKey = rowKeyType === 'number' ? +rowKey : rowKey\n targetInfos.push({\n y,\n top,\n height,\n rowKey,\n record: getRecordByKey(rowKey),\n indexs: getIndexsByKey(rowKey),\n centerY: y + height / 2,\n })\n }\n targetInfos.sort((a, b) => a.centerY - b.centerY)\n let preTargetInfo = targetInfos[targetInfos.length - 1] || null\n let nextTargetInfo = null\n const currentClientY = clientY.value\n for (let i = 0, len = targetInfos.length; i < len; i++) {\n const targetInfo = targetInfos[i]\n const { centerY } = targetInfo\n if (currentClientY <= centerY) {\n preTargetInfo = targetInfos[i - 1] || null\n nextTargetInfo = targetInfo\n break\n }\n }\n\n const newDragRowEventInfo = {\n record: getRecordByKey(rowKey.value),\n top: top.value,\n height: height.value,\n dir,\n rowKey: rowKey.value,\n event: rowDragEvent.value,\n column: props.column,\n preTargetInfo,\n nextTargetInfo,\n fromIndexs: fromIndexs.value,\n insertToRowKey: undefined,\n }\n Object.assign(dragRowEventInfo, newDragRowEventInfo)\n handleDraging()\n } else {\n dragRowPlaceholderRef.value!.style.opacity = '0'\n }\n })\n })\n\n const { check, ensureCleared } = useAutoScroll({\n scrollContainer: bodyRef,\n scrollAxis: 'y',\n getVerticalPosition: () => scrollTop.value,\n setVerticalPosition: (pos: number) => {\n scrollTo(pos)\n },\n getHorizontalPosition: () => scrollLeft.value,\n setHorizontalPosition: (pos: number) => scrollTo({ left: pos }),\n showVerticalScrollbar: showVerticalScrollbar,\n showHorizontalScrollbar: showHorizontalScrollbar,\n })\n\n watch(dragging, () => {\n if (!dragging.value && allowed.value) {\n onRowDragEnd(Object.assign({}, dragRowEventInfo, { event: rowDragEvent.value }))\n }\n })\n\n const className = computed(() => ({\n [`${prefixCls.value}-drag-handle`]: true,\n [`${prefixCls.value}-drag-handle-disabled`]: props.disabled,\n [`${prefixCls.value}-drag-dragging`]: dragging.value,\n }))\n\n return {\n dragIcon,\n dragging,\n className,\n spanRef,\n top,\n height,\n rowKey,\n rowKeyType: computed(() => typeof rowKey.value),\n onMousedown: (event: MouseEvent) => {\n event.preventDefault()\n if (props.disabled) {\n return\n }\n dragging.value = false\n cacheMouseEvent = event\n bodyRect = bodyRef.value!.getBoundingClientRect()\n batchEvent([\n { target: document, type: 'mousemove', listener: mouseMoveHandler },\n { target: document, type: 'mouseup', listener: mouseUpHandler },\n { target: document, type: 'contextmenu', listener: contextmenuHandler },\n ])\n },\n onTouchStart: (event: TouchEvent) => {\n if (props.disabled) return\n dragging.value = false\n const touch = event.touches[0]\n cacheStartTouch = touch\n cacheTouch = touch\n bodyRect = bodyRef.value!.getBoundingClientRect()\n const spanDom = spanRef.value\n const eventList = [\n {\n target: document,\n type: 'touchmove',\n listener: documentTouchMoveHandler,\n options: { passive: false },\n },\n {\n target: spanDom,\n type: 'touchmove',\n listener: touchMoveHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchend',\n listener: touchEndHandler,\n options: { passive: true },\n },\n {\n target: spanDom,\n type: 'touchcancel',\n listener: touchEndHandler,\n options: { passive: true },\n },\n ]\n batchEvent(eventList)\n },\n }\n },\n})\n</script>\n\n<template>\n <span\n ref=\"spanRef\"\n :class=\"className\"\n :aria-grabbed=\"dragging\"\n :aria-hidden=\"true\"\n :data-scroll-top=\"top\"\n :data-height=\"height\"\n :data-row-key=\"rowKey\"\n :data-row-key-type=\"rowKeyType\"\n :innerHTML=\"dragIcon\"\n unselectable=\"on\"\n @mousedown.stop=\"onMousedown\"\n @touchstartPassive=\"onTouchStart\"\n >\n </span>\n</template>\n"],"names":["height","dragIcon","top","rowKey"],"mappings":"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"}
|