@kdcloudjs/kdesign 1.8.48 → 1.8.50

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/kdesign.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * @kdcloudjs/kdesign v1.8.48
3
+ * @kdcloudjs/kdesign v1.8.50
4
4
  *
5
5
  * Copyright 2020-present, Kingdee, Inc.
6
6
  * All rights reserved.
@@ -38090,7 +38090,8 @@ var Table = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_5__["forwardRef"]
38090
38090
  getPrefixCls = _useContext.getPrefixCls,
38091
38091
  prefixCls = _useContext.prefixCls,
38092
38092
  locale = _useContext.locale,
38093
- direction = _useContext.direction;
38093
+ direction = _useContext.direction,
38094
+ isMobile = _useContext.isMobile;
38094
38095
  var tablePrefixCls = getPrefixCls(prefixCls, customPrefixcls);
38095
38096
  var tableCls = classnames__WEBPACK_IMPORTED_MODULE_16___default()(tablePrefixCls, className);
38096
38097
  var localeText = locale.getCompLangMsg({
@@ -38102,7 +38103,8 @@ var Table = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_5__["forwardRef"]
38102
38103
  Radio: (components === null || components === void 0 ? void 0 : components.Radio) || _radio_index__WEBPACK_IMPORTED_MODULE_9__["default"]
38103
38104
  },
38104
38105
  localeText: localeText,
38105
- direction: direction
38106
+ direction: direction,
38107
+ isMobile: isMobile
38106
38108
  }).primaryKey(primaryKey === undefined ? '' : primaryKey).input({
38107
38109
  columns: columns,
38108
38110
  dataSource: dataSource
@@ -38182,6 +38184,11 @@ var Table = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_5__["forwardRef"]
38182
38184
  // @ts-ignore
38183
38185
  ,
38184
38186
  direction: direction
38187
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
38188
+ // @ts-ignore
38189
+ ,
38190
+ isMobile: isMobile,
38191
+ prefixCls: prefixCls
38185
38192
  }, others));
38186
38193
  });
38187
38194
  Table.displayName = 'Table';
@@ -38587,8 +38594,10 @@ var Tabs = function Tabs(props) {
38587
38594
  showScrollArrow = tabsProps.showScrollArrow,
38588
38595
  _tabsProps$effect = tabsProps.effect,
38589
38596
  effect = _tabsProps$effect === void 0 ? 'none' : _tabsProps$effect,
38597
+ tabsDropdownClassName = tabsProps.tabsDropdownClassName,
38590
38598
  children = tabsProps.children,
38591
- onChange = tabsProps.onChange;
38599
+ onChange = tabsProps.onChange,
38600
+ needPanelOpration = tabsProps.needPanelOpration;
38592
38601
  var tabsPrefixCls = getPrefixCls(prefixCls, 'tabs', customPrefixcls);
38593
38602
  var rtlCls = direction === 'rtl' ? "".concat(tabsPrefixCls, "-rtl") : null;
38594
38603
  var activeKey;
@@ -38631,6 +38640,13 @@ var Tabs = function Tabs(props) {
38631
38640
  var tabRef = Object(react__WEBPACK_IMPORTED_MODULE_9__["useRef"])(null);
38632
38641
  var tabListRef = Object(react__WEBPACK_IMPORTED_MODULE_9__["useRef"])(null);
38633
38642
  var carouselRef = Object(react__WEBPACK_IMPORTED_MODULE_9__["useRef"])(null);
38643
+ var touchStartX = Object(react__WEBPACK_IMPORTED_MODULE_9__["useRef"])(0);
38644
+ var lastListPosition = Object(react__WEBPACK_IMPORTED_MODULE_9__["useRef"])(0);
38645
+ var isDragging = Object(react__WEBPACK_IMPORTED_MODULE_9__["useRef"])(false);
38646
+ var _useState15 = Object(react__WEBPACK_IMPORTED_MODULE_9__["useState"])(false),
38647
+ _useState16 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_useState15, 2),
38648
+ triggerState = _useState16[0],
38649
+ setTriggerState = _useState16[1];
38634
38650
  var handleActive = function handleActive(id, e) {
38635
38651
  setCurActiveKey(id);
38636
38652
  onChange && onChange(id, e);
@@ -38642,6 +38658,30 @@ var Tabs = function Tabs(props) {
38642
38658
  var getTriggerKey = function getTriggerKey(key) {
38643
38659
  setTriggerKey(key);
38644
38660
  };
38661
+ var handleTouchStart = function handleTouchStart(e) {
38662
+ if (ListWidth <= boxWidth) return;
38663
+ touchStartX.current = e.touches[0].clientX;
38664
+ lastListPosition.current = ListPostion;
38665
+ isDragging.current = true;
38666
+ };
38667
+ var handleTouchMove = function handleTouchMove(e) {
38668
+ if (!isDragging.current || ListWidth <= boxWidth) return;
38669
+ var currentX = e.touches[0].clientX;
38670
+ var deltaX = currentX - touchStartX.current;
38671
+ var newPosition = lastListPosition.current + deltaX;
38672
+ var maxLeft = 0;
38673
+ var maxRight = boxWidth - ListWidth;
38674
+ if (newPosition > maxLeft) newPosition = maxLeft;
38675
+ if (newPosition < maxRight) newPosition = maxRight;
38676
+ setListPosition(newPosition);
38677
+ };
38678
+ var handleTouchEnd = function handleTouchEnd() {
38679
+ if (ListWidth <= boxWidth) return;
38680
+ isDragging.current = false;
38681
+ };
38682
+ var handleVisibleChange = function handleVisibleChange(visible) {
38683
+ setTriggerState(visible);
38684
+ };
38645
38685
  Object(react__WEBPACK_IMPORTED_MODULE_9__["useEffect"])(function () {
38646
38686
  setCurActiveKey(activeKey);
38647
38687
  }, [activeKey]);
@@ -38747,17 +38787,15 @@ var Tabs = function Tabs(props) {
38747
38787
  var _classNames4;
38748
38788
  if (ListWidth < boxWidth || !ListWidth || !boxWidth || ['left', 'right'].includes(position)) return null;
38749
38789
  var rightClasses = classnames__WEBPACK_IMPORTED_MODULE_10___default()("".concat(tabsPrefixCls, "-right-arrows"), (_classNames4 = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_classNames4, "".concat(tabsPrefixCls, "-right-arrows-").concat(type), type), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_classNames4, "".concat(tabsPrefixCls, "-right-arrows-noshadow"), ListWidth + ListPostion === boxWidth), _classNames4));
38750
- var menu = nodes.map(function (node) {
38751
- var tmp = {
38752
- label: '',
38753
- key: 0,
38754
- disabled: false
38755
- };
38756
- tmp.label = node.props.tab;
38757
- tmp.key = node.props.id;
38758
- tmp.disabled = node.props.disabled;
38759
- return tmp;
38760
- });
38790
+ var menu = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_dropdown__WEBPACK_IMPORTED_MODULE_20__["default"].Menu, {
38791
+ className: classnames__WEBPACK_IMPORTED_MODULE_10___default()(tabsDropdownClassName, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, "".concat(tabsPrefixCls, "-right-arrows-menu"), needPanelOpration))
38792
+ }, nodes.map(function (node) {
38793
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_dropdown__WEBPACK_IMPORTED_MODULE_20__["default"].Item, {
38794
+ key: node.props.id,
38795
+ disabled: node.props.disabled,
38796
+ className: node.props.id === curActiveKey ? "".concat(tabsPrefixCls, "-right-arrows-menu-active") : undefined
38797
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("span", null, node.props.tab));
38798
+ }));
38761
38799
  var handleRight = function handleRight() {
38762
38800
  if (ListPostion === boxWidth - ListWidth) return;
38763
38801
  var offset = ListPostion - boxWidth > boxWidth - ListWidth ? ListPostion - boxWidth : boxWidth - ListWidth;
@@ -38788,9 +38826,10 @@ var Tabs = function Tabs(props) {
38788
38826
  }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_dropdown__WEBPACK_IMPORTED_MODULE_20__["default"], {
38789
38827
  menu: menu,
38790
38828
  trigger: ['click'],
38791
- onItemClick: handleSelectItem
38829
+ onItemClick: handleSelectItem,
38830
+ onVisibleChange: handleVisibleChange
38792
38831
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("span", {
38793
- className: "".concat(tabsPrefixCls, "-more-btn")
38832
+ className: classnames__WEBPACK_IMPORTED_MODULE_10___default()("".concat(tabsPrefixCls, "-more-btn"), "".concat(tabsPrefixCls, "-trigger-").concat(triggerState))
38794
38833
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_icon__WEBPACK_IMPORTED_MODULE_18__["default"], {
38795
38834
  type: "arrow-down"
38796
38835
  }))));
@@ -38881,7 +38920,13 @@ var Tabs = function Tabs(props) {
38881
38920
  }, renderWrap);
38882
38921
  };
38883
38922
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({}, Object(_utils_omit__WEBPACK_IMPORTED_MODULE_14__["omit"])(tabsProps, ['activeKey', 'defaultActiveKey', 'showScrollArrow', 'noContainer']), {
38884
- className: tabNavsClasses
38923
+ className: tabNavsClasses,
38924
+ onTouchStart: handleTouchStart,
38925
+ onTouchMove: handleTouchMove,
38926
+ onTouchEnd: handleTouchEnd,
38927
+ style: {
38928
+ touchAction: 'pan-y'
38929
+ } // 防止滚动被浏览器阻止
38885
38930
  }), renderLeftOperations(), renderLeftArrow(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", {
38886
38931
  ref: tabRef,
38887
38932
  className: "".concat(tabsPrefixCls, "-tab-wrap")
@@ -48526,6 +48571,88 @@ var locale = {
48526
48571
 
48527
48572
  /***/ }),
48528
48573
 
48574
+ /***/ "./node_modules/@kdcloudjs/table/es/table/base/BlankComponent.js":
48575
+ /*!***********************************************************************!*\
48576
+ !*** ./node_modules/@kdcloudjs/table/es/table/base/BlankComponent.js ***!
48577
+ \***********************************************************************/
48578
+ /*! exports provided: TopBlank, BottomBlank */
48579
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
48580
+
48581
+ "use strict";
48582
+ __webpack_require__.r(__webpack_exports__);
48583
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopBlank", function() { return TopBlank; });
48584
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BottomBlank", function() { return BottomBlank; });
48585
+ /* harmony import */ var _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ "./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js");
48586
+ /* harmony import */ var _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
48587
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
48588
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
48589
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
48590
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
48591
+ /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles */ "./node_modules/@kdcloudjs/table/es/table/base/styles.js");
48592
+
48593
+
48594
+
48595
+
48596
+ var TopBlankComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["forwardRef"])(function (_ref, ref) {
48597
+ var initialHeight = _ref.height;
48598
+ var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(initialHeight),
48599
+ _useState2 = _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
48600
+ height = _useState2[0],
48601
+ setHeight = _useState2[1];
48602
+ Object(react__WEBPACK_IMPORTED_MODULE_1__["useImperativeHandle"])(ref, function () {
48603
+ return {
48604
+ updateHeight: function updateHeight(newHeight) {
48605
+ if (height !== newHeight) {
48606
+ setHeight(newHeight);
48607
+ }
48608
+ }
48609
+ };
48610
+ }, [height]);
48611
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
48612
+ style: {
48613
+ height: height
48614
+ }
48615
+ });
48616
+ });
48617
+ TopBlankComponent.displayName = 'TopBlank';
48618
+ var BottomBlankComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["forwardRef"])(function (_ref2, ref) {
48619
+ var initialHeight = _ref2.height,
48620
+ className = _ref2.className;
48621
+ var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(initialHeight),
48622
+ _useState4 = _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState3, 2),
48623
+ height = _useState4[0],
48624
+ setHeight = _useState4[1];
48625
+ Object(react__WEBPACK_IMPORTED_MODULE_1__["useImperativeHandle"])(ref, function () {
48626
+ return {
48627
+ updateHeight: function updateHeight(newHeight) {
48628
+ if (height !== newHeight) {
48629
+ setHeight(newHeight);
48630
+ }
48631
+ }
48632
+ };
48633
+ }, [height]);
48634
+ if (height <= 0) {
48635
+ return null;
48636
+ }
48637
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
48638
+ key: "bottom-blank",
48639
+ className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_styles__WEBPACK_IMPORTED_MODULE_3__["Classes"].virtualBlank, 'bottom', className),
48640
+ style: {
48641
+ height: height
48642
+ }
48643
+ });
48644
+ });
48645
+ BottomBlankComponent.displayName = 'BottomBlank';
48646
+ // 使用 memo 优化,只有当 height 或 className 改变时才重新渲染
48647
+ var TopBlank = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["memo"])(TopBlankComponent, function (prevProps, nextProps) {
48648
+ return prevProps.height === nextProps.height && prevProps.className === nextProps.className;
48649
+ });
48650
+ var BottomBlank = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["memo"])(BottomBlankComponent, function (prevProps, nextProps) {
48651
+ return prevProps.height === nextProps.height && prevProps.className === nextProps.className;
48652
+ });
48653
+
48654
+ /***/ }),
48655
+
48529
48656
  /***/ "./node_modules/@kdcloudjs/table/es/table/base/calculations.js":
48530
48657
  /*!*********************************************************************!*\
48531
48658
  !*** ./node_modules/@kdcloudjs/table/es/table/base/calculations.js ***!
@@ -49370,6 +49497,192 @@ function TableHeader(_ref2) {
49370
49497
 
49371
49498
  /***/ }),
49372
49499
 
49500
+ /***/ "./node_modules/@kdcloudjs/table/es/table/base/helpers/FastScrollManager.js":
49501
+ /*!**********************************************************************************!*\
49502
+ !*** ./node_modules/@kdcloudjs/table/es/table/base/helpers/FastScrollManager.js ***!
49503
+ \**********************************************************************************/
49504
+ /*! exports provided: FastScrollManager */
49505
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
49506
+
49507
+ "use strict";
49508
+ __webpack_require__.r(__webpack_exports__);
49509
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FastScrollManager", function() { return FastScrollManager; });
49510
+ /* harmony import */ var _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/extends */ "./node_modules/@babel/runtime-corejs3/helpers/extends.js");
49511
+ /* harmony import */ var _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
49512
+ /* harmony import */ var _babel_runtime_corejs3_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ "./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js");
49513
+ /* harmony import */ var _babel_runtime_corejs3_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);
49514
+ /* harmony import */ var _babel_runtime_corejs3_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ "./node_modules/@babel/runtime-corejs3/helpers/createClass.js");
49515
+ /* harmony import */ var _babel_runtime_corejs3_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);
49516
+
49517
+
49518
+
49519
+ /**
49520
+ * 快速滚动管理器
49521
+ * 抽取 BaseTable 中的快速滚动相关逻辑
49522
+ */
49523
+ var FastScrollManager = /*#__PURE__*/function () {
49524
+ function FastScrollManager(callbacks) {
49525
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
49526
+ _babel_runtime_corejs3_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, FastScrollManager);
49527
+ // 快速滚动状态
49528
+ this.state = {
49529
+ lastScrollTime: 0,
49530
+ scrollVelocity: 0,
49531
+ lastOffsetY: 0
49532
+ };
49533
+ // 快速滚动标志 - 作为私有属性立即更新
49534
+ this.isFastScrolling = false;
49535
+ this.callbacks = callbacks;
49536
+ // 合并默认配置
49537
+ this.config = _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({
49538
+ overscanSize: 100,
49539
+ velocityThreshold: 3,
49540
+ distanceMultiplier: 3,
49541
+ fastScrollEndDelayHigh: 200,
49542
+ fastScrollEndDelayNormal: 150,
49543
+ highVelocityThreshold: 5
49544
+ }, config);
49545
+ }
49546
+ /**
49547
+ * 检测是否接近底部(剩余滚动距离少于两屏)
49548
+ */
49549
+ _babel_runtime_corejs3_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(FastScrollManager, [{
49550
+ key: "isNearBottom",
49551
+ value: function isNearBottom(currentScrollTop, maxRenderHeight, totalScrollHeight) {
49552
+ var remainingScrollDistance = totalScrollHeight - currentScrollTop - maxRenderHeight;
49553
+ return remainingScrollDistance < maxRenderHeight;
49554
+ }
49555
+ /**
49556
+ * 处理滚动事件 - 检测和处理快速滚动
49557
+ */
49558
+ }, {
49559
+ key: "handleScrollEvent",
49560
+ value: function handleScrollEvent(sizeAndOffset, currentState, dataLength, totalScrollHeight) {
49561
+ var currentTime = performance.now();
49562
+ var deltaY = Math.abs(sizeAndOffset.offsetY - this.state.lastOffsetY);
49563
+ var deltaTime = currentTime - this.state.lastScrollTime;
49564
+ // 计算滚动速度 (像素/毫秒)
49565
+ this.state.scrollVelocity = deltaTime > 0 ? deltaY / deltaTime : 0;
49566
+ // 检测是否接近底部
49567
+ var isNearBottom = this.isNearBottom(sizeAndOffset.offsetY, sizeAndOffset.maxRenderHeight, totalScrollHeight);
49568
+ // 如果正在快速滚动但接近底部,提前结束快速滚动
49569
+ if (this.isFastScrolling && isNearBottom) {
49570
+ this.endFastScrolling(sizeAndOffset);
49571
+ return; // 让正常渲染逻辑接管
49572
+ }
49573
+ // 快速滚动判断条件:
49574
+ // 1. 滚动距离超过阈值 && 滚动速度超过阈值
49575
+ // 2. 当前未在快速滚动状态
49576
+ // 3. 未接近底部边界
49577
+ var isSignificantChange = deltaY > this.config.overscanSize * this.config.distanceMultiplier;
49578
+ var isHighVelocity = this.state.scrollVelocity > this.config.velocityThreshold;
49579
+ var shouldStartFastScroll = (isSignificantChange || isHighVelocity) && !this.isFastScrolling && !isNearBottom; // 接近底部时不启动快速滚动
49580
+ if (shouldStartFastScroll) {
49581
+ this.startFastScrolling(currentState, dataLength);
49582
+ }
49583
+ // 重置快速滚动结束定时器
49584
+ if (this.isFastScrolling) {
49585
+ this.resetFastScrollEndTimer(sizeAndOffset);
49586
+ }
49587
+ // 更新记录
49588
+ this.state.lastOffsetY = sizeAndOffset.offsetY;
49589
+ this.state.lastScrollTime = currentTime;
49590
+ }
49591
+ /**
49592
+ * 开始快速滚动
49593
+ */
49594
+ }, {
49595
+ key: "startFastScrolling",
49596
+ value: function startFastScrolling(currentState, dataLength) {
49597
+ this.isFastScrolling = true;
49598
+ // 获取当前渲染范围作为缓存
49599
+ var currentVerticalRange = this.callbacks.getCurrentRenderRange(currentState.offsetY, currentState.maxRenderHeight, dataLength);
49600
+ // 通知外部开始快速滚动
49601
+ this.callbacks.onFastScrollStart({
49602
+ offsetY: currentState.offsetY,
49603
+ maxRenderHeight: currentState.maxRenderHeight,
49604
+ maxRenderWidth: currentState.maxRenderWidth,
49605
+ verticalRenderRange: currentVerticalRange
49606
+ });
49607
+ }
49608
+ /**
49609
+ * 重置快速滚动结束定时器
49610
+ */
49611
+ }, {
49612
+ key: "resetFastScrollEndTimer",
49613
+ value: function resetFastScrollEndTimer(sizeAndOffset) {
49614
+ var _this = this;
49615
+ if (this.fastScrollEndTimer) {
49616
+ clearTimeout(this.fastScrollEndTimer);
49617
+ }
49618
+ var waitTime = this.state.scrollVelocity > this.config.highVelocityThreshold ? this.config.fastScrollEndDelayHigh : this.config.fastScrollEndDelayNormal;
49619
+ this.fastScrollEndTimer = window.setTimeout(function () {
49620
+ _this.endFastScrolling(sizeAndOffset);
49621
+ }, waitTime);
49622
+ }
49623
+ /**
49624
+ * 结束快速滚动
49625
+ */
49626
+ }, {
49627
+ key: "endFastScrolling",
49628
+ value: function endFastScrolling(sizeAndOffset) {
49629
+ this.isFastScrolling = false;
49630
+ this.fastScrollEndTimer = undefined;
49631
+ // 通知外部结束快速滚动
49632
+ this.callbacks.onFastScrollEnd(sizeAndOffset);
49633
+ }
49634
+ /**
49635
+ * 清理资源
49636
+ */
49637
+ }, {
49638
+ key: "cleanup",
49639
+ value: function cleanup() {
49640
+ if (this.fastScrollEndTimer) {
49641
+ clearTimeout(this.fastScrollEndTimer);
49642
+ }
49643
+ }
49644
+ /**
49645
+ * 获取当前是否处于快速滚动状态
49646
+ */
49647
+ }, {
49648
+ key: "getIsFastScrolling",
49649
+ value: function getIsFastScrolling() {
49650
+ return this.isFastScrolling;
49651
+ }
49652
+ /**
49653
+ * 获取当前滚动速度
49654
+ */
49655
+ }, {
49656
+ key: "getScrollVelocity",
49657
+ value: function getScrollVelocity() {
49658
+ return this.state.scrollVelocity;
49659
+ }
49660
+ /**
49661
+ * 清理资源
49662
+ */
49663
+ }, {
49664
+ key: "destroy",
49665
+ value: function destroy() {
49666
+ if (this.fastScrollEndTimer) {
49667
+ clearTimeout(this.fastScrollEndTimer);
49668
+ this.fastScrollEndTimer = undefined;
49669
+ }
49670
+ this.isFastScrolling = false;
49671
+ }
49672
+ /**
49673
+ * 获取当前配置
49674
+ */
49675
+ }, {
49676
+ key: "getConfig",
49677
+ value: function getConfig() {
49678
+ return _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({}, this.config);
49679
+ }
49680
+ }]);
49681
+ return FastScrollManager;
49682
+ }();
49683
+
49684
+ /***/ }),
49685
+
49373
49686
  /***/ "./node_modules/@kdcloudjs/table/es/table/base/helpers/SpanManager.js":
49374
49687
  /*!****************************************************************************!*\
49375
49688
  !*** ./node_modules/@kdcloudjs/table/es/table/base/helpers/SpanManager.js ***!
@@ -50611,10 +50924,10 @@ __webpack_require__.r(__webpack_exports__);
50611
50924
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ButtonCSS", function() { return ButtonCSS; });
50612
50925
  /* harmony import */ var _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/taggedTemplateLiteral */ "./node_modules/@babel/runtime-corejs3/helpers/taggedTemplateLiteral.js");
50613
50926
  /* harmony import */ var _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__);
50614
- /* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js");
50615
- /* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1__);
50616
- /* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js");
50617
- /* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_2__);
50927
+ /* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js");
50928
+ /* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1__);
50929
+ /* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js");
50930
+ /* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_2__);
50618
50931
  /* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
50619
50932
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ "./node_modules/@kdcloudjs/table/es/table/base/utils.js");
50620
50933
 
@@ -50775,7 +51088,11 @@ var defaultCSSVariables = {
50775
51088
  var variableConst = getCssVariableText(defaultCSSVariables);
50776
51089
  var notBorderedStyleMixin = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject3 || (_templateObject3 = _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0___default()(["\n --cell-border-vertical: none;\n --header-cell-border-vertical: none;\n"])));
50777
51090
  var borderedStyleMixin = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject4 || (_templateObject4 = _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0___default()(["\n //th\u9690\u85CF\u5217\u5BBD\u62D6\u62FD\u7684\u80CC\u666F\u8272\uFF0C\u4F7F\u7528th\u7684\u53F3\u8FB9\u6846\u4EE3\u66FF\n .", "::after{\n background-color: inherit;\n }\n"])), Classes.tableHeaderCellResize);
50778
- var StyledArtTableWrapper = styled_components__WEBPACK_IMPORTED_MODULE_3__["default"].div(_templateObject5 || (_templateObject5 = _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0___default()(["\n :root {\n ", "\n }\n ", "\n\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n cursor: default;\n color: var(--color);\n font-size: var(--font-size);\n line-height: var(--line-height);\n position: relative;\n\n // \u8868\u683C\u5916\u8FB9\u6846\u7531 art-table-wrapper \u63D0\u4F9B\uFF0C\u800C\u4E0D\u662F\u7531\u5355\u5143\u683C\u63D0\u4F9B\n &.use-outer-border {\n ", ";\n }\n\n // \u8868\u683C\u4E0D\u542F\u7528\u8FB9\u6846\u7EBF\uFF0C\u9690\u85CFth\u3001td\u7684\u5355\u5143\u683C\u5DE6\u53F3\u8FB9\u6846\u7EBF\n &:not(.", ") {\n ", "\n }\n &.", "{\n ", "\n }\n\n .no-scrollbar {\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .", " {\n overflow: auto;\n flex-shrink: 1;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n }\n\n .", " {\n overflow: hidden;\n background: var(--header-bgcolor);\n display: flex;\n flex-shrink: 0;\n border-bottom: var(--header-cell-border-horizontal);\n }\n\n .", " {\n display: flex;\n // justify-content: flex-start;\n align-items: center;\n height: inherit;\n }\n\n .", " {\n overflow-x:auto;\n flex-shrink: 0;\n flex-grow: 0;\n scrollbar-width: none; // \u517C\u5BB9\u706B\u72D0\n & {\n ::-webkit-scrollbar {\n display:none;\n }\n }\n }\n\n .", " {\n display: flex;\n flex: none;\n }\n .", "{\n flex-grow:1;\n }\n .", ", .", " {\n background: var(--bgcolor);\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n position:relative;\n &.empty {\n position: relative;\n }\n }\n\n .", " {\n position: relative;\n }\n .", ", .", " {\n .", "{\n background-color: #e6effb !important;\n }\n .", "{\n border-top: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-", ": 1px solid #0E5FD8 !important;\n }\n .", "{\n border-bottom: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-", ": 1px solid #0E5FD8 !important;\n }\n }\n\n .", " {\n user-select:none;\n }\n\n .", " {\n user-select:none;\n // .", " .", " >td{\n // cursor:move;\n // }\n\n // .", " .", " >td{\n // cursor:no-drop;\n // }\n \n }\n\n .", "{\n opacity: 0.5;\n }\n .", "{\n border: 1px solid var(--primary-color)\n }\n\n .", " td{\n border-top: 1px solid var(--primary-color) !important;\n border-bottom: 1px solid var(--primary-color) !important;\n \n }\n .", " td:first-child{\n border-", ": 1px solid var(--primary-color) !important;\n \n }\n .", " td:last-child{\n border-", ": 1px solid var(--primary-color) !important;\n \n }\n\n\n // .", " td{\n // border-top: 1px solid var(--primary-color) !important;\n // }\n\n .", " td{\n border-top: 1px solid var(--primary-color) !important;\n border-bottom: 1px solid var(--primary-color) !important;\n }\n\n .", " td:first-child{\n border-", ": 1px solid var(--primary-color) !important;\n }\n\n .", " td:last-child{\n border-", ": 1px solid var(--primary-color) !important;\n }\n\n // .", " td{\n // border-bottom: 1px solid var(--primary-color) !important;\n // }\n\n .", " {\n cursor:pointer;\n }\n\n\n &.sticky-header .", " {\n position: sticky;\n top: 0;\n z-index: ", ";\n }\n\n &.sticky-footer .", " {\n position: sticky;\n bottom: 0;\n z-index: ", ";\n }\n\n table {\n width: 0;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n display: table;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n flex-grow: 0;\n position:relative;\n }\n\n // \u5728 tr \u4E0A\u8BBE\u7F6E .no-hover \u53EF\u4EE5\u7981\u7528\u9F20\u6807\u60AC\u505C\u6548\u679C\n tr:not(.no-hover):hover > td {\n background: var(--hover-bgcolor);\n }\n // \u4F7F\u7528 js \u6DFB\u52A0\u60AC\u6D6E\u6548\u679C\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n // \u5728 tr \u8BBE\u7F6E highlight \u53EF\u4EE5\u4E3A\u5E95\u4E0B\u7684 td \u8BBE\u7F6E\u4E3A\u9AD8\u4EAE\u8272\n // \u800C\u8BBE\u7F6E .no-highlight \u7684\u8BDD\u5219\u53EF\u4EE5\u7981\u7528\u9AD8\u4EAE\u6548\u679C\uFF1B\n tr:not(.no-highlight).highlight > td {\n background: var(--highlight-bgcolor);\n }\n\n th {\n font-weight: normal;\n text-align: ", ";\n padding: var(--cell-padding);\n height: var(--header-row-height);\n color: var(--header-color);\n background: var(--header-bgcolor);\n border:1px solid transparent;\n border-", ": var(--header-cell-border-vertical);\n border-bottom: var(--header-cell-border-horizontal);\n position: relative;\n }\n\n th.resizeable{\n border-", ": var(--header-cell-border-vertical)\n }\n\n th.", " {\n border-", ": var(--header-cell-border-vertical);\n border-bottom: none;\n }\n\n tr.", " th {\n border-top: var(--header-cell-border-horizontal);\n }\n th.", " {\n border-", ": var(--header-cell-border-vertical);\n }\n\n td {\n padding: var(--cell-padding);\n background: var(--bgcolor);\n height: var(--row-height);\n border:1px solid transparent;\n border-", ": var(--cell-border-vertical);\n border-bottom: var(--cell-border-horizontal);\n word-break: break-all;\n }\n td.", " {\n border-", ": var(--cell-border-vertical);\n }\n tr.", " td {\n border-top: var(--cell-border-horizontal);\n }\n &.has-header tbody tr.", " td {\n border-top: none;\n }\n &.has-footer tbody tr.", " td {\n border-bottom: none;\n }\n\n .", ",\n .", " {\n z-index: ", ";\n }\n\n //#region \u9501\u5217\u9634\u5F71\n .", " {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: ", ";\n pointer-events: none;\n overflow: hidden;\n\n .", " {\n height: 100%;\n }\n\n .", " {\n margin-", ": ", "px;\n \n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-", ": var(--cell-border-vertical);\n }\n }\n\n .", " {\n margin-", ": ", "px;\n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-", ": var(--cell-border-vertical);\n }\n }\n }\n //#endregion\n\n //#region \u7A7A\u8868\u683C\u5C55\u73B0\n .", " {\n pointer-events: none;\n color: #99a3b3;\n font-size: 12px;\n text-align: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n\n .empty-image {\n width: 50px;\n height: 50px;\n }\n\n .empty-tips {\n margin-top: 16px;\n line-height: 1.5;\n }\n }\n //#endregion\n\n //#region sticky\u517C\u5BB9\n &.sticky-polyfill-wrapper{\n //\u9501\u5B9A\u5217\u517C\u5BB9 \u4EC5\u5728\u9501\u5B9A\u5217\u7684\u60C5\u51B5\u4E0B\u751F\u6548\n .", " {\n overflow-x: hidden;\n }\n .", ", .", " {\n position:relative;\n }\n .", " {\n overflow: hidden;\n display: flex;\n }\n .", " {\n position: relative;\n }\n\n .", " {\n display: flex;\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n }\n\n .", ", .", "{\n position: absolute;\n z-index: ", ";\n top: 0;\n }\n .", "{\n ", ":0;\n }\n .", "{\n rig", "ht:0;\n }\n\n .", "{\n .", "{\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ", ";\n }\n }\n\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n }\n //#endregion sticky\u517C\u5BB9\n\n //#region \u7C98\u6027\u6EDA\u52A8\u6761\n .", "{\n display:flex;\n background: var(--bgcolor);\n }\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n .", " {\n overflow-y: hidden;\n overflow-x: auto;\n z-index: ", ";\n flex-shrink: 1;\n flex-grow: 0;\n border-top: 1px solid var(--border-color);\n }\n\n .", " {\n // \u5FC5\u987B\u6709\u9AD8\u5EA6\u624D\u80FD\u51FA\u73B0\u6EDA\u52A8\u6761\n height: 1px;\n visibility: hidden;\n }\n //#endregion\n\n //#region \u52A0\u8F7D\u6837\u5F0F\n .", " {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n .", " {\n filter: none;\n width: 100%;\n height: 100%;\n overflow: hidden;//\u5217\u5168\u90E8\u56FA\u5B9A\u65F6\uFF0C\u5B58\u5728\u53CC\u6A2A\u5411\u6EDA\u52A8\u6761\n display: flex;\n position: relative;\n flex-direction: column;\n }\n\n .", " {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .", " {\n position: sticky;\n z-index: ", ";\n transform: translateY(-50%);\n }\n }\n //#endregion\n\n //#region \u8868\u683C\u8FC7\u6EE4\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n padding: 6px 4px;\n &:hover{\n background-color: #e5e5e5;\n }\n &:focus {\n outline: none\n }\n }\n //#endregion\n\n //#region \u8868\u683C\u6392\u5E8F\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n }\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n }\n //#endregion\n\n //#region \u6EDA\u52A8\u6761\u5360\u4F4D\n .", " {\n // visibility: hidden;\n background: var(--header-bgcolor);\n position:sticky;\n z-index:5;\n ", ":0px;\n flex-shrink: 0;\n }\n .", " .", " {\n border-top: var(--cell-border-horizontal);\n }\n //#endregion\n\n //#region \u62D6\u62FD\u5217\u5BBD\u5927\u5C0F\n .", "::after{\n background-color: var(--border-color);\n }\n //\u89E3\u51B3\u90E8\u5206\u6D4F\u89C8\u5668(chrome109)\u6700\u540E\u4E00\u4E2A\u5355\u5143\u683C\u7684\u5217\u5BBD\u62D6\u62FD\u533A\u57DF\u7EDD\u5BF9\u5B9A\u4F4D\u8D85\u51FA\u8868\u683C\uFF0C\u5BFC\u81F4\u8868\u683C\u7AD6\u5206\u5272\u7EBF\u65E0\u6CD5\u5BF9\u9F50\n .", " th.", " .", "{\n ", ": 0;\n width: 5px;\n &::after{\n ", ": 4px;\n }\n }\n"])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTableBordered, notBorderedStyleMixin, Classes.artTableBordered, borderedStyleMixin, Classes.artTable, Classes.tableHeader, Classes.tableHeaderCellContent, Classes.virtual, Classes.tableFooter, Classes.tableBody, Classes.tableBody, Classes.tableFooter, Classes.tableRow, Classes.tableBody, Classes.tableFooter, Classes.tableCellRangeSelected, Classes.tableCellRangeTop, Classes.tableCellRangeLeft, function (props) {
51091
+ var StyledArtTableWrapper = styled_components__WEBPACK_IMPORTED_MODULE_3__["default"].div(_templateObject5 || (_templateObject5 = _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0___default()(["\n ", "\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n cursor: default;\n color: var(--color);\n font-size: var(--font-size);\n line-height: var(--line-height);\n position: relative;\n\n // \u8868\u683C\u5916\u8FB9\u6846\u7531 art-table-wrapper \u63D0\u4F9B\uFF0C\u800C\u4E0D\u662F\u7531\u5355\u5143\u683C\u63D0\u4F9B\n &.use-outer-border {\n ", ";\n }\n\n // \u8868\u683C\u4E0D\u542F\u7528\u8FB9\u6846\u7EBF\uFF0C\u9690\u85CFth\u3001td\u7684\u5355\u5143\u683C\u5DE6\u53F3\u8FB9\u6846\u7EBF\n &:not(.", ") {\n ", "\n }\n &.", "{\n ", "\n }\n\n .no-scrollbar {\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .", " {\n overflow: auto;\n flex-shrink: 1;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n }\n\n .", " {\n overflow: hidden;\n background: var(--header-bgcolor);\n display: flex;\n flex-shrink: 0;\n border-bottom: var(--header-cell-border-horizontal);\n }\n\n .", " {\n display: flex;\n // justify-content: flex-start;\n align-items: center;\n height: inherit;\n }\n\n .", " {\n overflow-x:auto;\n flex-shrink: 0;\n flex-grow: 0;\n scrollbar-width: none; // \u517C\u5BB9\u706B\u72D0\n & {\n ::-webkit-scrollbar {\n display:none;\n }\n }\n }\n\n .", " {\n display: flex;\n flex: none;\n }\n .", "{\n flex-grow:1;\n }\n .", ", .", " {\n background: var(--bgcolor);\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n position:relative;\n &.empty {\n position: relative;\n }\n }\n\n .", " {\n position: relative;\n }\n .", ", .", " {\n .", "{\n background-color: #e6effb !important;\n }\n .", "{\n border-top: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-", ": 1px solid #0E5FD8 !important;\n }\n .", "{\n border-bottom: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-", ": 1px solid #0E5FD8 !important;\n }\n }\n\n .", " {\n user-select:none;\n }\n\n .", " {\n user-select:none;\n // .", " .", " >td{\n // cursor:move;\n // }\n\n // .", " .", " >td{\n // cursor:no-drop;\n // }\n \n }\n\n .", "{\n opacity: 0.5;\n }\n .", "{\n border: 1px solid var(--primary-color)\n }\n\n .", " td{\n border-top: 1px solid var(--primary-color) !important;\n border-bottom: 1px solid var(--primary-color) !important;\n \n }\n .", " td:first-child{\n border-", ": 1px solid var(--primary-color) !important;\n \n }\n .", " td:last-child{\n border-", ": 1px solid var(--primary-color) !important;\n \n }\n\n\n // .", " td{\n // border-top: 1px solid var(--primary-color) !important;\n // }\n\n .", " td{\n border-top: 1px solid var(--primary-color) !important;\n border-bottom: 1px solid var(--primary-color) !important;\n }\n\n .", " td:first-child{\n border-", ": 1px solid var(--primary-color) !important;\n }\n\n .", " td:last-child{\n border-", ": 1px solid var(--primary-color) !important;\n }\n\n // .", " td{\n // border-bottom: 1px solid var(--primary-color) !important;\n // }\n\n .", " {\n cursor:pointer;\n }\n\n\n &.sticky-header .", " {\n position: sticky;\n top: 0;\n z-index: ", ";\n }\n\n &.sticky-footer .", " {\n position: sticky;\n bottom: 0;\n z-index: ", ";\n }\n\n table {\n width: 0;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n display: table;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n flex-grow: 0;\n position:relative;\n }\n\n // \u5728 tr \u4E0A\u8BBE\u7F6E .no-hover \u53EF\u4EE5\u7981\u7528\u9F20\u6807\u60AC\u505C\u6548\u679C\n tr:not(.no-hover):hover > td {\n background: var(--hover-bgcolor);\n }\n // \u4F7F\u7528 js \u6DFB\u52A0\u60AC\u6D6E\u6548\u679C\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n // \u5728 tr \u8BBE\u7F6E highlight \u53EF\u4EE5\u4E3A\u5E95\u4E0B\u7684 td \u8BBE\u7F6E\u4E3A\u9AD8\u4EAE\u8272\n // \u800C\u8BBE\u7F6E .no-highlight \u7684\u8BDD\u5219\u53EF\u4EE5\u7981\u7528\u9AD8\u4EAE\u6548\u679C\uFF1B\n tr:not(.no-highlight).highlight > td {\n background: var(--highlight-bgcolor);\n }\n\n th {\n font-weight: normal;\n text-align: ", ";\n padding: var(--cell-padding);\n height: var(--header-row-height);\n color: var(--header-color);\n background: var(--header-bgcolor);\n border:1px solid transparent;\n border-", ": var(--header-cell-border-vertical);\n border-bottom: var(--header-cell-border-horizontal);\n position: relative;\n }\n\n th.resizeable{\n border-", ": var(--header-cell-border-vertical)\n }\n\n th.", " {\n border-", ": var(--header-cell-border-vertical);\n border-bottom: none;\n }\n\n tr.", " th {\n border-top: var(--header-cell-border-horizontal);\n }\n th.", " {\n border-", ": var(--header-cell-border-vertical);\n }\n\n td {\n padding: var(--cell-padding);\n background: var(--bgcolor);\n height: var(--row-height);\n border:1px solid transparent;\n border-", ": var(--cell-border-vertical);\n border-bottom: var(--cell-border-horizontal);\n word-break: break-all;\n }\n td.", " {\n border-", ": var(--cell-border-vertical);\n }\n tr.", " td {\n border-top: var(--cell-border-horizontal);\n }\n &.has-header tbody tr.", " td {\n border-top: none;\n }\n &.has-footer tbody tr.", " td {\n border-bottom: none;\n }\n\n .", ",\n .", " {\n z-index: ", ";\n }\n\n //#region \u9501\u5217\u9634\u5F71\n .", " {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: ", ";\n pointer-events: none;\n overflow: hidden;\n\n .", " {\n height: 100%;\n }\n\n .", " {\n margin-", ": ", "px;\n \n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-", ": var(--cell-border-vertical);\n }\n }\n\n .", " {\n margin-", ": ", "px;\n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-", ": var(--cell-border-vertical);\n }\n }\n }\n //#endregion\n\n //#region \u7A7A\u8868\u683C\u5C55\u73B0\n .", " {\n pointer-events: none;\n color: #99a3b3;\n font-size: 12px;\n text-align: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n\n .empty-image {\n width: 50px;\n height: 50px;\n }\n\n .empty-tips {\n margin-top: 16px;\n line-height: 1.5;\n }\n }\n //#endregion\n\n //#region sticky\u517C\u5BB9\n &.sticky-polyfill-wrapper{\n //\u9501\u5B9A\u5217\u517C\u5BB9 \u4EC5\u5728\u9501\u5B9A\u5217\u7684\u60C5\u51B5\u4E0B\u751F\u6548\n .", " {\n overflow-x: hidden;\n }\n .", ", .", " {\n position:relative;\n }\n .", " {\n overflow: hidden;\n display: flex;\n }\n .", " {\n position: relative;\n }\n\n .", " {\n display: flex;\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n }\n\n .", ", .", "{\n position: absolute;\n z-index: ", ";\n top: 0;\n }\n .", "{\n ", ":0;\n }\n .", "{\n rig", "ht:0;\n }\n\n .", "{\n .", "{\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ", ";\n }\n }\n\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n }\n //#endregion sticky\u517C\u5BB9\n\n //#region \u7C98\u6027\u6EDA\u52A8\u6761\n .", "{\n display:flex;\n background: var(--bgcolor);\n }\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n .", " {\n overflow-y: hidden;\n overflow-x: auto;\n z-index: ", ";\n flex-shrink: 1;\n flex-grow: 0;\n border-top: 1px solid var(--border-color);\n }\n\n .", " {\n // \u5FC5\u987B\u6709\u9AD8\u5EA6\u624D\u80FD\u51FA\u73B0\u6EDA\u52A8\u6761\n height: 1px;\n visibility: hidden;\n }\n //#endregion\n\n //#region \u52A0\u8F7D\u6837\u5F0F\n .", " {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n .", " {\n filter: none;\n width: 100%;\n height: 100%;\n overflow: hidden;//\u5217\u5168\u90E8\u56FA\u5B9A\u65F6\uFF0C\u5B58\u5728\u53CC\u6A2A\u5411\u6EDA\u52A8\u6761\n display: flex;\n position: relative;\n flex-direction: column;\n }\n\n .", " {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .", " {\n position: sticky;\n z-index: ", ";\n transform: translateY(-50%);\n }\n }\n //#endregion\n\n //#region \u8868\u683C\u8FC7\u6EE4\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n padding: 6px 4px;\n &:hover{\n background-color: #e5e5e5;\n }\n &:focus {\n outline: none\n }\n }\n //#endregion\n\n //#region \u8868\u683C\u6392\u5E8F\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n }\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n }\n //#endregion\n\n //#region \u6EDA\u52A8\u6761\u5360\u4F4D\n .", " {\n // visibility: hidden;\n background: var(--header-bgcolor);\n position:sticky;\n z-index:5;\n ", ":0px;\n flex-shrink: 0;\n }\n .", " .", " {\n border-top: var(--cell-border-horizontal);\n }\n //#endregion\n\n //#region \u62D6\u62FD\u5217\u5BBD\u5927\u5C0F\n .", "::after{\n background-color: var(--border-color);\n }\n //\u89E3\u51B3\u90E8\u5206\u6D4F\u89C8\u5668(chrome109)\u6700\u540E\u4E00\u4E2A\u5355\u5143\u683C\u7684\u5217\u5BBD\u62D6\u62FD\u533A\u57DF\u7EDD\u5BF9\u5B9A\u4F4D\u8D85\u51FA\u8868\u683C\uFF0C\u5BFC\u81F4\u8868\u683C\u7AD6\u5206\u5272\u7EBF\u65E0\u6CD5\u5BF9\u9F50\n .", " th.", " .", "{\n ", ": 0;\n width: 5px;\n &::after{\n ", ": 4px;\n }\n }\n"])), function (_ref) {
51092
+ var _context, _context2, _context3;
51093
+ var prefixCls = _ref.prefixCls;
51094
+ return prefixCls ? _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context2 = "&.".concat(prefixCls, "-table {:root {")).call(_context2, variableConst, "} ")).call(_context, variableConst, "}") : _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context3 = ":root {".concat(variableConst, "} ")).call(_context3, variableConst);
51095
+ }, outerBorderStyleMixin, Classes.artTableBordered, notBorderedStyleMixin, Classes.artTableBordered, borderedStyleMixin, Classes.artTable, Classes.tableHeader, Classes.tableHeaderCellContent, Classes.virtual, Classes.tableFooter, Classes.tableBody, Classes.tableBody, Classes.tableFooter, Classes.tableRow, Classes.tableBody, Classes.tableFooter, Classes.tableCellRangeSelected, Classes.tableCellRangeTop, Classes.tableCellRangeLeft, function (props) {
50779
51096
  return Object(_utils__WEBPACK_IMPORTED_MODULE_4__["swapRTLDirection"])(props.direction, 'left');
50780
51097
  }, Classes.tableCellRangeBottom, Classes.tableCellRangeRight, function (props) {
50781
51098
  return Object(_utils__WEBPACK_IMPORTED_MODULE_4__["swapRTLDirection"])(props.direction, 'right');
@@ -50822,9 +51139,9 @@ var StyledArtTableWrapper = styled_components__WEBPACK_IMPORTED_MODULE_3__["defa
50822
51139
  });
50823
51140
  var ButtonCSS = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject6 || (_templateObject6 = _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0___default()(["\n ", "\n .", "{\n color: var(--color);\n background:#ffffff;\n border:1px solid var(--strong-border-color);\n border-radius: 2px;\n cursor: pointer;\n &:hover{\n color: var(--primary-color);\n border:1px solid var(--primary-color);\n }\n }\n .", " {\n color:#ffffff;\n background-color: var(--primary-color);\n border:none;\n &:hover{\n color:#ffffff;\n background-color: var(--primary-color-level2);\n border:none;\n }\n }\n"])), variableConst, Classes.button, Classes.buttonPrimary);
50824
51141
  function getCssVariableText(obj) {
50825
- return _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1___default()(obj).reduce(function (acc, key) {
50826
- var _context;
50827
- acc += _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_2___default()(_context = "".concat(key, ":")).call(_context, obj[key], ";");
51142
+ return _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_2___default()(obj).reduce(function (acc, key) {
51143
+ var _context4;
51144
+ acc += _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context4 = "".concat(key, ":")).call(_context4, obj[key], ";");
50828
51145
  return acc;
50829
51146
  }, '');
50830
51147
  }
@@ -50883,13 +51200,15 @@ __webpack_require__.r(__webpack_exports__);
50883
51200
  /* harmony import */ var _helpers_getRichVisibleRectsStream__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./helpers/getRichVisibleRectsStream */ "./node_modules/@kdcloudjs/table/es/table/base/helpers/getRichVisibleRectsStream.js");
50884
51201
  /* harmony import */ var _helpers_rowHeightManager__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./helpers/rowHeightManager */ "./node_modules/@kdcloudjs/table/es/table/base/helpers/rowHeightManager.js");
50885
51202
  /* harmony import */ var _helpers_TableDOMUtils__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./helpers/TableDOMUtils */ "./node_modules/@kdcloudjs/table/es/table/base/helpers/TableDOMUtils.js");
50886
- /* harmony import */ var _html_table__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./html-table */ "./node_modules/@kdcloudjs/table/es/table/base/html-table.js");
50887
- /* harmony import */ var _loading__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./loading */ "./node_modules/@kdcloudjs/table/es/table/base/loading.js");
50888
- /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./styles */ "./node_modules/@kdcloudjs/table/es/table/base/styles.js");
50889
- /* harmony import */ var _globalStyleComponent__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./globalStyleComponent */ "./node_modules/@kdcloudjs/table/es/table/base/globalStyleComponent.js");
50890
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils */ "./node_modules/@kdcloudjs/table/es/table/base/utils.js");
50891
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../utils */ "./node_modules/@kdcloudjs/table/es/table/utils/index.js");
50892
- /* harmony import */ var _renderTemplates__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./renderTemplates */ "./node_modules/@kdcloudjs/table/es/table/base/renderTemplates.js");
51203
+ /* harmony import */ var _helpers_FastScrollManager__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./helpers/FastScrollManager */ "./node_modules/@kdcloudjs/table/es/table/base/helpers/FastScrollManager.js");
51204
+ /* harmony import */ var _html_table__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./html-table */ "./node_modules/@kdcloudjs/table/es/table/base/html-table.js");
51205
+ /* harmony import */ var _loading__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./loading */ "./node_modules/@kdcloudjs/table/es/table/base/loading.js");
51206
+ /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./styles */ "./node_modules/@kdcloudjs/table/es/table/base/styles.js");
51207
+ /* harmony import */ var _globalStyleComponent__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./globalStyleComponent */ "./node_modules/@kdcloudjs/table/es/table/base/globalStyleComponent.js");
51208
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./utils */ "./node_modules/@kdcloudjs/table/es/table/base/utils.js");
51209
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../utils */ "./node_modules/@kdcloudjs/table/es/table/utils/index.js");
51210
+ /* harmony import */ var _renderTemplates__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./renderTemplates */ "./node_modules/@kdcloudjs/table/es/table/base/renderTemplates.js");
51211
+ /* harmony import */ var _BlankComponent__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./BlankComponent */ "./node_modules/@kdcloudjs/table/es/table/base/BlankComponent.js");
50893
51212
 
50894
51213
 
50895
51214
 
@@ -50927,11 +51246,13 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_b
50927
51246
 
50928
51247
 
50929
51248
 
51249
+
51250
+
50930
51251
  var propsDotEmptyContentDeprecatedWarned = false;
50931
51252
  function warnPropsDotEmptyContentIsDeprecated() {
50932
51253
  if (!propsDotEmptyContentDeprecatedWarned) {
50933
51254
  propsDotEmptyContentDeprecatedWarned = true;
50934
- _utils__WEBPACK_IMPORTED_MODULE_30__["console"].warn('BaseTable props.emptyContent 已经过时,请使用 props.components.EmptyContent 来自定义数据为空时的表格表现');
51255
+ _utils__WEBPACK_IMPORTED_MODULE_31__["console"].warn('BaseTable props.emptyContent 已经过时,请使用 props.components.EmptyContent 来自定义数据为空时的表格表现');
50935
51256
  }
50936
51257
  }
50937
51258
  var BaseTable = /*#__PURE__*/function (_React$Component) {
@@ -50945,6 +51266,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
50945
51266
  _this.artTableWrapperRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createRef();
50946
51267
  _this.hasScrollY = false;
50947
51268
  _this.offsetY = 0;
51269
+ // Blank组件的引用,用于快速滚动时直接更新
51270
+ _this.topBlankRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createRef();
51271
+ _this.bottomBlankRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createRef();
50948
51272
  _this.handleRowMouseEnter = function (e) {
50949
51273
  var nodeList = _this.domHelper.getRowNodeListByEvent(e);
50950
51274
  nodeList && nodeList.forEach(function (node) {
@@ -50964,11 +51288,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
50964
51288
  getRowProps = _this$props.getRowProps,
50965
51289
  primaryKey = _this$props.primaryKey,
50966
51290
  isLoading = _this$props.isLoading,
50967
- emptyCellHeight = _this$props.emptyCellHeight,
50968
- footerDataSource = _this$props.footerDataSource;
50969
- var tableBodyClassName = classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].tableBody, _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].horizontalScrollContainer);
51291
+ emptyCellHeight = _this$props.emptyCellHeight;
51292
+ var tableBodyClassName = classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].tableBody, _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].horizontalScrollContainer);
50970
51293
  // 低版本Edge浏览器下也会出现双滚动条,这里设置overflow: 'hidden',先去掉edge的方向键控制滚动条的功能
50971
- var virtualStyle = _utils__WEBPACK_IMPORTED_MODULE_30__["browserType"].isIE || _utils__WEBPACK_IMPORTED_MODULE_30__["browserType"].isEdge ? {
51294
+ var virtualStyle = _utils__WEBPACK_IMPORTED_MODULE_31__["browserType"].isIE || _utils__WEBPACK_IMPORTED_MODULE_31__["browserType"].isEdge ? {
50972
51295
  overflow: 'hidden'
50973
51296
  } : {};
50974
51297
  if (dataSource.length === 0) {
@@ -50985,7 +51308,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
50985
51308
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
50986
51309
  className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(tableBodyClassName, 'empty')
50987
51310
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
50988
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].virtual,
51311
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].virtual,
50989
51312
  tabIndex: -1,
50990
51313
  style: virtualStyle
50991
51314
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_empty__WEBPACK_IMPORTED_MODULE_20__["EmptyHtmlTable"], {
@@ -51000,7 +51323,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51000
51323
  bottomBlank = _info$verticalRenderR.bottomBlank,
51001
51324
  topBlank = _info$verticalRenderR.topBlank,
51002
51325
  bottomIndex = _info$verticalRenderR.bottomIndex;
51003
- var renderBody = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_31__["default"])('body');
51326
+ var renderBody = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_32__["default"])('body');
51004
51327
  if (typeof renderBody === 'function') {
51005
51328
  return renderBody(info, _this.props, {
51006
51329
  rowProps: {
@@ -51012,16 +51335,13 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51012
51335
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51013
51336
  className: tableBodyClassName
51014
51337
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51015
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].virtual,
51338
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].virtual,
51016
51339
  tabIndex: -1,
51017
51340
  style: virtualStyle
51018
- }, topBlank > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51019
- key: "top-blank",
51020
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].virtualBlank, 'top'),
51021
- style: {
51022
- height: topBlank
51023
- }
51024
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_25__["HtmlTable"], {
51341
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_BlankComponent__WEBPACK_IMPORTED_MODULE_33__["TopBlank"], {
51342
+ ref: _this.topBlankRef,
51343
+ height: topBlank
51344
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_26__["HtmlTable"], {
51025
51345
  tbodyHtmlTag: "tbody",
51026
51346
  getRowProps: getRowProps,
51027
51347
  primaryKey: primaryKey,
@@ -51033,12 +51353,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51033
51353
  limit: bottomIndex,
51034
51354
  last: dataSource.length - 1
51035
51355
  }
51036
- }), bottomBlank > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51037
- key: "bottom-blank",
51038
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].virtualBlank, 'bottom'),
51039
- style: {
51040
- height: bottomBlank
51041
- }
51356
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_BlankComponent__WEBPACK_IMPORTED_MODULE_33__["BottomBlank"], {
51357
+ ref: _this.bottomBlankRef,
51358
+ height: bottomBlank
51042
51359
  })));
51043
51360
  };
51044
51361
  _this.state = {
@@ -51053,13 +51370,33 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51053
51370
  maxRenderHeight: 600,
51054
51371
  maxRenderWidth: 800
51055
51372
  };
51373
+ // 初始化快速滚动管理器
51374
+ var fastScrollCallbacks = {
51375
+ onFastScrollStart: function onFastScrollStart(renderData) {
51376
+ _this.setState({
51377
+ previousRenderData: renderData
51378
+ });
51379
+ },
51380
+ onFastScrollEnd: function onFastScrollEnd(scrollData) {
51381
+ _this.setState({
51382
+ previousRenderData: undefined,
51383
+ offsetY: scrollData.offsetY,
51384
+ maxRenderHeight: scrollData.maxRenderHeight,
51385
+ maxRenderWidth: scrollData.maxRenderWidth
51386
+ });
51387
+ },
51388
+ getCurrentRenderRange: function getCurrentRenderRange(offsetY, maxRenderHeight, dataLength) {
51389
+ return _this.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, dataLength);
51390
+ }
51391
+ };
51392
+ _this.fastScrollManager = new _helpers_FastScrollManager__WEBPACK_IMPORTED_MODULE_25__["FastScrollManager"](fastScrollCallbacks);
51056
51393
  return _this;
51057
51394
  }
51058
51395
  /** @deprecated BaseTable.getDoms() 已经过时,请勿调用 */
51059
51396
  _babel_runtime_corejs3_helpers_createClass__WEBPACK_IMPORTED_MODULE_8___default()(BaseTable, [{
51060
51397
  key: "getDoms",
51061
51398
  value: function getDoms() {
51062
- _utils__WEBPACK_IMPORTED_MODULE_30__["console"].warn('[kd-table] BaseTable.getDoms() 已经过时');
51399
+ _utils__WEBPACK_IMPORTED_MODULE_31__["console"].warn('[kd-table] BaseTable.getDoms() 已经过时');
51063
51400
  return this.domHelper;
51064
51401
  }
51065
51402
  /** 自定义滚动条宽度为table宽度,使滚动条滑块宽度相同 */
@@ -51131,7 +51468,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51131
51468
  var _this$props3 = this.props,
51132
51469
  stickyTop = _this$props3.stickyTop,
51133
51470
  hasHeader = _this$props3.hasHeader;
51134
- var renderHeader = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_31__["default"])('header');
51471
+ var renderHeader = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_32__["default"])('header');
51135
51472
  var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
51136
51473
  if (typeof renderHeader === 'function') {
51137
51474
  return renderHeader(info, this.props, {
@@ -51139,7 +51476,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51139
51476
  });
51140
51477
  }
51141
51478
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51142
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].tableHeader, 'no-scrollbar'),
51479
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].tableHeader, 'no-scrollbar'),
51143
51480
  style: {
51144
51481
  top: stickyTop === 0 ? undefined : stickyTop,
51145
51482
  display: hasHeader ? undefined : 'none'
@@ -51148,7 +51485,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51148
51485
  info: info,
51149
51486
  stickyRightOffset: stickyRightOffset
51150
51487
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51151
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].verticalScrollPlaceholder,
51488
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].verticalScrollPlaceholder,
51152
51489
  style: this.hasScrollY ? {
51153
51490
  width: this.getScrollBarWidth()
51154
51491
  } : undefined
@@ -51158,7 +51495,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51158
51495
  key: "updateOffsetX",
51159
51496
  value: function updateOffsetX(nextOffsetX) {
51160
51497
  if (this.lastInfo.useVirtual.horizontal) {
51161
- if (Math.abs(nextOffsetX - this.state.offsetX) >= _utils__WEBPACK_IMPORTED_MODULE_29__["OVERSCAN_SIZE"] / 2) {
51498
+ if (Math.abs(nextOffsetX - this.state.offsetX) >= _utils__WEBPACK_IMPORTED_MODULE_30__["OVERSCAN_SIZE"] / 2) {
51162
51499
  this.setState({
51163
51500
  offsetX: nextOffsetX
51164
51501
  });
@@ -51174,7 +51511,6 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51174
51511
  }, {
51175
51512
  key: "syncHorizontalScroll",
51176
51513
  value: function syncHorizontalScroll(x) {
51177
- var direction = this.props.direction;
51178
51514
  var _x = Math.abs(x);
51179
51515
  this.updateOffsetX(_x);
51180
51516
  var flat = _babel_runtime_corejs3_core_js_stable_instance_flat__WEBPACK_IMPORTED_MODULE_13___default()(this.lastInfo);
@@ -51202,11 +51538,18 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51202
51538
  }, {
51203
51539
  key: "getVerticalRenderRange",
51204
51540
  value: function getVerticalRenderRange(useVirtual) {
51205
- var dataSource = this.props.dataSource;
51541
+ var _this$props4 = this.props,
51542
+ dataSource = _this$props4.dataSource,
51543
+ isLowPerformance = _this$props4.isLowPerformance;
51206
51544
  var _this$state = this.state,
51207
51545
  offsetY = _this$state.offsetY,
51208
- maxRenderHeight = _this$state.maxRenderHeight;
51546
+ maxRenderHeight = _this$state.maxRenderHeight,
51547
+ previousRenderData = _this$state.previousRenderData;
51209
51548
  var rowCount = dataSource.length;
51549
+ // 只有在启用快速滚动时才使用 FastScrollManager 的判断
51550
+ if (isLowPerformance && this.fastScrollManager.getIsFastScrolling() && (previousRenderData === null || previousRenderData === void 0 ? void 0 : previousRenderData.verticalRenderRange)) {
51551
+ return previousRenderData.verticalRenderRange;
51552
+ }
51210
51553
  if (useVirtual.vertical) {
51211
51554
  return this.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, rowCount);
51212
51555
  } else {
@@ -51217,14 +51560,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51217
51560
  key: "renderTableFooter",
51218
51561
  value: function renderTableFooter(info) {
51219
51562
  // console.log('render footer')
51220
- var _this$props4 = this.props,
51221
- _this$props4$footerDa = _this$props4.footerDataSource,
51222
- footerDataSource = _this$props4$footerDa === void 0 ? [] : _this$props4$footerDa,
51223
- getRowProps = _this$props4.getRowProps,
51224
- primaryKey = _this$props4.primaryKey,
51225
- stickyBottom = _this$props4.stickyBottom;
51563
+ var _this$props5 = this.props,
51564
+ _this$props5$footerDa = _this$props5.footerDataSource,
51565
+ footerDataSource = _this$props5$footerDa === void 0 ? [] : _this$props5$footerDa,
51566
+ getRowProps = _this$props5.getRowProps,
51567
+ primaryKey = _this$props5.primaryKey,
51568
+ stickyBottom = _this$props5.stickyBottom;
51226
51569
  var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
51227
- var renderFooter = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_31__["default"])('footer');
51570
+ var renderFooter = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_32__["default"])('footer');
51228
51571
  if (typeof renderFooter === 'function') {
51229
51572
  return renderFooter(info, this.props, {
51230
51573
  rowProps: {
@@ -51235,11 +51578,11 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51235
51578
  });
51236
51579
  }
51237
51580
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51238
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].tableFooter, _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].horizontalScrollContainer),
51581
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].tableFooter, _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].horizontalScrollContainer),
51239
51582
  style: {
51240
51583
  bottom: stickyBottom === 0 ? undefined : stickyBottom
51241
51584
  }
51242
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_25__["HtmlTable"], {
51585
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_26__["HtmlTable"], {
51243
51586
  tbodyHtmlTag: "tfoot",
51244
51587
  data: footerDataSource,
51245
51588
  horizontalRenderInfo: info,
@@ -51253,7 +51596,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51253
51596
  limit: Infinity
51254
51597
  }
51255
51598
  }), footerDataSource.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51256
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].verticalScrollPlaceholder,
51599
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].verticalScrollPlaceholder,
51257
51600
  style: this.hasScrollY ? {
51258
51601
  width: this.getScrollBarWidth(),
51259
51602
  visibility: 'initial'
@@ -51266,49 +51609,49 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51266
51609
  var _style, _style2;
51267
51610
  var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
51268
51611
  // console.log('render LockShadows')
51269
- var leftLockShadowWidth = info.leftLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_27__["LOCK_SHADOW_PADDING"];
51270
- var rightLockShadownWidth = info.rightLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_27__["LOCK_SHADOW_PADDING"] + stickyRightOffset;
51612
+ var leftLockShadowWidth = info.leftLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_28__["LOCK_SHADOW_PADDING"];
51613
+ var rightLockShadownWidth = info.rightLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_28__["LOCK_SHADOW_PADDING"] + stickyRightOffset;
51271
51614
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_16___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51272
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].lockShadowMask,
51273
- style: (_style = {}, _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style, Object(_utils__WEBPACK_IMPORTED_MODULE_29__["swapRTLDirection"])(info.direction, 'left'), 0), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style, "width", leftLockShadowWidth), _style)
51615
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].lockShadowMask,
51616
+ style: (_style = {}, _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style, Object(_utils__WEBPACK_IMPORTED_MODULE_30__["swapRTLDirection"])(info.direction, 'left'), 0), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style, "width", leftLockShadowWidth), _style)
51274
51617
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51275
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].leftLockShadow)
51618
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].leftLockShadow)
51276
51619
  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51277
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].lockShadowMask,
51278
- style: (_style2 = {}, _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style2, Object(_utils__WEBPACK_IMPORTED_MODULE_29__["swapRTLDirection"])(info.direction, 'right'), 0), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style2, "width", rightLockShadownWidth), _style2)
51620
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].lockShadowMask,
51621
+ style: (_style2 = {}, _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style2, Object(_utils__WEBPACK_IMPORTED_MODULE_30__["swapRTLDirection"])(info.direction, 'right'), 0), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_style2, "width", rightLockShadownWidth), _style2)
51279
51622
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51280
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].rightLockShadow)
51623
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].rightLockShadow)
51281
51624
  })));
51282
51625
  }
51283
51626
  }, {
51284
51627
  key: "renderStickyScroll",
51285
51628
  value: function renderStickyScroll(info) {
51286
51629
  // console.log('render stickyscroll')
51287
- var _this$props5 = this.props,
51288
- hasStickyScroll = _this$props5.hasStickyScroll,
51289
- stickyBottom = _this$props5.stickyBottom;
51630
+ var _this$props6 = this.props,
51631
+ hasStickyScroll = _this$props6.hasStickyScroll,
51632
+ stickyBottom = _this$props6.stickyBottom;
51290
51633
  var hasScroll = this.state.hasScroll;
51291
51634
  var isScroll = hasStickyScroll && hasScroll;
51292
51635
  var stickyScrollContainerStyle = this.getStickyScrollContainerStyle();
51293
51636
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51294
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].horizontalScrollContainer, _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].horizontalStickyScrollContainer),
51637
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].horizontalScrollContainer, _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].horizontalStickyScrollContainer),
51295
51638
  style: stickyScrollContainerStyle
51296
51639
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51297
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].horizontalScrollLeftSpacer),
51640
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].horizontalScrollLeftSpacer),
51298
51641
  style: {
51299
51642
  width: info.leftLockTotalWidth,
51300
51643
  display: isScroll ? 'block' : 'none'
51301
51644
  }
51302
51645
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51303
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].stickyScroll),
51646
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].stickyScroll),
51304
51647
  style: {
51305
51648
  display: isScroll ? 'block' : 'none',
51306
51649
  bottom: stickyBottom
51307
51650
  }
51308
51651
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51309
- className: _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].stickyScrollItem
51652
+ className: _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].stickyScrollItem
51310
51653
  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", {
51311
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].horizontalScrollRightSpacer),
51654
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].horizontalScrollRightSpacer),
51312
51655
  style: {
51313
51656
  width: info.rightLockTotalWidth,
51314
51657
  display: isScroll ? 'block' : 'none'
@@ -51318,14 +51661,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51318
51661
  }, {
51319
51662
  key: "getScrollBarWidth",
51320
51663
  value: function getScrollBarWidth() {
51321
- return this.props.scrollbarWidth || Object(_utils__WEBPACK_IMPORTED_MODULE_29__["getScrollbarSize"])().width;
51664
+ return this.props.scrollbarWidth || Object(_utils__WEBPACK_IMPORTED_MODULE_30__["getScrollbarSize"])().width;
51322
51665
  }
51323
51666
  }, {
51324
51667
  key: "getStickyScrollContainerStyle",
51325
51668
  value: function getStickyScrollContainerStyle() {
51326
- var _this$props6 = this.props,
51327
- hasStickyScroll = _this$props6.hasStickyScroll,
51328
- stickyScrollHeight = _this$props6.stickyScrollHeight;
51669
+ var _this$props7 = this.props,
51670
+ hasStickyScroll = _this$props7.hasStickyScroll,
51671
+ stickyScrollHeight = _this$props7.stickyScrollHeight;
51329
51672
  var hasScroll = this.state.hasScroll;
51330
51673
  var isScroll = hasStickyScroll && hasScroll;
51331
51674
  var height = stickyScrollHeight === 'auto' ? this.getScrollBarWidth() : stickyScrollHeight;
@@ -51343,23 +51686,24 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51343
51686
  // console.log('render table')
51344
51687
  var info = Object(_calculations__WEBPACK_IMPORTED_MODULE_19__["calculateRenderInfo"])(this);
51345
51688
  this.lastInfo = info;
51346
- var _this$props7 = this.props,
51347
- dataSource = _this$props7.dataSource,
51348
- className = _this$props7.className,
51349
- style = _this$props7.style,
51350
- hasHeader = _this$props7.hasHeader,
51351
- useOuterBorder = _this$props7.useOuterBorder,
51352
- isStickyHead = _this$props7.isStickyHead,
51353
- isStickyHeader = _this$props7.isStickyHeader,
51354
- isStickyFooter = _this$props7.isStickyFooter,
51355
- isLoading = _this$props7.isLoading,
51356
- getTableProps = _this$props7.getTableProps,
51357
- footerDataSource = _this$props7.footerDataSource,
51358
- components = _this$props7.components,
51359
- bordered = _this$props7.bordered,
51360
- direction = _this$props7.direction;
51689
+ var _this$props8 = this.props,
51690
+ dataSource = _this$props8.dataSource,
51691
+ className = _this$props8.className,
51692
+ style = _this$props8.style,
51693
+ hasHeader = _this$props8.hasHeader,
51694
+ useOuterBorder = _this$props8.useOuterBorder,
51695
+ isStickyHead = _this$props8.isStickyHead,
51696
+ isStickyHeader = _this$props8.isStickyHeader,
51697
+ isStickyFooter = _this$props8.isStickyFooter,
51698
+ isLoading = _this$props8.isLoading,
51699
+ getTableProps = _this$props8.getTableProps,
51700
+ footerDataSource = _this$props8.footerDataSource,
51701
+ components = _this$props8.components,
51702
+ bordered = _this$props8.bordered,
51703
+ direction = _this$props8.direction,
51704
+ prefixCls = _this$props8.prefixCls;
51361
51705
  info.direction = direction;
51362
- var artTableWrapperClassName = classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].artTableWrapper, (_cx = {
51706
+ var artTableWrapperClassName = classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].artTableWrapper, (_cx = {
51363
51707
  'use-outer-border': useOuterBorder,
51364
51708
  empty: dataSource.length === 0,
51365
51709
  lock: info.hasLockColumn,
@@ -51367,24 +51711,25 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51367
51711
  'sticky-header': isStickyHeader !== null && isStickyHeader !== void 0 ? isStickyHeader : isStickyHead,
51368
51712
  'has-footer': footerDataSource.length > 0,
51369
51713
  'sticky-footer': isStickyFooter
51370
- }, _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].artTableBordered, bordered), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, 'ie-polyfill-wrapper', _utils__WEBPACK_IMPORTED_MODULE_30__["browserType"].isIE), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, 'sticky-polyfill-wrapper', Object(_utils__WEBPACK_IMPORTED_MODULE_30__["isStickyUIDegrade"])()), _cx), className);
51714
+ }, _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].artTableBordered, bordered), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, 'ie-polyfill-wrapper', _utils__WEBPACK_IMPORTED_MODULE_31__["browserType"].isIE), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, 'sticky-polyfill-wrapper', Object(_utils__WEBPACK_IMPORTED_MODULE_31__["isStickyUIDegrade"])()), _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, "".concat(prefixCls, "-table"), prefixCls), _cx), className);
51371
51715
  var artTableWrapperProps = _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()({
51372
51716
  className: artTableWrapperClassName,
51373
51717
  style: _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_5___default()({}, style), {
51374
51718
  direction: direction
51375
51719
  })
51376
- }, _utils__WEBPACK_IMPORTED_MODULE_29__["STYLED_REF_PROP"], this.artTableWrapperRef);
51720
+ }, _utils__WEBPACK_IMPORTED_MODULE_30__["STYLED_REF_PROP"], this.artTableWrapperRef);
51377
51721
  var tableProps = getTableProps() || {};
51378
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_16___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_globalStyleComponent__WEBPACK_IMPORTED_MODULE_28__["default"], {
51722
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_16___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_globalStyleComponent__WEBPACK_IMPORTED_MODULE_29__["default"], {
51379
51723
  direction: info.direction
51380
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_styles__WEBPACK_IMPORTED_MODULE_27__["StyledArtTableWrapper"], _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_5___default()({}, artTableWrapperProps, {
51381
- direction: info.direction
51382
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_loading__WEBPACK_IMPORTED_MODULE_26__["default"], {
51724
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_styles__WEBPACK_IMPORTED_MODULE_28__["StyledArtTableWrapper"], _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_5___default()({}, artTableWrapperProps, {
51725
+ direction: info.direction,
51726
+ prefixCls: this.props.prefixCls
51727
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement(_loading__WEBPACK_IMPORTED_MODULE_27__["default"], {
51383
51728
  visible: isLoading,
51384
51729
  LoadingIcon: components.LoadingIcon,
51385
51730
  LoadingContentWrapper: components.LoadingContentWrapper
51386
51731
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_16___default.a.createElement("div", _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_5___default()({}, tableProps, {
51387
- className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_27__["Classes"].artTable, tableProps.className)
51732
+ className: classnames__WEBPACK_IMPORTED_MODULE_15___default()(_styles__WEBPACK_IMPORTED_MODULE_28__["Classes"].artTable, tableProps.className)
51388
51733
  }), this.renderTableHeader(info), this.renderTableBody(info), this.renderTableFooter(info), this.renderLockShadows(info)), this.renderStickyScroll(info))));
51389
51734
  }
51390
51735
  }, {
@@ -51398,11 +51743,11 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51398
51743
  this.initSubscriptions();
51399
51744
  this.didMountOrUpdate();
51400
51745
  // console.log('did mount end')
51401
- var _this$props8 = this.props,
51402
- cssVariables = _this$props8.cssVariables,
51403
- enableCSSVariables = _this$props8.enableCSSVariables,
51404
- bordered = _this$props8.bordered;
51405
- Object(_utils__WEBPACK_IMPORTED_MODULE_29__["cssPolifill"])({
51746
+ var _this$props9 = this.props,
51747
+ cssVariables = _this$props9.cssVariables,
51748
+ enableCSSVariables = _this$props9.enableCSSVariables,
51749
+ bordered = _this$props9.bordered;
51750
+ Object(_utils__WEBPACK_IMPORTED_MODULE_30__["cssPolifill"])({
51406
51751
  variables: cssVariables || {},
51407
51752
  enableCSSVariables: enableCSSVariables,
51408
51753
  bordered: bordered
@@ -51416,12 +51761,12 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51416
51761
  value: function componentDidUpdate(prevProps, prevState) {
51417
51762
  var _a;
51418
51763
  // console.log('did update start')
51419
- var _this$props9 = this.props,
51420
- cssVariables = _this$props9.cssVariables,
51421
- enableCSSVariables = _this$props9.enableCSSVariables,
51422
- bordered = _this$props9.bordered;
51423
- if (!Object(_utils__WEBPACK_IMPORTED_MODULE_29__["shallowEqual"])(prevProps === null || prevProps === void 0 ? void 0 : prevProps.cssVariables, (_a = this.props) === null || _a === void 0 ? void 0 : _a.cssVariables)) {
51424
- Object(_utils__WEBPACK_IMPORTED_MODULE_29__["cssPolifill"])({
51764
+ var _this$props10 = this.props,
51765
+ cssVariables = _this$props10.cssVariables,
51766
+ enableCSSVariables = _this$props10.enableCSSVariables,
51767
+ bordered = _this$props10.bordered;
51768
+ if (!Object(_utils__WEBPACK_IMPORTED_MODULE_30__["shallowEqual"])(prevProps === null || prevProps === void 0 ? void 0 : prevProps.cssVariables, (_a = this.props) === null || _a === void 0 ? void 0 : _a.cssVariables)) {
51769
+ Object(_utils__WEBPACK_IMPORTED_MODULE_30__["cssPolifill"])({
51425
51770
  variables: cssVariables || {},
51426
51771
  enableCSSVariables: enableCSSVariables,
51427
51772
  bordered: bordered
@@ -51435,10 +51780,13 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51435
51780
  }, {
51436
51781
  key: "didMountOrUpdate",
51437
51782
  value: function didMountOrUpdate(prevProps, prevState) {
51438
- this.syncHorizontalScrollFromTableBody();
51439
- this.updateStickyScroll();
51440
- this.adjustNeedRenderLock();
51441
- this.updateRowHeightManager();
51783
+ var _this2 = this;
51784
+ window.requestAnimationFrame(function () {
51785
+ _this2.syncHorizontalScrollFromTableBody();
51786
+ _this2.updateStickyScroll();
51787
+ _this2.adjustNeedRenderLock();
51788
+ _this2.updateRowHeightManager();
51789
+ });
51442
51790
  this.updateScrollLeftWhenLayoutChanged(prevProps, prevState);
51443
51791
  }
51444
51792
  }, {
@@ -51453,38 +51801,38 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51453
51801
  var prevHasFooter = prevProps.footerDataSource.length > 0;
51454
51802
  var currentHasFooter = this.props.footerDataSource.length > 0;
51455
51803
  if (!prevHasFooter && currentHasFooter) {
51456
- Object(_utils__WEBPACK_IMPORTED_MODULE_29__["getTableScrollFooterDOM"])(this.domHelper).scrollLeft = this.domHelper.virtual.scrollLeft;
51804
+ Object(_utils__WEBPACK_IMPORTED_MODULE_30__["getTableScrollFooterDOM"])(this.domHelper).scrollLeft = this.domHelper.virtual.scrollLeft;
51457
51805
  }
51458
51806
  }
51459
51807
  }
51460
51808
  }, {
51461
51809
  key: "initSubscriptions",
51462
51810
  value: function initSubscriptions() {
51463
- var _this2 = this;
51811
+ var _this3 = this;
51464
51812
  var _this$domHelper2 = this.domHelper,
51465
51813
  virtual = _this$domHelper2.virtual,
51466
51814
  stickyScroll = _this$domHelper2.stickyScroll;
51467
- this.rootSubscription.add(_utils__WEBPACK_IMPORTED_MODULE_29__["throttledWindowResize$"].subscribe(function () {
51468
- _this2.updateStickyScroll();
51469
- _this2.adjustNeedRenderLock();
51815
+ this.rootSubscription.add(_utils__WEBPACK_IMPORTED_MODULE_30__["throttledWindowResize$"].subscribe(function () {
51816
+ _this3.updateStickyScroll();
51817
+ _this3.adjustNeedRenderLock();
51470
51818
  }));
51471
51819
  this.resizeSubject.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["debounceTime"](100)).subscribe(function () {
51472
51820
  var _a, _b;
51473
- (_b = (_a = _this2.props).setTableWidth) === null || _b === void 0 ? void 0 : _b.call(_a, _this2.domHelper.tableBody.clientWidth);
51821
+ (_b = (_a = _this3.props).setTableWidth) === null || _b === void 0 ? void 0 : _b.call(_a, _this3.domHelper.tableBody.clientWidth);
51474
51822
  });
51475
51823
  var handleTableWrapperResize = function handleTableWrapperResize() {
51476
- _this2.resizeSubject.next();
51824
+ _this3.resizeSubject.next();
51477
51825
  };
51478
- this.resizeObserver = Object(_utils__WEBPACK_IMPORTED_MODULE_29__["addResizeObserver"])(this.domHelper.artTableWrapper, handleTableWrapperResize);
51826
+ this.resizeObserver = Object(_utils__WEBPACK_IMPORTED_MODULE_30__["addResizeObserver"])(this.domHelper.artTableWrapper, handleTableWrapperResize);
51479
51827
  // 滚动同步
51480
- this.rootSubscription.add(Object(_utils__WEBPACK_IMPORTED_MODULE_29__["syncScrollLeft"])([Object(_utils__WEBPACK_IMPORTED_MODULE_29__["getTableScrollHeaderDOM"])(this.domHelper), virtual, Object(_utils__WEBPACK_IMPORTED_MODULE_29__["getTableScrollFooterDOM"])(this.domHelper), stickyScroll], function (scrollLeft) {
51481
- _this2.syncHorizontalScroll(scrollLeft);
51828
+ this.rootSubscription.add(Object(_utils__WEBPACK_IMPORTED_MODULE_30__["syncScrollLeft"])([Object(_utils__WEBPACK_IMPORTED_MODULE_30__["getTableScrollHeaderDOM"])(this.domHelper), virtual, Object(_utils__WEBPACK_IMPORTED_MODULE_30__["getTableScrollFooterDOM"])(this.domHelper), stickyScroll], function (scrollLeft) {
51829
+ _this3.syncHorizontalScroll(scrollLeft);
51482
51830
  }));
51483
51831
  var richVisibleRects$ = Object(_helpers_getRichVisibleRectsStream__WEBPACK_IMPORTED_MODULE_22__["getRichVisibleRectsStream"])(this.domHelper.virtual, this.props$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["skip"](1), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["mapTo"]('structure-may-change')), this.props.virtualDebugLabel).pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["shareReplay"]());
51484
51832
  // 每当可见部分发生变化的时候,调整 loading icon 的未知(如果 loading icon 存在的话)
51485
51833
  this.rootSubscription.add(Object(rxjs__WEBPACK_IMPORTED_MODULE_17__["combineLatest"])([richVisibleRects$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["map"](function (p) {
51486
51834
  return p.clipRect;
51487
- }), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["distinctUntilChanged"](_utils__WEBPACK_IMPORTED_MODULE_29__["shallowEqual"])), this.props$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["startWith"](null), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["pairwise"](), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["filter"](function (_ref) {
51835
+ }), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["distinctUntilChanged"](_utils__WEBPACK_IMPORTED_MODULE_30__["shallowEqual"])), this.props$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["startWith"](null), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["pairwise"](), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["filter"](function (_ref) {
51488
51836
  var _ref2 = _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_4___default()(_ref, 2),
51489
51837
  prevProps = _ref2[0],
51490
51838
  props = _ref2[1];
@@ -51492,7 +51840,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51492
51840
  }))]).subscribe(function (_ref3) {
51493
51841
  var _ref4 = _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_4___default()(_ref3, 1),
51494
51842
  clipRect = _ref4[0];
51495
- var loadingIndicator = _this2.domHelper.getLoadingIndicator();
51843
+ var loadingIndicator = _this3.domHelper.getLoadingIndicator();
51496
51844
  if (!loadingIndicator) {
51497
51845
  return;
51498
51846
  }
@@ -51503,9 +51851,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51503
51851
  }));
51504
51852
  // 每当可见部分发生变化的时候,如果开启了虚拟滚动,则重新触发 render
51505
51853
  this.rootSubscription.add(richVisibleRects$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["filter"](function () {
51506
- var _this2$lastInfo$useVi = _this2.lastInfo.useVirtual,
51507
- horizontal = _this2$lastInfo$useVi.horizontal,
51508
- vertical = _this2$lastInfo$useVi.vertical;
51854
+ var _this3$lastInfo$useVi = _this3.lastInfo.useVirtual,
51855
+ horizontal = _this3$lastInfo$useVi.horizontal,
51856
+ vertical = _this3$lastInfo$useVi.vertical;
51509
51857
  return horizontal || vertical;
51510
51858
  }), rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["map"](function (_ref5) {
51511
51859
  var clipRect = _ref5.clipRect,
@@ -51521,9 +51869,30 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51521
51869
  return true;
51522
51870
  }
51523
51871
  // 因为 overscan 的存在,滚动较小的距离时不需要触发组件重渲染
51524
- return Math.abs(x.maxRenderWidth - y.maxRenderWidth) < _utils__WEBPACK_IMPORTED_MODULE_29__["OVERSCAN_SIZE"] / 2 && Math.abs(x.maxRenderHeight - y.maxRenderHeight) < _utils__WEBPACK_IMPORTED_MODULE_29__["OVERSCAN_SIZE"] / 2 && Math.abs(x.offsetY - y.offsetY) < _utils__WEBPACK_IMPORTED_MODULE_29__["OVERSCAN_SIZE"] / 2;
51872
+ return Math.abs(x.maxRenderWidth - y.maxRenderWidth) < _utils__WEBPACK_IMPORTED_MODULE_30__["OVERSCAN_SIZE"] / 2 && Math.abs(x.maxRenderHeight - y.maxRenderHeight) < _utils__WEBPACK_IMPORTED_MODULE_30__["OVERSCAN_SIZE"] / 2 && Math.abs(x.offsetY - y.offsetY) < _utils__WEBPACK_IMPORTED_MODULE_30__["OVERSCAN_SIZE"] / 2;
51873
+ }),
51874
+ // 快速滚动检测和处理
51875
+ rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["tap"](function (sizeAndOffset) {
51876
+ // 只有在启用快速滚动时才使用 FastScrollManager 处理滚动事件
51877
+ if (_this3.props.isLowPerformance) {
51878
+ _this3.fastScrollManager.handleScrollEvent(sizeAndOffset, {
51879
+ offsetY: _this3.state.offsetY,
51880
+ maxRenderHeight: _this3.state.maxRenderHeight,
51881
+ maxRenderWidth: _this3.state.maxRenderWidth
51882
+ }, _this3.props.dataSource.length, _this3.domHelper.virtual.scrollHeight);
51883
+ }
51525
51884
  })).subscribe(function (sizeAndOffset) {
51526
- _this2.setState(sizeAndOffset);
51885
+ var _a, _b;
51886
+ // 正常滚动时也需要实时更新 blank 高度,确保缓慢滚动时的视觉连续性
51887
+ var currentRange = _this3.rowHeightManager.getRenderRange(sizeAndOffset.offsetY, sizeAndOffset.maxRenderHeight, _this3.props.dataSource.length);
51888
+ // 直接更新 DOM,避免等待下次渲染
51889
+ (_a = _this3.topBlankRef.current) === null || _a === void 0 ? void 0 : _a.updateHeight(currentRange.topBlank);
51890
+ (_b = _this3.bottomBlankRef.current) === null || _b === void 0 ? void 0 : _b.updateHeight(currentRange.bottomBlank);
51891
+ // 只有在启用快速滚动时才检查快速滚动状态
51892
+ if (_this3.props.isLowPerformance && _this3.fastScrollManager.getIsFastScrolling()) {
51893
+ return;
51894
+ }
51895
+ _this3.setState(sizeAndOffset);
51527
51896
  }));
51528
51897
  this.rootSubscription.add(richVisibleRects$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["map"](function (_ref6) {
51529
51898
  var clipRect = _ref6.clipRect,
@@ -51541,13 +51910,13 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51541
51910
  var _a;
51542
51911
  var offsetY = sizeAndOffset.offsetY,
51543
51912
  maxRenderHeight = sizeAndOffset.maxRenderHeight;
51544
- var scrollDirection = offsetY - _this2.offsetY >= 0 ? 'down' : 'up';
51545
- _this2.offsetY = offsetY;
51546
- var rowCount = _this2.props.dataSource.length;
51547
- var vertical = _this2.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, rowCount);
51913
+ var scrollDirection = offsetY - _this3.offsetY >= 0 ? 'down' : 'up';
51914
+ _this3.offsetY = offsetY;
51915
+ var rowCount = _this3.props.dataSource.length;
51916
+ var vertical = _this3.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, rowCount);
51548
51917
  var topIndex = vertical.topIndex,
51549
51918
  bottomIndex = vertical.bottomIndex;
51550
- var blockSize = ((_a = _this2.props.scrollLoad) === null || _a === void 0 ? void 0 : _a.blockSize) || 200;
51919
+ var blockSize = ((_a = _this3.props.scrollLoad) === null || _a === void 0 ? void 0 : _a.blockSize) || 200;
51551
51920
  var topBlockStartIndex = Math.floor(Math.max(topIndex - 1, 0) / blockSize) * blockSize;
51552
51921
  var bottomBlockStartIndex = Math.floor((bottomIndex + 1) / blockSize) * blockSize;
51553
51922
  return scrollDirection === 'down' ? [topBlockStartIndex, bottomBlockStartIndex] : [bottomBlockStartIndex, topBlockStartIndex];
@@ -51562,7 +51931,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51562
51931
  // 过滤掉重复掉值
51563
51932
  rxjs_operators__WEBPACK_IMPORTED_MODULE_18__["distinctUntilChanged"]()).subscribe(function (startIndex) {
51564
51933
  var _a;
51565
- (_a = _this2.props.scrollLoad) === null || _a === void 0 ? void 0 : _a.callback(startIndex);
51934
+ (_a = _this3.props.scrollLoad) === null || _a === void 0 ? void 0 : _a.callback(startIndex);
51566
51935
  }));
51567
51936
  }
51568
51937
  }, {
@@ -51572,6 +51941,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51572
51941
  (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
51573
51942
  this.rootSubscription.unsubscribe();
51574
51943
  this.resizeSubject.unsubscribe();
51944
+ // 只有在启用快速滚动时才清理快速滚动管理器
51945
+ if (this.props.isLowPerformance) {
51946
+ this.fastScrollManager.cleanup();
51947
+ }
51575
51948
  }
51576
51949
  /** 更新 DOM 节点的引用,方便其他方法直接操作 DOM */
51577
51950
  }, {
@@ -51635,7 +52008,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
51635
52008
  hasLockColumn = _this$lastInfo2.hasLockColumn;
51636
52009
  if (hasLockColumn) {
51637
52010
  var _context;
51638
- var sumOfColWidth = Object(_utils__WEBPACK_IMPORTED_MODULE_29__["sum"])(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_14___default()(_context = flat.full).call(_context, function (col) {
52011
+ var sumOfColWidth = Object(_utils__WEBPACK_IMPORTED_MODULE_30__["sum"])(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_14___default()(_context = flat.full).call(_context, function (col) {
51639
52012
  return col.width;
51640
52013
  }));
51641
52014
  var nextNeedRenderLock = sumOfColWidth > this.domHelper.artTable.clientWidth;
@@ -51666,6 +52039,7 @@ BaseTable.defaultProps = {
51666
52039
  stickyScrollHeight: 'auto',
51667
52040
  useVirtual: 'auto',
51668
52041
  estimatedRowHeight: 48,
52042
+ isLowPerformance: false,
51669
52043
  isLoading: false,
51670
52044
  components: {},
51671
52045
  getTableProps: rxjs__WEBPACK_IMPORTED_MODULE_17__["noop"],
@@ -52668,6 +53042,8 @@ __webpack_require__.r(__webpack_exports__);
52668
53042
  /* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__);
52669
53043
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./node_modules/@kdcloudjs/table/es/table/utils/index.js");
52670
53044
  /* harmony import */ var _autoFill__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./autoFill */ "./node_modules/@kdcloudjs/table/es/table/pipeline/features/autoFill.js");
53045
+ /* harmony import */ var _utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/touchEventUtils */ "./node_modules/@kdcloudjs/table/es/table/pipeline/features/utils/touchEventUtils.js");
53046
+
52671
53047
 
52672
53048
 
52673
53049
 
@@ -52731,251 +53107,237 @@ function columnDrag() {
52731
53107
  style: style
52732
53108
  });
52733
53109
  },
52734
- headerCellProps: Object(_utils__WEBPACK_IMPORTED_MODULE_4__["mergeCellProps"])(col.headerCellProps, {
52735
- onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
53110
+ headerCellProps: Object(_utils__WEBPACK_IMPORTED_MODULE_4__["mergeCellProps"])(col.headerCellProps, _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_1___default()({}, isLeaf && path.length === 1 ? {
53111
+ onMouseDown: function onMouseDown(e) {
52736
53112
  if (e.button !== 0 || !e.currentTarget.contains(e.target)) {
52737
53113
  return;
52738
53114
  }
52739
- window.addEventListener('selectstart', disableSelect);
52740
- // const cx = e.clientX
52741
- // const width = col.width
52742
- // const a = startIndex
52743
- // const b = endIndex
52744
- // const newColumnDragData = [...columnDragData]
52745
- // let newColumn = [...columns]
52746
- // let newStartIndex = startIndex
52747
- // let endIdx = endIndex
52748
- var columnMoved = false;
52749
- var columns = pipeline.getColumns();
52750
- var _pipeline$getStateAtK2 = pipeline.getStateAtKey(stateKey, {}),
52751
- cloumnsTranslateData = _pipeline$getStateAtK2.cloumnsTranslateData;
52752
- var cloumnsSortData = {};
52753
- columns.forEach(function (item, index) {
52754
- cloumnsSortData[item.code] = index;
52755
- });
52756
- var currentTarget = e.currentTarget;
52757
- var rect = e.currentTarget.parentElement.getClientRects()[0];
52758
- var startX = direction === 'rtl' ? rect.right : rect.left;
52759
- var mouseDownClientX = e.clientX;
52760
- var mouseDownClientY = e.clientY;
52761
- var moveData = [];
52762
- var allColumns = Object(_utils__WEBPACK_IMPORTED_MODULE_4__["collectNodes"])(columns);
52763
- var tableBodyClientRect = tableBody.getBoundingClientRect();
52764
- var startScrollLeft = pipeline.ref.current.domHelper.virtual.scrollLeft;
52765
- var updateScrollPosition = function updateScrollPosition(client) {
52766
- var clientX = client.clientX;
52767
- var left = tableBodyClientRect.left,
52768
- width = tableBodyClientRect.width;
52769
- if (clientX + SCROLL_SIZE >= left + width) {
52770
- pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
52771
- }
52772
- if (clientX - SCROLL_SIZE <= left) {
52773
- pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
52774
- }
52775
- };
52776
- function handleMouseMove(e) {
52777
- var client = {
52778
- clientX: e.clientX,
52779
- clientY: e.clientY
52780
- };
52781
- var scrollDistance = pipeline.ref.current.domHelper.virtual.scrollLeft - startScrollLeft;
52782
- var startPosition = startX - scrollDistance; // 表头最左边起点
52783
- var offsetDistance = direction === 'rtl' ? startPosition - e.clientX : e.clientX - startPosition;
52784
- updateScrollPosition(client);
52785
- if (offsetDistance < 20) {
52786
- return;
52787
- } else {
52788
- e.stopPropagation();
52789
- }
52790
- document.body.style.userSelect = 'none';
52791
- currentTarget.style.cursor = 'move';
52792
- // 循环计算每一个的位置
52793
- // if (startIndex !== replaceIndex) {
52794
- // const optionColumn = columns[startIndex]
52795
- // const move = startIndex > replaceIndex ? 1 : -1
52796
- // let index = Math.min(startIndex, replaceIndex)
52797
- // while (index < Math.max(startIndex, replaceIndex)) {
52798
- // const code = columns[index].code
52799
- // cloumnsTranslateData[code] += move * optionColumn.width
52800
- // cloumnsTranslateData[optionColumn.code] -= move * optionColumn.width
52801
- // index += move
52802
- // }
52803
- // }
52804
- // const opColumn = columns[startIndex]
52805
- // let index = Math.min(startIndex, replaceIndex)
52806
- // while (index <= Math.max(startIndex, replaceIndex)) {
52807
- // const code = columns[index].code
52808
- // if (index !== startIndex && index !== replaceIndex) {
52809
- // cloumnsTranslateData[code] += opColumn.width * (index > startIndex ? -1 : 1)
52810
- // cloumnsTranslateData[opColumn.code] += columns[index].width * (index < startIndex ? -1 : 1)
52811
- // }
52812
- // index++
52813
- // }
52814
- // 重置位置信息
52815
- cloumnsTranslateData = {};
52816
- allColumns.forEach(function (item) {
52817
- cloumnsTranslateData[item.code] = 0;
52818
- });
52819
- // 计算平移位置
52820
- var replaceIndex = 0;
52821
- var totalWitdth = getColumnWidth(columns[replaceIndex]);
52822
- while (totalWitdth < offsetDistance && replaceIndex < columns.length - 1) {
52823
- replaceIndex++;
52824
- totalWitdth += getColumnWidth(columns[replaceIndex]);
52825
- }
52826
- // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
52827
- var startIndex;
52828
- columns.forEach(function (column, index) {
52829
- if (column.code === col.code) {
52830
- startIndex = index;
52831
- }
52832
- });
52833
- var optionColumn = columns[startIndex];
52834
- var index = replaceIndex;
52835
- if (startIndex > replaceIndex) {
52836
- // 左移
52837
- while (index < startIndex) {
52838
- var _columns$index = columns[index],
52839
- code = _columns$index.code,
52840
- lock = _columns$index.lock,
52841
- width = _columns$index.width,
52842
- children = _columns$index.children;
52843
- if (enableMove({
52844
- code: code,
52845
- lock: lock
52846
- })) {
52847
- cloumnsTranslateData[code] += _adjustTranslation(optionColumn.width);
52848
- if (Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isLeafNode"])(columns[index])) {
52849
- cloumnsTranslateData[optionColumn.code] -= _adjustTranslation(width);
52850
- } else {
52851
- cloumnsTranslateData[optionColumn.code] -= _adjustTranslation(getColumnWidth(columns[index]));
52852
- moveAllChildren(children, cloumnsTranslateData, _adjustTranslation(optionColumn.width));
52853
- }
52854
- columnMoved = true;
52855
- }
52856
- index++;
52857
- }
52858
- } else if (startIndex < replaceIndex) {
52859
- // 右移
52860
- while (startIndex < index) {
52861
- var _columns$index2 = columns[index],
52862
- _code = _columns$index2.code,
52863
- _lock = _columns$index2.lock,
52864
- _width = _columns$index2.width,
52865
- _children = _columns$index2.children;
52866
- if (enableMove({
52867
- code: _code,
52868
- lock: _lock
52869
- })) {
52870
- cloumnsTranslateData[_code] -= _adjustTranslation(optionColumn.width);
52871
- if (Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isLeafNode"])(columns[index])) {
52872
- cloumnsTranslateData[optionColumn.code] += _adjustTranslation(_width);
52873
- } else {
52874
- cloumnsTranslateData[optionColumn.code] += _adjustTranslation(getColumnWidth(columns[index]));
52875
- moveAllChildren(_children, cloumnsTranslateData, _adjustTranslation(optionColumn.width), true);
52876
- }
52877
- columnMoved = true;
52878
- }
52879
- index--;
53115
+ handlePointerDown(e.nativeEvent, false, e.currentTarget);
53116
+ },
53117
+ onTouchStart: function onTouchStart(e) {
53118
+ // 阻止触摸事件的默认行为
53119
+ if (e.cancelable) {
53120
+ e.preventDefault();
53121
+ }
53122
+ handlePointerDown(e.nativeEvent, true, e.currentTarget);
53123
+ }
53124
+ } : {}), {
53125
+ style: style
53126
+ }))
53127
+ });
53128
+ // 统一的拖拽处理函数
53129
+ function handlePointerDown(startEvent, isTouch, currentTarget) {
53130
+ var _a;
53131
+ window.addEventListener('selectstart', disableSelect);
53132
+ var columnMoved = false;
53133
+ var columns = pipeline.getColumns();
53134
+ var _pipeline$getStateAtK2 = pipeline.getStateAtKey(stateKey, {}),
53135
+ cloumnsTranslateData = _pipeline$getStateAtK2.cloumnsTranslateData;
53136
+ var cloumnsSortData = {};
53137
+ columns.forEach(function (item, index) {
53138
+ cloumnsSortData[item.code] = index;
53139
+ });
53140
+ var rect = (_a = currentTarget.parentElement) === null || _a === void 0 ? void 0 : _a.getClientRects()[0];
53141
+ if (!rect) return;
53142
+ var startX = direction === 'rtl' ? rect.right : rect.left;
53143
+ var startCoordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__["getEventCoordinates"])(startEvent);
53144
+ var mouseDownClientX = startCoordinates.clientX;
53145
+ var mouseDownClientY = startCoordinates.clientY;
53146
+ var moveData = [];
53147
+ var allColumns = Object(_utils__WEBPACK_IMPORTED_MODULE_4__["collectNodes"])(columns);
53148
+ var tableBodyClientRect = tableBody.getBoundingClientRect();
53149
+ var startScrollLeft = pipeline.ref.current.domHelper.virtual.scrollLeft;
53150
+ var updateScrollPosition = function updateScrollPosition(client) {
53151
+ var clientX = client.clientX;
53152
+ var left = tableBodyClientRect.left,
53153
+ width = tableBodyClientRect.width;
53154
+ if (clientX + SCROLL_SIZE >= left + width) {
53155
+ pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
53156
+ }
53157
+ if (clientX - SCROLL_SIZE <= left) {
53158
+ pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
53159
+ }
53160
+ };
53161
+ function handlePointerMove(e) {
53162
+ // 触摸事件需要阻止默认行为,防止页面滚动
53163
+ if (isTouch && e.cancelable) {
53164
+ e.preventDefault();
53165
+ }
53166
+ var coordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__["getEventCoordinates"])(e);
53167
+ var client = {
53168
+ clientX: coordinates.clientX,
53169
+ clientY: coordinates.clientY
53170
+ };
53171
+ var scrollDistance = pipeline.ref.current.domHelper.virtual.scrollLeft - startScrollLeft;
53172
+ var startPosition = startX - scrollDistance; // 表头最左边起点
53173
+ var offsetDistance = direction === 'rtl' ? startPosition - coordinates.clientX : coordinates.clientX - startPosition;
53174
+ updateScrollPosition(client);
53175
+ if (offsetDistance < 20) {
53176
+ return;
53177
+ } else {
53178
+ e.stopPropagation();
53179
+ }
53180
+ document.body.style.userSelect = 'none';
53181
+ currentTarget.style.cursor = 'move';
53182
+ // 重置位置信息
53183
+ cloumnsTranslateData = {};
53184
+ allColumns.forEach(function (item) {
53185
+ cloumnsTranslateData[item.code] = 0;
53186
+ });
53187
+ // 计算平移位置
53188
+ var replaceIndex = 0;
53189
+ var totalWitdth = getColumnWidth(columns[replaceIndex]);
53190
+ while (totalWitdth < offsetDistance && replaceIndex < columns.length - 1) {
53191
+ replaceIndex++;
53192
+ totalWitdth += getColumnWidth(columns[replaceIndex]);
53193
+ }
53194
+ // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
53195
+ var startIndex;
53196
+ columns.forEach(function (column, index) {
53197
+ if (column.code === col.code) {
53198
+ startIndex = index;
53199
+ }
53200
+ });
53201
+ var optionColumn = columns[startIndex];
53202
+ var index = replaceIndex;
53203
+ if (startIndex > replaceIndex) {
53204
+ // 左移
53205
+ while (index < startIndex) {
53206
+ var _columns$index = columns[index],
53207
+ code = _columns$index.code,
53208
+ lock = _columns$index.lock,
53209
+ width = _columns$index.width,
53210
+ children = _columns$index.children;
53211
+ if (enableMove({
53212
+ code: code,
53213
+ lock: lock
53214
+ })) {
53215
+ cloumnsTranslateData[code] += _adjustTranslation(optionColumn.width);
53216
+ if (Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isLeafNode"])(columns[index])) {
53217
+ cloumnsTranslateData[optionColumn.code] -= _adjustTranslation(width);
53218
+ } else {
53219
+ cloumnsTranslateData[optionColumn.code] -= _adjustTranslation(getColumnWidth(columns[index]));
53220
+ moveAllChildren(children, cloumnsTranslateData, _adjustTranslation(optionColumn.width));
52880
53221
  }
53222
+ columnMoved = true;
52881
53223
  }
52882
- window.requestAnimationFrame(function () {
52883
- pipeline.setStateAtKey(stateKey, {
52884
- cloumnsTranslateData: cloumnsTranslateData
52885
- });
52886
- moveData = [startIndex, replaceIndex];
52887
- });
53224
+ index++;
52888
53225
  }
52889
- function handleMouseUp(e) {
52890
- document.body.removeEventListener('mousemove', handleMouseMove);
52891
- document.body.removeEventListener('mouseup', handleMouseUp);
52892
- window.removeEventListener('selectstart', disableSelect);
52893
- if (_isMoveWhenClicking(mouseDownClientX, mouseDownClientY, e.clientX, e.clientY)) {
52894
- e.stopPropagation(); // 存在移动就阻止冒泡
52895
- currentTarget.addEventListener('click', stopClickPropagation); // 阻止列头点击事件,防止拖动后触发列头过滤事件
53226
+ } else if (startIndex < replaceIndex) {
53227
+ // 右移
53228
+ while (startIndex < index) {
53229
+ var _columns$index2 = columns[index],
53230
+ _code = _columns$index2.code,
53231
+ _lock = _columns$index2.lock,
53232
+ _width = _columns$index2.width,
53233
+ _children = _columns$index2.children;
53234
+ if (enableMove({
53235
+ code: _code,
53236
+ lock: _lock
53237
+ })) {
53238
+ cloumnsTranslateData[_code] -= _adjustTranslation(optionColumn.width);
53239
+ if (Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isLeafNode"])(columns[index])) {
53240
+ cloumnsTranslateData[optionColumn.code] += _adjustTranslation(_width);
53241
+ } else {
53242
+ cloumnsTranslateData[optionColumn.code] += _adjustTranslation(getColumnWidth(columns[index]));
53243
+ moveAllChildren(_children, cloumnsTranslateData, _adjustTranslation(optionColumn.width), true);
53244
+ }
53245
+ columnMoved = true;
52896
53246
  }
53247
+ index--;
53248
+ }
53249
+ }
53250
+ window.requestAnimationFrame(function () {
53251
+ pipeline.setStateAtKey(stateKey, {
53252
+ cloumnsTranslateData: cloumnsTranslateData
53253
+ });
53254
+ moveData = [startIndex, replaceIndex];
53255
+ });
53256
+ }
53257
+ function handlePointerUp(e) {
53258
+ Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__["removePointerEventListeners"])(document.body, {
53259
+ onPointerMove: handlePointerMove,
53260
+ onPointerUp: handlePointerUp
53261
+ }, isTouch);
53262
+ window.removeEventListener('selectstart', disableSelect);
53263
+ var endCoordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__["getEventCoordinates"])(e);
53264
+ if (Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__["hasMovedEnough"])(mouseDownClientX, mouseDownClientY, endCoordinates.clientX, endCoordinates.clientY)) {
53265
+ e.stopPropagation(); // 存在移动就阻止冒泡
53266
+ currentTarget.addEventListener('click', stopClickPropagation); // 阻止列头点击事件,防止拖动后触发列头过滤事件
53267
+ }
52897
53268
 
52898
- window.requestAnimationFrame(function () {
52899
- // 取消阻止列头点击事件
52900
- currentTarget.removeEventListener('click', stopClickPropagation);
52901
- currentTarget = null;
52902
- var _moveData = moveData,
52903
- _moveData2 = _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_moveData, 2),
52904
- startIndex = _moveData2[0],
52905
- replaceIndex = _moveData2[1];
52906
- var optionColumn = columns[startIndex];
52907
- // const move = startIndex > replaceIndex ? 1 : -1
52908
- // let index = Math.min(startIndex, replaceIndex)
52909
- // while (index < Math.max(startIndex, replaceIndex) && index > 0) {
52910
- // const code = columns[index].code
52911
- // cloumnsSortData[optionColumn.code] -= move
52912
- // cloumnsSortData[code] += move
52913
- // index += move
52914
- // }
52915
- var index = replaceIndex;
52916
- if (startIndex > replaceIndex) {
52917
- // 左移
52918
- while (index < startIndex) {
52919
- var _columns$index3 = columns[index],
52920
- code = _columns$index3.code,
52921
- lock = _columns$index3.lock;
52922
- if (enableMove({
52923
- code: code,
52924
- lock: lock
52925
- })) {
52926
- cloumnsSortData[code] += 1;
52927
- cloumnsSortData[optionColumn.code] -= 1;
52928
- columnMoved = true;
52929
- }
52930
- index++;
52931
- }
52932
- } else if (startIndex < replaceIndex) {
52933
- // 右移
52934
- while (index > startIndex) {
52935
- var _columns$index4 = columns[index],
52936
- _code2 = _columns$index4.code,
52937
- _lock2 = _columns$index4.lock;
52938
- if (enableMove({
52939
- code: _code2,
52940
- lock: _lock2
52941
- })) {
52942
- cloumnsSortData[_code2] -= 1;
52943
- cloumnsSortData[optionColumn.code] += 1;
52944
- columnMoved = true;
52945
- }
52946
- index--;
52947
- }
53269
+ window.requestAnimationFrame(function () {
53270
+ // 取消阻止列头点击事件
53271
+ currentTarget.removeEventListener('click', stopClickPropagation);
53272
+ currentTarget = null;
53273
+ var _moveData = moveData,
53274
+ _moveData2 = _babel_runtime_corejs3_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_moveData, 2),
53275
+ startIndex = _moveData2[0],
53276
+ replaceIndex = _moveData2[1];
53277
+ var optionColumn = columns[startIndex];
53278
+ var index = replaceIndex;
53279
+ if (startIndex > replaceIndex) {
53280
+ // 左移
53281
+ while (index < startIndex) {
53282
+ var _columns$index3 = columns[index],
53283
+ code = _columns$index3.code,
53284
+ lock = _columns$index3.lock;
53285
+ if (enableMove({
53286
+ code: code,
53287
+ lock: lock
53288
+ })) {
53289
+ cloumnsSortData[code] += 1;
53290
+ cloumnsSortData[optionColumn.code] -= 1;
53291
+ columnMoved = true;
52948
53292
  }
52949
- var onColumnDragStopped = opts.onColumnDragStopped;
52950
- // 拖拽结束返回列顺序
52951
- if (onColumnDragStopped) {
52952
- var _context;
52953
- var isRowDragColumn = function isRowDragColumn(code) {
52954
- var rowDragColumnKey = pipeline.getFeatureOptions('rowDragColumnKey');
52955
- return code === rowDragColumnKey;
52956
- };
52957
- var newColumns = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (column) {
52958
- return column.code !== _autoFill__WEBPACK_IMPORTED_MODULE_5__["FILL_COLUMN_CODE"] && !isRowDragColumn(column.code) && !Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isSelectColumn"])(column);
52959
- });
52960
- // TODO drag需要在resize之后use,否则这里返回的列对应的宽度不是拖拽后的
52961
- onColumnDragStopped(columnMoved, newColumns);
53293
+ index++;
53294
+ }
53295
+ } else if (startIndex < replaceIndex) {
53296
+ // 右移
53297
+ while (index > startIndex) {
53298
+ var _columns$index4 = columns[index],
53299
+ _code2 = _columns$index4.code,
53300
+ _lock2 = _columns$index4.lock;
53301
+ if (enableMove({
53302
+ code: _code2,
53303
+ lock: _lock2
53304
+ })) {
53305
+ cloumnsSortData[_code2] -= 1;
53306
+ cloumnsSortData[optionColumn.code] += 1;
53307
+ columnMoved = true;
52962
53308
  }
52963
- pipeline.setStateAtKey(stateKey, {
52964
- cloumnsTranslateData: null
52965
- });
53309
+ index--;
53310
+ }
53311
+ }
53312
+ var onColumnDragStopped = opts.onColumnDragStopped;
53313
+ // 拖拽结束返回列顺序
53314
+ if (onColumnDragStopped) {
53315
+ var _context;
53316
+ var isRowDragColumn = function isRowDragColumn(code) {
53317
+ var rowDragColumnKey = pipeline.getFeatureOptions('rowDragColumnKey');
53318
+ return code === rowDragColumnKey;
53319
+ };
53320
+ var newColumns = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (column) {
53321
+ return column.code !== _autoFill__WEBPACK_IMPORTED_MODULE_5__["FILL_COLUMN_CODE"] && !isRowDragColumn(column.code) && !Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isSelectColumn"])(column);
52966
53322
  });
52967
- document.body.style.userSelect = '';
52968
- currentTarget.style.opacity = '';
52969
- currentTarget.style.cursor = '';
53323
+ // TODO drag需要在resize之后use,否则这里返回的列对应的宽度不是拖拽后的
53324
+ onColumnDragStopped(columnMoved, newColumns);
52970
53325
  }
52971
- var onColumnDragStart = opts.onColumnDragStart;
52972
- onColumnDragStart && onColumnDragStart(col);
52973
- document.body.addEventListener('mousemove', handleMouseMove);
52974
- document.body.addEventListener('mouseup', handleMouseUp);
52975
- },
52976
- style: style
52977
- })
52978
- });
53326
+ pipeline.setStateAtKey(stateKey, {
53327
+ cloumnsTranslateData: null
53328
+ });
53329
+ });
53330
+ document.body.style.userSelect = '';
53331
+ currentTarget.style.opacity = '';
53332
+ currentTarget.style.cursor = '';
53333
+ }
53334
+ var onColumnDragStart = opts.onColumnDragStart;
53335
+ onColumnDragStart && onColumnDragStart(col);
53336
+ Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_6__["addPointerEventListeners"])(document.body, {
53337
+ onPointerMove: handlePointerMove,
53338
+ onPointerUp: handlePointerUp
53339
+ }, isTouch);
53340
+ }
52979
53341
  }));
52980
53342
  };
52981
53343
  }
@@ -53004,15 +53366,6 @@ function moveAllChildren(cols, cloumnsTranslateData, width, isMinus) {
53004
53366
  }
53005
53367
  });
53006
53368
  }
53007
- function _isMoveWhenClicking(mouseDownClientX, mouseDownClientY, mouseUpClientX, mouseUpClientY) {
53008
- var xDiff = mouseUpClientX - mouseDownClientX;
53009
- var yDiff = mouseUpClientY - mouseDownClientY;
53010
- // 鼠标点按和松开的偏移量大于5px,认为存在移动
53011
- if (Math.sqrt(xDiff * xDiff + yDiff * yDiff) > 5) {
53012
- return true;
53013
- }
53014
- return false;
53015
- }
53016
53369
 
53017
53370
  /***/ }),
53018
53371
 
@@ -53414,6 +53767,7 @@ __webpack_require__.r(__webpack_exports__);
53414
53767
  /* harmony import */ var _internals__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../internals */ "./node_modules/@kdcloudjs/table/es/table/internals.js");
53415
53768
  /* harmony import */ var _base_styles__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../base/styles */ "./node_modules/@kdcloudjs/table/es/table/base/styles.js");
53416
53769
  /* harmony import */ var _base_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../base/utils */ "./node_modules/@kdcloudjs/table/es/table/base/utils.js");
53770
+ /* harmony import */ var _utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/touchEventUtils */ "./node_modules/@kdcloudjs/table/es/table/pipeline/features/utils/touchEventUtils.js");
53417
53771
 
53418
53772
 
53419
53773
  var _templateObject, _templateObject2;
@@ -53428,6 +53782,7 @@ var _templateObject, _templateObject2;
53428
53782
 
53429
53783
 
53430
53784
 
53785
+
53431
53786
  var TableHeaderCellResize = styled_components__WEBPACK_IMPORTED_MODULE_6__["default"].div(_templateObject || (_templateObject = _babel_runtime_corejs3_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_1___default()(["\n position: absolute;\n top: 0;\n ", ": -5px;\n height: 100%;\n width: 10px;\n cursor: ew-resize;\n display: flex;\n flex-direction: column;\n align-items: center;\n z-index:1;\n\n &:after {\n content: \"\";\n position: absolute;\n display: block;\n ", ": calc(50% - 1px);\n width: 1px;\n height: calc(100% - 14px);\n top: 7px;\n }\n"])), function (props) {
53432
53787
  return Object(_base_utils__WEBPACK_IMPORTED_MODULE_12__["swapRTLDirection"])(props.direction, 'right');
53433
53788
  }, function (props) {
@@ -53481,10 +53836,12 @@ function columnResize() {
53481
53836
  var _a;
53482
53837
  (_a = opts.doubleClickCallback) === null || _a === void 0 ? void 0 : _a.call(opts, e, col);
53483
53838
  };
53484
- var handleMouseDown = function handleMouseDown(e, col) {
53839
+ // 通用的拖拽处理逻辑
53840
+ var handleResize = function handleResize(startEvent, col, eventType) {
53485
53841
  window.addEventListener('selectstart', disableSelect);
53486
53842
  var changedColumnSize = {};
53487
- var startX = e.clientX;
53843
+ var startCoordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_13__["getEventCoordinates"])(startEvent);
53844
+ var startX = startCoordinates.clientX;
53488
53845
  var children = col.children,
53489
53846
  code = col.code,
53490
53847
  _col$features = col.features,
@@ -53495,9 +53852,22 @@ function columnResize() {
53495
53852
  var realMaxSize = typeof maxWidth === 'number' ? maxWidth : maxSize;
53496
53853
  var columnSize = pipeline.getFeatureOptions(COLUMN_SIZE_KEY);
53497
53854
  var recordColumnSize = columnSize;
53498
- e.stopPropagation();
53499
- var nextSize$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["fromEvent"])(window, 'mousemove').pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_8__["takeUntil"](Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["fromEvent"])(window, 'mouseup')), rxjs_operators__WEBPACK_IMPORTED_MODULE_8__["map"](function (e) {
53500
- var movingX = e.clientX;
53855
+ // 根据事件类型选择不同的事件监听器
53856
+ var moveEventName = eventType === 'mouse' ? 'mousemove' : 'touchmove';
53857
+ var endEventName = eventType === 'mouse' ? 'mouseup' : 'touchend';
53858
+ var moveEventOptions = eventType === 'touch' ? {
53859
+ passive: false
53860
+ } : undefined;
53861
+ var endEventOptions = eventType === 'touch' ? {
53862
+ passive: false
53863
+ } : undefined;
53864
+ var nextSize$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["fromEvent"])(window, moveEventName, moveEventOptions).pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_8__["takeUntil"](Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["fromEvent"])(window, endEventName, endEventOptions)), rxjs_operators__WEBPACK_IMPORTED_MODULE_8__["map"](function (e) {
53865
+ // 触摸事件需要阻止默认行为,防止页面滚动
53866
+ if (eventType === 'touch' && e.cancelable) {
53867
+ e.preventDefault();
53868
+ }
53869
+ var coordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_13__["getEventCoordinates"])(e);
53870
+ var movingX = coordinates.clientX;
53501
53871
  var nextColumnSize = _babel_runtime_corejs3_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({}, columnSize);
53502
53872
  var deltaSum = pipeline.ctx.direction === 'rtl' ? startX - movingX : movingX - startX;
53503
53873
  var deltaRemaining = deltaSum;
@@ -53555,6 +53925,19 @@ function columnResize() {
53555
53925
  }
53556
53926
  });
53557
53927
  };
53928
+ var handleMouseDown = function handleMouseDown(e, col) {
53929
+ e.stopPropagation();
53930
+ handleResize(e.nativeEvent, col, 'mouse');
53931
+ };
53932
+ // 触摸事件处理函数
53933
+ var handleTouchStart = function handleTouchStart(e, col) {
53934
+ // 阻止触摸事件的默认行为
53935
+ if (e.cancelable) {
53936
+ e.preventDefault();
53937
+ }
53938
+ e.stopPropagation();
53939
+ handleResize(e.nativeEvent, col, 'touch');
53940
+ };
53558
53941
  var isGroup = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["isGroupColumn"])(pipeline.getColumns());
53559
53942
  return pipeline.mapColumns(Object(_utils__WEBPACK_IMPORTED_MODULE_9__["makeRecursiveMapper"])(function (col) {
53560
53943
  var _a;
@@ -53572,6 +53955,9 @@ function columnResize() {
53572
53955
  },
53573
53956
  onMouseDown: function onMouseDown(e) {
53574
53957
  return handleMouseDown(e, col);
53958
+ },
53959
+ onTouchStart: function onTouchStart(e) {
53960
+ return handleTouchStart(e, col);
53575
53961
  }
53576
53962
  }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(TableHeaderCellResize, {
53577
53963
  direction: pipeline.ctx.direction,
@@ -53581,6 +53967,9 @@ function columnResize() {
53581
53967
  },
53582
53968
  onMouseDown: function onMouseDown(e) {
53583
53969
  return handleMouseDown(e, col);
53970
+ },
53971
+ onTouchStart: function onTouchStart(e) {
53972
+ return handleTouchStart(e, col);
53584
53973
  }
53585
53974
  }))),
53586
53975
  headerCellProps: Object(_utils__WEBPACK_IMPORTED_MODULE_9__["mergeCellProps"])(col.headerCellProps, {
@@ -55920,6 +56309,8 @@ __webpack_require__.r(__webpack_exports__);
55920
56309
  /* harmony import */ var _base_styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../base/styles */ "./node_modules/@kdcloudjs/table/es/table/base/styles.js");
55921
56310
  /* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../const */ "./node_modules/@kdcloudjs/table/es/table/pipeline/const.js");
55922
56311
  /* harmony import */ var _internals__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../internals */ "./node_modules/@kdcloudjs/table/es/table/internals.js");
56312
+ /* harmony import */ var _utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/touchEventUtils */ "./node_modules/@kdcloudjs/table/es/table/pipeline/features/utils/touchEventUtils.js");
56313
+
55923
56314
 
55924
56315
 
55925
56316
 
@@ -55951,15 +56342,14 @@ var defaultRowDragColumn = {
55951
56342
  },
55952
56343
  render: function render(value, row, rowIndex) {
55953
56344
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement("svg", {
55954
- viewBox: '0 0 1024 1024',
55955
- version: '1.1',
55956
- xmlns: 'http://www.w3.org/1999/xlink',
55957
- "data-icon": 'drag',
55958
- width: '16',
55959
- height: '16'
56345
+ viewBox: "0 0 1024 1024",
56346
+ version: "1.1",
56347
+ xmlns: "http://www.w3.org/1999/xlink",
56348
+ "data-icon": "drag",
56349
+ width: "16",
56350
+ height: "16"
55960
56351
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement("path", {
55961
- d: 'M298.688 192a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m298.624 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0zM298.688 512a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m298.624 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m-298.624 320a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m298.624 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0z',
55962
- "p-id": '4278'
56352
+ d: "M298.688 192a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m298.624 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0zM298.688 512a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m298.624 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m-298.624 320a64 64 0 1 0 128 0 64 64 0 0 0-128 0z m298.624 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0z"
55963
56353
  }));
55964
56354
  }
55965
56355
  };
@@ -55989,19 +56379,19 @@ function rowDrag(opt) {
55989
56379
  var treeModeOptions = getTreeModeOptions();
55990
56380
  var rowDragOptions = getRowDragOptions();
55991
56381
  var allowDragIntoRow = !!treeModeOptions && (rowDragOptions === null || rowDragOptions === void 0 ? void 0 : rowDragOptions.allowDragIntoRow);
55992
- var isLeave = !isMouseOnDropTarget(event, dropZoneTarget);
56382
+ var isLeave = !isPointerOnDropTarget(event, dropZoneTarget);
55993
56383
  var overIndex = -1;
55994
56384
  var direction = 'bottom';
55995
56385
  if (!isLeave && dataSource.length > 0) {
55996
- var overDragItem = getDragRowItem(event.target, dropZoneTarget, dataSource);
56386
+ var overDragItem = getDragRowItem(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(event), dropZoneTarget, dataSource);
55997
56387
  if (overDragItem) {
55998
56388
  var rowIndex = overDragItem.rowIndex,
55999
56389
  cell = overDragItem.cell;
56000
56390
  overIndex = rowIndex;
56001
- direction = getDirection(cell, event.clientY, allowDragIntoRow);
56391
+ direction = getDirection(cell, Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(event).clientY, allowDragIntoRow);
56002
56392
  }
56003
56393
  }
56004
- if (overIndex === -1 && dataSource.length > 0 && dropZoneTarget.contains(event.target)) {
56394
+ if (overIndex === -1 && dataSource.length > 0 && dropZoneTarget.contains(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(event))) {
56005
56395
  overIndex = dataSource.length - 1;
56006
56396
  direction = 'bottom';
56007
56397
  }
@@ -56077,9 +56467,25 @@ function rowDrag(opt) {
56077
56467
  }
56078
56468
  };
56079
56469
  var onMouseDown = function onMouseDown(event) {
56470
+ handlePointerDown(event.nativeEvent);
56471
+ };
56472
+ // PC 单据移动端显示,兼容移动端的拖拽事件
56473
+ var onTouchStart = function onTouchStart(event) {
56474
+ // 尝试阻止触摸事件的默认行为,防止页面滚动
56475
+ try {
56476
+ if (event.cancelable) {
56477
+ event.preventDefault();
56478
+ }
56479
+ } catch (error) {
56480
+ // 忽略passive event listener错误
56481
+ console.warn('preventDefault failed in passive touch event listener');
56482
+ }
56483
+ handlePointerDown(event.nativeEvent);
56484
+ };
56485
+ // 统一的拖拽处理函数
56486
+ var handlePointerDown = function handlePointerDown(startEvent) {
56080
56487
  var _a;
56081
- var mouseDownEvent = event.nativeEvent;
56082
- var startDataItem = getDragRowItem(mouseDownEvent.target, tableBody, dataSource);
56488
+ var startDataItem = getDragRowItem(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(startEvent), tableBody, dataSource);
56083
56489
  if (!startDataItem || startDataItem.code !== rowDragColumn.code) return;
56084
56490
  if ((_a = opt === null || opt === void 0 ? void 0 : opt.isDisabled) === null || _a === void 0 ? void 0 : _a.call(opt, startDataItem.row, startDataItem.rowIndex)) return;
56085
56491
  var isValidDrag = false;
@@ -56091,7 +56497,7 @@ function rowDrag(opt) {
56091
56497
  var intervalId = null;
56092
56498
  var expandRowTimeoutId = null;
56093
56499
  var expandRowCallBackList = [];
56094
- var updateScrollPosition = function updateScrollPosition(tableBody, mouseMoveEvent) {
56500
+ var updateScrollPosition = function updateScrollPosition(tableBody, moveEvent) {
56095
56501
  if (opt === null || opt === void 0 ? void 0 : opt.suppressScrollMove) return;
56096
56502
  if (timeoutId) {
56097
56503
  clearTimeout(timeoutId);
@@ -56100,7 +56506,7 @@ function rowDrag(opt) {
56100
56506
  clearInterval(intervalId);
56101
56507
  }
56102
56508
  if (!tableBody) return;
56103
- var moveOffset = getScrollMoveOffset(tableBody, mouseMoveEvent);
56509
+ var moveOffset = getScrollMoveOffset(tableBody, moveEvent);
56104
56510
  if (moveOffset === 0) {
56105
56511
  return;
56106
56512
  }
@@ -56110,30 +56516,53 @@ function rowDrag(opt) {
56110
56516
  }, 50);
56111
56517
  }, 500);
56112
56518
  };
56113
- var handleDragStart = function handleDragStart(mouseDownEvent) {
56519
+ var handleDragStart = function handleDragStart(event) {
56114
56520
  var _a;
56115
- dragElement = createDragElement(mouseDownEvent, tableBody); // 创建拖拽悬浮框
56521
+ // 屏蔽默认事件,防止文本选择、框选等
56522
+ try {
56523
+ if (event.cancelable) {
56524
+ event.preventDefault();
56525
+ }
56526
+ } catch (error) {
56527
+ // 忽略passive event listener错误
56528
+ console.warn('preventDefault failed in passive event listener');
56529
+ }
56530
+ // 禁用页面的文本选择
56531
+ document.body.style.userSelect = 'none';
56532
+ document.body.style.webkitUserSelect = 'none';
56533
+ // 添加拖拽状态的CSS类,可以在样式中进一步控制
56534
+ document.body.classList.add('row-dragging');
56535
+ dragElement = createDragElement(event, tableBody); // 创建拖拽悬浮框
56116
56536
  var isTreeTable = !!pipeline.getFeatureOptions('treeModeOptions');
56117
56537
  dragLine = createDragLine(isTreeTable); // 创建拖拽插入指示线
56118
56538
  var dragText = (opt === null || opt === void 0 ? void 0 : opt.rowDragText) ? (_a = opt === null || opt === void 0 ? void 0 : opt.rowDragText) === null || _a === void 0 ? void 0 : _a.call(opt, startDataItem.row, startDataItem.rowIndex) : "\u7B2C".concat(startDataItem.rowIndex, "\u884C\u5185\u5BB9");
56119
56539
  setDragText(dragElement, dragText); // 设置悬浮框显示文本
56120
56540
  artTable.classList.add(classnames__WEBPACK_IMPORTED_MODULE_8___default()(_base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].rowDragging));
56121
56541
  rowDragApi.setDragStatus('start');
56122
- var dragEvent = createDropTargetEvent(currentDropZone, mouseDownEvent, startDataItem, currentDropZone);
56542
+ var dragEvent = createDropTargetEvent(currentDropZone, event, startDataItem, currentDropZone);
56123
56543
  onDragStart(dragEvent);
56124
56544
  };
56125
- var handleDragMove = function handleDragMove(mouseMoveEvent) {
56545
+ var handleDragMove = function handleDragMove(moveEvent) {
56126
56546
  var _a;
56547
+ // 尝试屏蔽默认事件,在passive监听器中可能会失败
56548
+ try {
56549
+ if (moveEvent.cancelable) {
56550
+ moveEvent.preventDefault();
56551
+ }
56552
+ } catch (error) {
56553
+ // 忽略passive event listener错误
56554
+ console.warn('preventDefault failed in passive event listener');
56555
+ }
56127
56556
  var isRTL = pipeline.ctx.direction === 'rtl';
56128
- positionDragElemment(dragElement, mouseMoveEvent, isRTL); // 更新拖拽悬浮框位置
56557
+ positionDragElemment(dragElement, moveEvent, isRTL); // 更新拖拽悬浮框位置
56129
56558
  rowDragApi.setDragStatus('dragging');
56130
56559
  setDragElementIcon(dragElement, 'move');
56131
56560
  var rowDropZones = rowDragApi.getRowDropZone();
56132
56561
  var validDropZones = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(rowDropZones).call(rowDropZones, currentDropZone); // 可放置区域加上自身
56133
56562
  var dropTarget = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(validDropZones).call(validDropZones, function (zone) {
56134
- return isMouseOnDropTarget(mouseMoveEvent, zone.getContainer());
56563
+ return isPointerOnDropTarget(moveEvent, zone.getContainer());
56135
56564
  }) || null;
56136
- updateScrollPosition(dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.getContainer(), mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
56565
+ updateScrollPosition(dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.getContainer(), moveEvent); // 拖拽到底时让滚动条可以滚动
56137
56566
  if (dropTarget !== lastDropTarget) {
56138
56567
  // 拖拽离开表格
56139
56568
  if (lastDropTarget !== null && dropTarget === null) {
@@ -56141,7 +56570,7 @@ function rowDrag(opt) {
56141
56570
  setDragElementIcon(dragElement, 'notAllowed');
56142
56571
  hiddenDragLine(dragLine);
56143
56572
  lastDropTarget.getContainer().classList.remove(_base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].rowDragNoData);
56144
- var dragEvent = createDropTargetEvent(lastDropTarget, mouseMoveEvent, startDataItem, currentDropZone);
56573
+ var dragEvent = createDropTargetEvent(lastDropTarget, moveEvent, startDataItem, currentDropZone);
56145
56574
  lastDropTarget.onDragLeave(dragEvent);
56146
56575
  }
56147
56576
  }
@@ -56161,7 +56590,7 @@ function rowDrag(opt) {
56161
56590
  dragLine.classList.remove(_base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].treeTableRowDragLine);
56162
56591
  }
56163
56592
  }
56164
- var _dragEvent = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, currentDropZone);
56593
+ var _dragEvent = createDropTargetEvent(dropTarget, moveEvent, startDataItem, currentDropZone);
56165
56594
  dropTarget.onDragEnter(_dragEvent);
56166
56595
  }
56167
56596
  }
@@ -56173,7 +56602,7 @@ function rowDrag(opt) {
56173
56602
  positionDragLine({
56174
56603
  lineElement: dragLine,
56175
56604
  dragZone: dropTarget,
56176
- event: mouseMoveEvent,
56605
+ event: moveEvent,
56177
56606
  isRTL: isRTL
56178
56607
  });
56179
56608
  }
@@ -56190,7 +56619,7 @@ function rowDrag(opt) {
56190
56619
  onCollapse = treeModeOptions.onCollapse;
56191
56620
  // 鼠标悬停所在的拖拽行信息
56192
56621
  var dataSource = dropTarget.tableParams.getDataSource();
56193
- var dragItem = getDragRowItem(mouseMoveEvent.target, dropTarget.getContainer(), dataSource);
56622
+ var dragItem = getDragRowItem(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(moveEvent), dropTarget.getContainer(), dataSource);
56194
56623
  if (!dragItem) return;
56195
56624
  var row = dragItem.row;
56196
56625
  var _row$treeMetaKey = row[treeMetaKey],
@@ -56205,15 +56634,20 @@ function rowDrag(opt) {
56205
56634
  }, 1000);
56206
56635
  }
56207
56636
  if (dropTarget.onDragging) {
56208
- var _dragEvent2 = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, currentDropZone);
56637
+ var _dragEvent2 = createDropTargetEvent(dropTarget, moveEvent, startDataItem, currentDropZone);
56209
56638
  dropTarget.onDragging(_dragEvent2);
56210
56639
  }
56211
56640
  }
56212
56641
  };
56213
- var handleDragStop = function handleDragStop(mouseUpEvent) {
56642
+ var handleDragStop = function handleDragStop(endEvent) {
56214
56643
  if (!isValidDrag) {
56215
56644
  return;
56216
56645
  }
56646
+ // 恢复默认的文本选择功能
56647
+ document.body.style.userSelect = '';
56648
+ document.body.style.webkitUserSelect = '';
56649
+ // 移除拖拽状态的CSS类
56650
+ document.body.classList.remove('row-dragging');
56217
56651
  removeElement(dragElement);
56218
56652
  removeElement(dragLine);
56219
56653
  artTable.classList.remove(classnames__WEBPACK_IMPORTED_MODULE_8___default()(_base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].rowDragging));
@@ -56228,10 +56662,10 @@ function rowDrag(opt) {
56228
56662
  });
56229
56663
  var validDropZones = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(rowDropZones).call(rowDropZones, currentDropZone);
56230
56664
  var dropTarget = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(validDropZones).call(validDropZones, function (zone) {
56231
- return isMouseOnDropTarget(mouseUpEvent, zone.getContainer());
56665
+ return isPointerOnDropTarget(endEvent, zone.getContainer());
56232
56666
  });
56233
56667
  if (dropTarget && dropTarget.onDragStop) {
56234
- var dragEvent = createDropTargetEvent(dropTarget, mouseUpEvent, startDataItem, currentDropZone);
56668
+ var dragEvent = createDropTargetEvent(dropTarget, endEvent, startDataItem, currentDropZone);
56235
56669
  dropTarget.onDragStop(dragEvent);
56236
56670
  }
56237
56671
  while (expandRowCallBackList.length > 0) {
@@ -56239,32 +56673,73 @@ function rowDrag(opt) {
56239
56673
  callback();
56240
56674
  }
56241
56675
  };
56242
- var mousemove$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_6__["fromEvent"])(window, 'mousemove');
56243
- var mouseup$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_6__["fromEvent"])(window, 'mouseup');
56244
- var rowDragMove$ = mousemove$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["filter"])(function (mouseMoveEvent) {
56245
- var mouseMoveClientY = mouseMoveEvent.clientY;
56246
- var mouseDownClientY = mouseDownEvent.clientY;
56247
- // 上下移动偏移量大于5才是有效的拖拽
56248
- if (Math.abs(mouseMoveClientY - mouseDownClientY) > 5) {
56249
- isValidDrag = true;
56250
- }
56251
- return isValidDrag;
56252
- }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["map"])(function (mouseMoveEvent) {
56253
- if (!isDragging) {
56254
- isDragging = true;
56255
- handleDragStart(mouseDownEvent);
56256
- handleDragMove(mouseDownEvent);
56257
- }
56258
- handleDragMove(mouseMoveEvent);
56259
- }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["takeUntil"])(mouseup$));
56260
- rowDragMove$.subscribe();
56261
- var rowDragEnd$ = mouseup$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["map"])(function (mouseUpEvent) {
56262
- handleDragStop(mouseUpEvent);
56263
- })).subscribe({
56264
- next: function next() {
56265
- rowDragEnd$.unsubscribe();
56266
- }
56267
- });
56676
+ // 判断是鼠标事件还是触摸事件,分别监听对应的移动和结束事件
56677
+ var isTouchEvent = ('touches' in startEvent);
56678
+ if (isTouchEvent) {
56679
+ // 触摸事件处理
56680
+ var touchmove$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_6__["fromEvent"])(window, 'touchmove', {
56681
+ passive: false
56682
+ });
56683
+ var touchend$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_6__["fromEvent"])(window, 'touchend', {
56684
+ passive: false
56685
+ });
56686
+ var touchDragMove$ = touchmove$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["filter"])(function (moveEvent) {
56687
+ var coordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(moveEvent);
56688
+ var startCoordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(startEvent);
56689
+ var moveClientY = coordinates.clientY;
56690
+ var startClientY = startCoordinates.clientY;
56691
+ // 上下移动偏移量大于5才是有效的拖拽
56692
+ if (Math.abs(moveClientY - startClientY) > 5) {
56693
+ isValidDrag = true;
56694
+ }
56695
+ return isValidDrag;
56696
+ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["map"])(function (moveEvent) {
56697
+ if (!isDragging) {
56698
+ isDragging = true;
56699
+ handleDragStart(startEvent);
56700
+ handleDragMove(startEvent);
56701
+ }
56702
+ handleDragMove(moveEvent);
56703
+ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["takeUntil"])(touchend$));
56704
+ touchDragMove$.subscribe();
56705
+ var touchDragEnd$ = touchend$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["map"])(function (endEvent) {
56706
+ handleDragStop(endEvent);
56707
+ })).subscribe({
56708
+ next: function next() {
56709
+ touchDragEnd$.unsubscribe();
56710
+ }
56711
+ });
56712
+ } else {
56713
+ // 鼠标事件处理
56714
+ var mousemove$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_6__["fromEvent"])(window, 'mousemove');
56715
+ var mouseup$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_6__["fromEvent"])(window, 'mouseup');
56716
+ var rowDragMove$ = mousemove$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["filter"])(function (moveEvent) {
56717
+ var coordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(moveEvent);
56718
+ var startCoordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(startEvent);
56719
+ var moveClientY = coordinates.clientY;
56720
+ var startClientY = startCoordinates.clientY;
56721
+ // 上下移动偏移量大于5才是有效的拖拽
56722
+ if (Math.abs(moveClientY - startClientY) > 5) {
56723
+ isValidDrag = true;
56724
+ }
56725
+ return isValidDrag;
56726
+ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["map"])(function (moveEvent) {
56727
+ if (!isDragging) {
56728
+ isDragging = true;
56729
+ handleDragStart(startEvent);
56730
+ handleDragMove(startEvent);
56731
+ }
56732
+ handleDragMove(moveEvent);
56733
+ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["takeUntil"])(mouseup$));
56734
+ rowDragMove$.subscribe();
56735
+ var rowDragEnd$ = mouseup$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_7__["map"])(function (endEvent) {
56736
+ handleDragStop(endEvent);
56737
+ })).subscribe({
56738
+ next: function next() {
56739
+ rowDragEnd$.unsubscribe();
56740
+ }
56741
+ });
56742
+ }
56268
56743
  };
56269
56744
  var rowDragColumn = (opt === null || opt === void 0 ? void 0 : opt.rowDragColumn) || defaultRowDragColumn;
56270
56745
  pipeline.setFeatureOptions('rowDragColumnKey', rowDragColumn.code);
@@ -56273,7 +56748,8 @@ function rowDrag(opt) {
56273
56748
  nextColumns.unshift(rowDragColumn);
56274
56749
  pipeline.columns(nextColumns);
56275
56750
  pipeline.addTableProps({
56276
- onMouseDown: onMouseDown
56751
+ onMouseDown: onMouseDown,
56752
+ onTouchStart: onTouchStart
56277
56753
  });
56278
56754
  pipeline.appendRowPropsGetter(function (row, rowIndex) {
56279
56755
  var _cx;
@@ -56343,13 +56819,13 @@ function isEleInFooter(target) {
56343
56819
  }
56344
56820
  return false;
56345
56821
  }
56346
- function createDragElement(mouseDownEvent, tableBody) {
56822
+ function createDragElement(event, tableBody) {
56347
56823
  var _context3, _context4;
56348
56824
  var ELEMENT_TEMPLATE = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context3 = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context4 = "<div class='".concat(_base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].rowDragElement, "'>\n <span class='")).call(_context4, _base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].rowDragElementIcon, "'></span>\n <div class='")).call(_context3, _base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].rowDragElementLabel, "'></div>\n </div>");
56349
56825
  var element = document.createElement('div');
56350
56826
  element.innerHTML = ELEMENT_TEMPLATE;
56351
56827
  var dragElement = element.firstChild;
56352
- var targetRow = findTargetRow(mouseDownEvent.target, tableBody);
56828
+ var targetRow = findTargetRow(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(event), tableBody);
56353
56829
  if (targetRow) {
56354
56830
  var rect = targetRow.getBoundingClientRect();
56355
56831
  dragElement.style.height = rect.height + 'px';
@@ -56394,9 +56870,9 @@ function positionDragLine(_ref) {
56394
56870
  lineElement.style.display = 'block';
56395
56871
  }
56396
56872
  // 鼠标悬停所在的拖拽行信息
56397
- var dragItem = getDragRowItem(event.target, tableContainer, dataSource);
56873
+ var dragItem = getDragRowItem(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(event), tableContainer, dataSource);
56398
56874
  if (!dragItem) {
56399
- if (dataSource.length > 0 && tableContainer.contains(event.target)) {
56875
+ if (dataSource.length > 0 && tableContainer.contains(Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(event))) {
56400
56876
  var _context5, _context6;
56401
56877
  var _rowIndex = dataSource.length - 1;
56402
56878
  var _row = dataSource[_rowIndex];
@@ -56425,7 +56901,7 @@ function positionDragLine(_ref) {
56425
56901
  rowIndex = dragItem.rowIndex,
56426
56902
  row = dragItem.row;
56427
56903
  var allowDragInto = isTreeTable && allowDragIntoRow;
56428
- var direction = getDirection(cell, event.clientY, allowDragInto);
56904
+ var direction = getDirection(cell, Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(event).clientY, allowDragInto);
56429
56905
  var targetCell = isTreeTable ? tableContainer.querySelector(_babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context7 = "tr[data-rowindex=\"".concat(rowIndex, "\"] .")).call(_context7, _base_styles__WEBPACK_IMPORTED_MODULE_9__["Classes"].tableExtendCell)) : cell;
56430
56906
  if (!targetCell) return;
56431
56907
  var _getLinePosition2 = getLinePosition({
@@ -56463,8 +56939,9 @@ function positionDragElemment(element, event, isRTL) {
56463
56939
  var browserWidth = (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientWidth) || 0;
56464
56940
  var browserHeight = (_e = (_d = document.body) === null || _d === void 0 ? void 0 : _d.clientHeight) !== null && _e !== void 0 ? _e : window.innerHeight || ((_f = document.documentElement) === null || _f === void 0 ? void 0 : _f.clientHeight) || 0;
56465
56941
  var offsetParentSize = getElementRectWithOffset(element.offsetParent);
56466
- var clientX = event.clientX,
56467
- clientY = event.clientY;
56942
+ var _getEventCoordinates = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(event),
56943
+ clientX = _getEventCoordinates.clientX,
56944
+ clientY = _getEventCoordinates.clientY;
56468
56945
  var top = clientY - offsetParentSize.top - eleHeight / 2;
56469
56946
  var left = clientX - offsetParentSize.left;
56470
56947
  var right = Math.max(browserWidth - clientX, 0);
@@ -56480,12 +56957,11 @@ function positionDragElemment(element, event, isRTL) {
56480
56957
  right = Math.max(browserWidth + windowScrollX - element.clientWidth, 0);
56481
56958
  }
56482
56959
  if (isRTL) {
56483
- var _context8;
56484
- element.style.cssText += _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_1___default()(_context8 = ";right: ".concat(right, "px; top: ")).call(_context8, top, "px;");
56485
- return;
56960
+ element.style.right = right + 'px';
56961
+ } else {
56962
+ element.style.left = left + 'px';
56486
56963
  }
56487
- element.style.left = "".concat(left, "px");
56488
- element.style.top = "".concat(top, "px");
56964
+ element.style.top = top + 'px';
56489
56965
  }
56490
56966
  function getElementRectWithOffset(el) {
56491
56967
  var offsetElementRect = el.getBoundingClientRect();
@@ -56552,12 +57028,13 @@ function setDragElementIcon(element, iconName) {
56552
57028
  elementIcon.appendChild(iconElement);
56553
57029
  }
56554
57030
  function clearElementChildren(element) {
56555
- while (element && element.firstChild) {
57031
+ while (element === null || element === void 0 ? void 0 : element.firstChild) {
56556
57032
  element.removeChild(element.firstChild);
56557
57033
  }
56558
57034
  }
56559
- function getScrollMoveOffset(tableBody, mouseMoveEvent) {
56560
- var clientY = mouseMoveEvent.clientY;
57035
+ function getScrollMoveOffset(tableBody, moveEvent) {
57036
+ var _getEventCoordinates2 = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(moveEvent),
57037
+ clientY = _getEventCoordinates2.clientY;
56561
57038
  var tableBodyClientRect = tableBody.getBoundingClientRect();
56562
57039
  var top = tableBodyClientRect.top,
56563
57040
  height = tableBodyClientRect.height;
@@ -56575,15 +57052,19 @@ function setDragText(element, dragText) {
56575
57052
  var stringNode = document.createTextNode(dragTextString);
56576
57053
  elementIcon.appendChild(stringNode);
56577
57054
  }
56578
- function isMouseOnDropTarget(mouseEvent, target) {
56579
- return target.contains(mouseEvent.target);
57055
+ function isPointerOnDropTarget(pointerEvent, target) {
57056
+ var eventTarget = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventTarget"])(pointerEvent);
57057
+ return target.contains(eventTarget);
56580
57058
  }
56581
57059
  function createDropTargetEvent(dropZone, event, dragItem, startDropZone) {
56582
57060
  var dropZoneTarget = dropZone.getContainer();
56583
57061
  var startDropZoneTagret = startDropZone.getContainer();
56584
57062
  var rect = dropZoneTarget.getBoundingClientRect();
56585
- var x = event.clientX - rect.left;
56586
- var y = event.clientY - rect.top;
57063
+ var _getEventCoordinates3 = Object(_utils_touchEventUtils__WEBPACK_IMPORTED_MODULE_12__["getEventCoordinates"])(event),
57064
+ clientX = _getEventCoordinates3.clientX,
57065
+ clientY = _getEventCoordinates3.clientY;
57066
+ var x = clientX - rect.left;
57067
+ var y = clientY - rect.top;
56587
57068
  var startDropZoneOptions = startDropZone.tableParams.getRowDragOptions();
56588
57069
  var startCommonParams = startDropZoneOptions === null || startDropZoneOptions === void 0 ? void 0 : startDropZoneOptions.commonParams;
56589
57070
  var targetEvent = {
@@ -56640,10 +57121,8 @@ var getLinePosition = function getLinePosition(_ref2) {
56640
57121
  paddingRight = _getElementSize3.paddingRight;
56641
57122
  var expandCellRect = cell.getBoundingClientRect();
56642
57123
  var _row$treeMetaKey2 = row[treeMetaKey],
56643
- rowKey = _row$treeMetaKey2.rowKey,
56644
57124
  depth = _row$treeMetaKey2.depth,
56645
- isLeaf = _row$treeMetaKey2.isLeaf,
56646
- expanded = _row$treeMetaKey2.expanded;
57125
+ isLeaf = _row$treeMetaKey2.isLeaf;
56647
57126
  var addWidth = isLeaf ? iconWidth + iconGap : 0;
56648
57127
  var indent = iconIndent + depth * indentSize + addWidth;
56649
57128
  var x = expandCellRect.x,
@@ -57879,6 +58358,89 @@ function treeSelect(opts) {
57879
58358
 
57880
58359
  /***/ }),
57881
58360
 
58361
+ /***/ "./node_modules/@kdcloudjs/table/es/table/pipeline/features/utils/touchEventUtils.js":
58362
+ /*!*******************************************************************************************!*\
58363
+ !*** ./node_modules/@kdcloudjs/table/es/table/pipeline/features/utils/touchEventUtils.js ***!
58364
+ \*******************************************************************************************/
58365
+ /*! exports provided: getEventCoordinates, getEventTarget, isTouchEvent, addPointerEventListeners, removePointerEventListeners, hasMovedEnough */
58366
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
58367
+
58368
+ "use strict";
58369
+ __webpack_require__.r(__webpack_exports__);
58370
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getEventCoordinates", function() { return getEventCoordinates; });
58371
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getEventTarget", function() { return getEventTarget; });
58372
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isTouchEvent", function() { return isTouchEvent; });
58373
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addPointerEventListeners", function() { return addPointerEventListeners; });
58374
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removePointerEventListeners", function() { return removePointerEventListeners; });
58375
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasMovedEnough", function() { return hasMovedEnough; });
58376
+ // 统一获取事件坐标的函数
58377
+ function getEventCoordinates(event) {
58378
+ if ('touches' in event && event.touches.length > 0) {
58379
+ return {
58380
+ clientX: event.touches[0].clientX,
58381
+ clientY: event.touches[0].clientY
58382
+ };
58383
+ } else if ('changedTouches' in event && event.changedTouches.length > 0) {
58384
+ return {
58385
+ clientX: event.changedTouches[0].clientX,
58386
+ clientY: event.changedTouches[0].clientY
58387
+ };
58388
+ } else {
58389
+ return {
58390
+ clientX: event.clientX,
58391
+ clientY: event.clientY
58392
+ };
58393
+ }
58394
+ }
58395
+ // 获取事件目标元素
58396
+ function getEventTarget(event) {
58397
+ if ('touches' in event && event.touches.length > 0) {
58398
+ return document.elementFromPoint(event.touches[0].clientX, event.touches[0].clientY);
58399
+ }
58400
+ // 处理touchend事件,此时touches为空,需要使用changedTouches
58401
+ if ('changedTouches' in event && event.changedTouches.length > 0) {
58402
+ return document.elementFromPoint(event.changedTouches[0].clientX, event.changedTouches[0].clientY);
58403
+ }
58404
+ return event.target;
58405
+ }
58406
+ // 判断是否为触摸事件
58407
+ function isTouchEvent(event) {
58408
+ return 'touches' in event;
58409
+ }
58410
+ // 为元素添加统一的指针事件监听器
58411
+ function addPointerEventListeners(element, handlers, isTouchStart) {
58412
+ if (isTouchStart) {
58413
+ element.addEventListener('touchmove', handlers.onPointerMove, {
58414
+ passive: false
58415
+ });
58416
+ element.addEventListener('touchend', handlers.onPointerUp, {
58417
+ passive: false
58418
+ });
58419
+ } else {
58420
+ element.addEventListener('mousemove', handlers.onPointerMove);
58421
+ element.addEventListener('mouseup', handlers.onPointerUp);
58422
+ }
58423
+ }
58424
+ // 移除统一的指针事件监听器
58425
+ function removePointerEventListeners(element, handlers, isTouchStart) {
58426
+ if (isTouchStart) {
58427
+ element.removeEventListener('touchmove', handlers.onPointerMove);
58428
+ element.removeEventListener('touchend', handlers.onPointerUp);
58429
+ } else {
58430
+ element.removeEventListener('mousemove', handlers.onPointerMove);
58431
+ element.removeEventListener('mouseup', handlers.onPointerUp);
58432
+ }
58433
+ }
58434
+ // 检查是否移动了足够的距离(用于区分点击和拖拽)
58435
+ function hasMovedEnough(startX, startY, endX, endY) {
58436
+ var threshold = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 5;
58437
+ var xDiff = endX - startX;
58438
+ var yDiff = endY - startY;
58439
+ return Math.sqrt(xDiff * xDiff + yDiff * yDiff) > threshold;
58440
+ }
58441
+
58442
+ /***/ }),
58443
+
57882
58444
  /***/ "./node_modules/@kdcloudjs/table/es/table/pipeline/index.js":
57883
58445
  /*!******************************************************************!*\
57884
58446
  !*** ./node_modules/@kdcloudjs/table/es/table/pipeline/index.js ***!