@kdcloudjs/table 1.2.2-canary.12 → 1.2.2-canary.13

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * @kdcloudjs/table v1.2.2-canary.11
3
+ * @kdcloudjs/table v1.2.2-canary.12
4
4
  *
5
5
  * Copyright 2020-present, Kingdee, Inc.
6
6
  * All rights reserved.
@@ -806,6 +806,89 @@ var locale = {
806
806
 
807
807
  /***/ }),
808
808
 
809
+ /***/ "./components/table/base/BlankComponent.tsx":
810
+ /*!**************************************************!*\
811
+ !*** ./components/table/base/BlankComponent.tsx ***!
812
+ \**************************************************/
813
+ /*! exports provided: TopBlank, BottomBlank */
814
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
815
+
816
+ "use strict";
817
+ __webpack_require__.r(__webpack_exports__);
818
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopBlank", function() { return TopBlank; });
819
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BottomBlank", function() { return BottomBlank; });
820
+ /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
821
+ /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
822
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
823
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
824
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
825
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
826
+ /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles */ "./components/table/base/styles.ts");
827
+
828
+
829
+
830
+
831
+ var TopBlankComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["forwardRef"])(function (_ref, ref) {
832
+ var initialHeight = _ref.height;
833
+ var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(initialHeight),
834
+ _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
835
+ height = _useState2[0],
836
+ setHeight = _useState2[1];
837
+ Object(react__WEBPACK_IMPORTED_MODULE_1__["useImperativeHandle"])(ref, function () {
838
+ return {
839
+ updateHeight: function updateHeight(newHeight) {
840
+ if (height !== newHeight) {
841
+ setHeight(newHeight);
842
+ }
843
+ }
844
+ };
845
+ }, [height]);
846
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
847
+ style: {
848
+ height: height
849
+ }
850
+ });
851
+ });
852
+ TopBlankComponent.displayName = 'TopBlank';
853
+ var BottomBlankComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["forwardRef"])(function (_ref2, ref) {
854
+ var initialHeight = _ref2.height,
855
+ className = _ref2.className;
856
+ var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(initialHeight),
857
+ _useState4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState3, 2),
858
+ height = _useState4[0],
859
+ setHeight = _useState4[1];
860
+ Object(react__WEBPACK_IMPORTED_MODULE_1__["useImperativeHandle"])(ref, function () {
861
+ return {
862
+ updateHeight: function updateHeight(newHeight) {
863
+ if (height !== newHeight) {
864
+ setHeight(newHeight);
865
+ }
866
+ }
867
+ };
868
+ }, [height]);
869
+ if (height <= 0) {
870
+ return null;
871
+ }
872
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
873
+ key: "bottom-blank",
874
+ className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_styles__WEBPACK_IMPORTED_MODULE_3__["Classes"].virtualBlank, 'bottom', className),
875
+ style: {
876
+ height: height
877
+ }
878
+ });
879
+ });
880
+ BottomBlankComponent.displayName = 'BottomBlank';
881
+
882
+ // 使用 memo 优化,只有当 height 或 className 改变时才重新渲染
883
+ var TopBlank = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["memo"])(TopBlankComponent, function (prevProps, nextProps) {
884
+ return prevProps.height === nextProps.height && prevProps.className === nextProps.className;
885
+ });
886
+ var BottomBlank = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_1__["memo"])(BottomBlankComponent, function (prevProps, nextProps) {
887
+ return prevProps.height === nextProps.height && prevProps.className === nextProps.className;
888
+ });
889
+
890
+ /***/ }),
891
+
809
892
  /***/ "./components/table/base/calculations.tsx":
810
893
  /*!************************************************!*\
811
894
  !*** ./components/table/base/calculations.tsx ***!
@@ -1733,6 +1816,246 @@ function TableHeader(_ref2) {
1733
1816
 
1734
1817
  /***/ }),
1735
1818
 
1819
+ /***/ "./components/table/base/helpers/FastScrollManager.ts":
1820
+ /*!************************************************************!*\
1821
+ !*** ./components/table/base/helpers/FastScrollManager.ts ***!
1822
+ \************************************************************/
1823
+ /*! exports provided: FastScrollManager */
1824
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1825
+
1826
+ "use strict";
1827
+ __webpack_require__.r(__webpack_exports__);
1828
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FastScrollManager", function() { return FastScrollManager; });
1829
+ /* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js");
1830
+ /* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);
1831
+ /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
1832
+ /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);
1833
+ /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
1834
+ /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);
1835
+ /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
1836
+ /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);
1837
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js");
1838
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);
1839
+ /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
1840
+ /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);
1841
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js");
1842
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);
1843
+ /* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
1844
+ /* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_7__);
1845
+ /* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
1846
+ /* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_8__);
1847
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
1848
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9__);
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1860
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1861
+ /**
1862
+ * 快速滚动管理器
1863
+ * 抽取 BaseTable 中的快速滚动相关逻辑
1864
+ */
1865
+
1866
+ var FastScrollManager = /*#__PURE__*/function () {
1867
+ // 快速滚动状态
1868
+
1869
+ // 快速滚动标志 - 作为私有属性立即更新
1870
+
1871
+ // 定时器句柄 - 作为私有属性管理
1872
+
1873
+ // 配置参数
1874
+
1875
+ function FastScrollManager(callbacks) {
1876
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1877
+ _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_7___default()(this, FastScrollManager);
1878
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default()(this, "state", {
1879
+ lastScrollTime: 0,
1880
+ scrollVelocity: 0,
1881
+ lastOffsetY: 0
1882
+ });
1883
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default()(this, "isFastScrolling", false);
1884
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default()(this, "fastScrollEndTimer", void 0);
1885
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default()(this, "config", void 0);
1886
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_9___default()(this, "callbacks", void 0);
1887
+ this.callbacks = callbacks;
1888
+
1889
+ // 合并默认配置
1890
+ this.config = _objectSpread({
1891
+ overscanSize: 100,
1892
+ velocityThreshold: 3,
1893
+ distanceMultiplier: 3,
1894
+ fastScrollEndDelayHigh: 200,
1895
+ fastScrollEndDelayNormal: 150,
1896
+ highVelocityThreshold: 5
1897
+ }, config);
1898
+ }
1899
+
1900
+ /**
1901
+ * 检测是否接近底部(剩余滚动距离少于两屏)
1902
+ */
1903
+ _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_8___default()(FastScrollManager, [{
1904
+ key: "isNearBottom",
1905
+ value: function isNearBottom(currentScrollTop, maxRenderHeight, totalScrollHeight) {
1906
+ var remainingScrollDistance = totalScrollHeight - currentScrollTop - maxRenderHeight;
1907
+ return remainingScrollDistance < maxRenderHeight;
1908
+ }
1909
+
1910
+ /**
1911
+ * 处理滚动事件 - 检测和处理快速滚动
1912
+ */
1913
+ }, {
1914
+ key: "handleScrollEvent",
1915
+ value: function handleScrollEvent(sizeAndOffset, currentState, dataLength, totalScrollHeight) {
1916
+ var currentTime = performance.now();
1917
+ var deltaY = Math.abs(sizeAndOffset.offsetY - this.state.lastOffsetY);
1918
+ var deltaTime = currentTime - this.state.lastScrollTime;
1919
+
1920
+ // 计算滚动速度 (像素/毫秒)
1921
+ this.state.scrollVelocity = deltaTime > 0 ? deltaY / deltaTime : 0;
1922
+
1923
+ // 检测是否接近底部
1924
+ var isNearBottom = this.isNearBottom(sizeAndOffset.offsetY, sizeAndOffset.maxRenderHeight, totalScrollHeight);
1925
+
1926
+ // 如果正在快速滚动但接近底部,提前结束快速滚动
1927
+ if (this.isFastScrolling && isNearBottom) {
1928
+ this.endFastScrolling(sizeAndOffset);
1929
+ return; // 让正常渲染逻辑接管
1930
+ }
1931
+
1932
+ // 快速滚动判断条件:
1933
+ // 1. 滚动距离超过阈值 && 滚动速度超过阈值
1934
+ // 2. 当前未在快速滚动状态
1935
+ // 3. 未接近底部边界
1936
+ var isSignificantChange = deltaY > this.config.overscanSize * this.config.distanceMultiplier;
1937
+ var isHighVelocity = this.state.scrollVelocity > this.config.velocityThreshold;
1938
+ var shouldStartFastScroll = (isSignificantChange || isHighVelocity) && !this.isFastScrolling && !isNearBottom; // 接近底部时不启动快速滚动
1939
+
1940
+ if (shouldStartFastScroll) {
1941
+ this.startFastScrolling(currentState, dataLength);
1942
+ }
1943
+
1944
+ // 重置快速滚动结束定时器
1945
+ if (this.isFastScrolling) {
1946
+ this.resetFastScrollEndTimer(sizeAndOffset);
1947
+ }
1948
+
1949
+ // 更新记录
1950
+ this.state.lastOffsetY = sizeAndOffset.offsetY;
1951
+ this.state.lastScrollTime = currentTime;
1952
+ }
1953
+
1954
+ /**
1955
+ * 开始快速滚动
1956
+ */
1957
+ }, {
1958
+ key: "startFastScrolling",
1959
+ value: function startFastScrolling(currentState, dataLength) {
1960
+ this.isFastScrolling = true;
1961
+
1962
+ // 获取当前渲染范围作为缓存
1963
+ var currentVerticalRange = this.callbacks.getCurrentRenderRange(currentState.offsetY, currentState.maxRenderHeight, dataLength);
1964
+
1965
+ // 通知外部开始快速滚动
1966
+ this.callbacks.onFastScrollStart({
1967
+ offsetY: currentState.offsetY,
1968
+ maxRenderHeight: currentState.maxRenderHeight,
1969
+ maxRenderWidth: currentState.maxRenderWidth,
1970
+ verticalRenderRange: currentVerticalRange
1971
+ });
1972
+ }
1973
+
1974
+ /**
1975
+ * 重置快速滚动结束定时器
1976
+ */
1977
+ }, {
1978
+ key: "resetFastScrollEndTimer",
1979
+ value: function resetFastScrollEndTimer(sizeAndOffset) {
1980
+ var _this = this;
1981
+ if (this.fastScrollEndTimer) {
1982
+ clearTimeout(this.fastScrollEndTimer);
1983
+ }
1984
+ var waitTime = this.state.scrollVelocity > this.config.highVelocityThreshold ? this.config.fastScrollEndDelayHigh : this.config.fastScrollEndDelayNormal;
1985
+ this.fastScrollEndTimer = window.setTimeout(function () {
1986
+ _this.endFastScrolling(sizeAndOffset);
1987
+ }, waitTime);
1988
+ }
1989
+
1990
+ /**
1991
+ * 结束快速滚动
1992
+ */
1993
+ }, {
1994
+ key: "endFastScrolling",
1995
+ value: function endFastScrolling(sizeAndOffset) {
1996
+ this.isFastScrolling = false;
1997
+ this.fastScrollEndTimer = undefined;
1998
+
1999
+ // 通知外部结束快速滚动
2000
+ this.callbacks.onFastScrollEnd(sizeAndOffset);
2001
+ }
2002
+
2003
+ /**
2004
+ * 清理资源
2005
+ */
2006
+ }, {
2007
+ key: "cleanup",
2008
+ value: function cleanup() {
2009
+ if (this.fastScrollEndTimer) {
2010
+ clearTimeout(this.fastScrollEndTimer);
2011
+ }
2012
+ }
2013
+
2014
+ /**
2015
+ * 获取当前是否处于快速滚动状态
2016
+ */
2017
+ }, {
2018
+ key: "getIsFastScrolling",
2019
+ value: function getIsFastScrolling() {
2020
+ return this.isFastScrolling;
2021
+ }
2022
+
2023
+ /**
2024
+ * 获取当前滚动速度
2025
+ */
2026
+ }, {
2027
+ key: "getScrollVelocity",
2028
+ value: function getScrollVelocity() {
2029
+ return this.state.scrollVelocity;
2030
+ }
2031
+
2032
+ /**
2033
+ * 清理资源
2034
+ */
2035
+ }, {
2036
+ key: "destroy",
2037
+ value: function destroy() {
2038
+ if (this.fastScrollEndTimer) {
2039
+ clearTimeout(this.fastScrollEndTimer);
2040
+ this.fastScrollEndTimer = undefined;
2041
+ }
2042
+ this.isFastScrolling = false;
2043
+ }
2044
+
2045
+ /**
2046
+ * 获取当前配置
2047
+ */
2048
+ }, {
2049
+ key: "getConfig",
2050
+ value: function getConfig() {
2051
+ return _objectSpread({}, this.config);
2052
+ }
2053
+ }]);
2054
+ return FastScrollManager;
2055
+ }();
2056
+
2057
+ /***/ }),
2058
+
1736
2059
  /***/ "./components/table/base/helpers/SpanManager.ts":
1737
2060
  /*!******************************************************!*\
1738
2061
  !*** ./components/table/base/helpers/SpanManager.ts ***!
@@ -3408,13 +3731,15 @@ __webpack_require__.r(__webpack_exports__);
3408
3731
  /* harmony import */ var _helpers_getRichVisibleRectsStream__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./helpers/getRichVisibleRectsStream */ "./components/table/base/helpers/getRichVisibleRectsStream.ts");
3409
3732
  /* harmony import */ var _helpers_rowHeightManager__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./helpers/rowHeightManager */ "./components/table/base/helpers/rowHeightManager.ts");
3410
3733
  /* harmony import */ var _helpers_TableDOMUtils__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./helpers/TableDOMUtils */ "./components/table/base/helpers/TableDOMUtils.tsx");
3411
- /* harmony import */ var _html_table__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./html-table */ "./components/table/base/html-table.tsx");
3412
- /* harmony import */ var _loading__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./loading */ "./components/table/base/loading.tsx");
3413
- /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./styles */ "./components/table/base/styles.ts");
3414
- /* harmony import */ var _globalStyleComponent__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./globalStyleComponent */ "./components/table/base/globalStyleComponent.tsx");
3415
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./utils */ "./components/table/base/utils.tsx");
3416
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../utils */ "./components/table/utils/index.tsx");
3417
- /* harmony import */ var _renderTemplates__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./renderTemplates */ "./components/table/base/renderTemplates.tsx");
3734
+ /* harmony import */ var _helpers_FastScrollManager__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./helpers/FastScrollManager */ "./components/table/base/helpers/FastScrollManager.ts");
3735
+ /* harmony import */ var _html_table__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./html-table */ "./components/table/base/html-table.tsx");
3736
+ /* harmony import */ var _loading__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./loading */ "./components/table/base/loading.tsx");
3737
+ /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./styles */ "./components/table/base/styles.ts");
3738
+ /* harmony import */ var _globalStyleComponent__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./globalStyleComponent */ "./components/table/base/globalStyleComponent.tsx");
3739
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./utils */ "./components/table/base/utils.tsx");
3740
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../utils */ "./components/table/utils/index.tsx");
3741
+ /* harmony import */ var _renderTemplates__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./renderTemplates */ "./components/table/base/renderTemplates.tsx");
3742
+ /* harmony import */ var _BlankComponent__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./BlankComponent */ "./components/table/base/BlankComponent.tsx");
3418
3743
 
3419
3744
 
3420
3745
 
@@ -3469,11 +3794,13 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
3469
3794
 
3470
3795
 
3471
3796
 
3797
+
3798
+
3472
3799
  var propsDotEmptyContentDeprecatedWarned = false;
3473
3800
  function warnPropsDotEmptyContentIsDeprecated() {
3474
3801
  if (!propsDotEmptyContentDeprecatedWarned) {
3475
3802
  propsDotEmptyContentDeprecatedWarned = true;
3476
- _utils__WEBPACK_IMPORTED_MODULE_45__["console"].warn('BaseTable props.emptyContent 已经过时,请使用 props.components.EmptyContent 来自定义数据为空时的表格表现');
3803
+ _utils__WEBPACK_IMPORTED_MODULE_46__["console"].warn('BaseTable props.emptyContent 已经过时,请使用 props.components.EmptyContent 来自定义数据为空时的表格表现');
3477
3804
  }
3478
3805
  }
3479
3806
  var BaseTable = /*#__PURE__*/function (_React$Component) {
@@ -3493,6 +3820,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3493
3820
  _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "hasScrollY", false);
3494
3821
  _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "resizeObserver", void 0);
3495
3822
  _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "offsetY", 0);
3823
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "fastScrollManager", void 0);
3824
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "topBlankRef", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createRef());
3825
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "bottomBlankRef", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createRef());
3496
3826
  _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_18___default()(_this), "handleRowMouseEnter", function (e) {
3497
3827
  var nodeList = _this.domHelper.getRowNodeListByEvent(e);
3498
3828
  nodeList && nodeList.forEach(function (node) {
@@ -3512,12 +3842,11 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3512
3842
  getRowProps = _this$props.getRowProps,
3513
3843
  primaryKey = _this$props.primaryKey,
3514
3844
  isLoading = _this$props.isLoading,
3515
- emptyCellHeight = _this$props.emptyCellHeight,
3516
- footerDataSource = _this$props.footerDataSource;
3517
- var tableBodyClassName = classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].tableBody, _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].horizontalScrollContainer);
3845
+ emptyCellHeight = _this$props.emptyCellHeight;
3846
+ var tableBodyClassName = classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].tableBody, _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].horizontalScrollContainer);
3518
3847
 
3519
3848
  // 低版本Edge浏览器下也会出现双滚动条,这里设置overflow: 'hidden',先去掉edge的方向键控制滚动条的功能
3520
- var virtualStyle = _utils__WEBPACK_IMPORTED_MODULE_45__["browserType"].isIE || _utils__WEBPACK_IMPORTED_MODULE_45__["browserType"].isEdge ? {
3849
+ var virtualStyle = _utils__WEBPACK_IMPORTED_MODULE_46__["browserType"].isIE || _utils__WEBPACK_IMPORTED_MODULE_46__["browserType"].isEdge ? {
3521
3850
  overflow: 'hidden'
3522
3851
  } : {};
3523
3852
  if (dataSource.length === 0) {
@@ -3534,7 +3863,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3534
3863
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3535
3864
  className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(tableBodyClassName, 'empty')
3536
3865
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3537
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].virtual,
3866
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].virtual,
3538
3867
  tabIndex: -1,
3539
3868
  style: virtualStyle
3540
3869
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_empty__WEBPACK_IMPORTED_MODULE_35__["EmptyHtmlTable"], {
@@ -3549,7 +3878,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3549
3878
  bottomBlank = _info$verticalRenderR.bottomBlank,
3550
3879
  topBlank = _info$verticalRenderR.topBlank,
3551
3880
  bottomIndex = _info$verticalRenderR.bottomIndex;
3552
- var renderBody = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_46__["default"])('body');
3881
+ var renderBody = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_47__["default"])('body');
3553
3882
  if (typeof renderBody === 'function') {
3554
3883
  return renderBody(info, _this.props, {
3555
3884
  rowProps: {
@@ -3561,33 +3890,30 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3561
3890
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3562
3891
  className: tableBodyClassName
3563
3892
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3564
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].virtual,
3893
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].virtual,
3565
3894
  tabIndex: -1,
3566
3895
  style: virtualStyle
3567
- }, topBlank > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3568
- key: "top-blank",
3569
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].virtualBlank, 'top'),
3570
- style: {
3571
- height: topBlank
3572
- }
3573
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_40__["HtmlTable"], {
3896
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_BlankComponent__WEBPACK_IMPORTED_MODULE_48__["TopBlank"], {
3897
+ ref: _this.topBlankRef,
3898
+ height: topBlank // 直接使用
3899
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_41__["HtmlTable"], {
3574
3900
  tbodyHtmlTag: "tbody",
3575
3901
  getRowProps: getRowProps,
3576
3902
  primaryKey: primaryKey,
3577
- data: dataSource.slice(topIndex, bottomIndex),
3903
+ data: dataSource.slice(topIndex, bottomIndex) // 直接使用
3904
+ ,
3578
3905
  horizontalRenderInfo: info,
3579
3906
  verticalRenderInfo: {
3580
3907
  first: 0,
3581
3908
  offset: topIndex,
3909
+ // 直接使用
3582
3910
  limit: bottomIndex,
3911
+ // 直接使用
3583
3912
  last: dataSource.length - 1
3584
3913
  }
3585
- }), bottomBlank > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3586
- key: "bottom-blank",
3587
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].virtualBlank, 'bottom'),
3588
- style: {
3589
- height: bottomBlank
3590
- }
3914
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_BlankComponent__WEBPACK_IMPORTED_MODULE_48__["BottomBlank"], {
3915
+ ref: _this.bottomBlankRef,
3916
+ height: bottomBlank // 直接使用
3591
3917
  })));
3592
3918
  });
3593
3919
  _this.state = {
@@ -3602,6 +3928,27 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3602
3928
  maxRenderHeight: 600,
3603
3929
  maxRenderWidth: 800
3604
3930
  };
3931
+
3932
+ // 初始化快速滚动管理器
3933
+ var fastScrollCallbacks = {
3934
+ onFastScrollStart: function onFastScrollStart(renderData) {
3935
+ _this.setState({
3936
+ previousRenderData: renderData
3937
+ });
3938
+ },
3939
+ onFastScrollEnd: function onFastScrollEnd(scrollData) {
3940
+ _this.setState({
3941
+ previousRenderData: undefined,
3942
+ offsetY: scrollData.offsetY,
3943
+ maxRenderHeight: scrollData.maxRenderHeight,
3944
+ maxRenderWidth: scrollData.maxRenderWidth
3945
+ });
3946
+ },
3947
+ getCurrentRenderRange: function getCurrentRenderRange(offsetY, maxRenderHeight, dataLength) {
3948
+ return _this.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, dataLength);
3949
+ }
3950
+ };
3951
+ _this.fastScrollManager = new _helpers_FastScrollManager__WEBPACK_IMPORTED_MODULE_40__["FastScrollManager"](fastScrollCallbacks);
3605
3952
  return _this;
3606
3953
  }
3607
3954
 
@@ -3611,9 +3958,13 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3611
3958
  value:
3612
3959
  // 最近一次渲染的计算结果缓存
3613
3960
 
3961
+ // 快速滚动管理器
3962
+
3963
+ // Blank组件的引用,用于快速滚动时直接更新
3964
+
3614
3965
  /** @deprecated BaseTable.getDoms() 已经过时,请勿调用 */
3615
3966
  function getDoms() {
3616
- _utils__WEBPACK_IMPORTED_MODULE_45__["console"].warn('[kd-table] BaseTable.getDoms() 已经过时');
3967
+ _utils__WEBPACK_IMPORTED_MODULE_46__["console"].warn('[kd-table] BaseTable.getDoms() 已经过时');
3617
3968
  return this.domHelper;
3618
3969
  }
3619
3970
  }, {
@@ -3686,7 +4037,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3686
4037
  var _this$props4 = this.props,
3687
4038
  stickyTop = _this$props4.stickyTop,
3688
4039
  hasHeader = _this$props4.hasHeader;
3689
- var renderHeader = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_46__["default"])('header');
4040
+ var renderHeader = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_47__["default"])('header');
3690
4041
  var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
3691
4042
  if (typeof renderHeader === 'function') {
3692
4043
  return renderHeader(info, this.props, {
@@ -3694,7 +4045,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3694
4045
  });
3695
4046
  }
3696
4047
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3697
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].tableHeader, 'no-scrollbar'),
4048
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].tableHeader, 'no-scrollbar'),
3698
4049
  style: {
3699
4050
  top: stickyTop === 0 ? undefined : stickyTop,
3700
4051
  display: hasHeader ? undefined : 'none'
@@ -3703,7 +4054,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3703
4054
  info: info,
3704
4055
  stickyRightOffset: stickyRightOffset
3705
4056
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3706
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].verticalScrollPlaceholder,
4057
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].verticalScrollPlaceholder,
3707
4058
  style: this.hasScrollY ? {
3708
4059
  width: this.getScrollBarWidth()
3709
4060
  } : undefined
@@ -3713,7 +4064,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3713
4064
  key: "updateOffsetX",
3714
4065
  value: function updateOffsetX(nextOffsetX) {
3715
4066
  if (this.lastInfo.useVirtual.horizontal) {
3716
- if (Math.abs(nextOffsetX - this.state.offsetX) >= _utils__WEBPACK_IMPORTED_MODULE_44__["OVERSCAN_SIZE"] / 2) {
4067
+ if (Math.abs(nextOffsetX - this.state.offsetX) >= _utils__WEBPACK_IMPORTED_MODULE_45__["OVERSCAN_SIZE"] / 2) {
3717
4068
  this.setState({
3718
4069
  offsetX: nextOffsetX
3719
4070
  });
@@ -3730,7 +4081,6 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3730
4081
  }, {
3731
4082
  key: "syncHorizontalScroll",
3732
4083
  value: function syncHorizontalScroll(x) {
3733
- var direction = this.props.direction;
3734
4084
  var _x = Math.abs(x);
3735
4085
  this.updateOffsetX(_x);
3736
4086
  var flat = this.lastInfo.flat;
@@ -3758,11 +4108,19 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3758
4108
  }, {
3759
4109
  key: "getVerticalRenderRange",
3760
4110
  value: function getVerticalRenderRange(useVirtual) {
3761
- var dataSource = this.props.dataSource;
4111
+ var _this$props5 = this.props,
4112
+ dataSource = _this$props5.dataSource,
4113
+ isLowPerformance = _this$props5.isLowPerformance;
3762
4114
  var _this$state = this.state,
3763
4115
  offsetY = _this$state.offsetY,
3764
- maxRenderHeight = _this$state.maxRenderHeight;
4116
+ maxRenderHeight = _this$state.maxRenderHeight,
4117
+ previousRenderData = _this$state.previousRenderData;
3765
4118
  var rowCount = dataSource.length;
4119
+
4120
+ // 只有在启用快速滚动时才使用 FastScrollManager 的判断
4121
+ if (isLowPerformance && this.fastScrollManager.getIsFastScrolling() && previousRenderData !== null && previousRenderData !== void 0 && previousRenderData.verticalRenderRange) {
4122
+ return previousRenderData.verticalRenderRange;
4123
+ }
3766
4124
  if (useVirtual.vertical) {
3767
4125
  return this.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, rowCount);
3768
4126
  } else {
@@ -3773,14 +4131,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3773
4131
  key: "renderTableFooter",
3774
4132
  value: function renderTableFooter(info) {
3775
4133
  // console.log('render footer')
3776
- var _this$props5 = this.props,
3777
- _this$props5$footerDa = _this$props5.footerDataSource,
3778
- footerDataSource = _this$props5$footerDa === void 0 ? [] : _this$props5$footerDa,
3779
- getRowProps = _this$props5.getRowProps,
3780
- primaryKey = _this$props5.primaryKey,
3781
- stickyBottom = _this$props5.stickyBottom;
4134
+ var _this$props6 = this.props,
4135
+ _this$props6$footerDa = _this$props6.footerDataSource,
4136
+ footerDataSource = _this$props6$footerDa === void 0 ? [] : _this$props6$footerDa,
4137
+ getRowProps = _this$props6.getRowProps,
4138
+ primaryKey = _this$props6.primaryKey,
4139
+ stickyBottom = _this$props6.stickyBottom;
3782
4140
  var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
3783
- var renderFooter = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_46__["default"])('footer');
4141
+ var renderFooter = Object(_renderTemplates__WEBPACK_IMPORTED_MODULE_47__["default"])('footer');
3784
4142
  if (typeof renderFooter === 'function') {
3785
4143
  return renderFooter(info, this.props, {
3786
4144
  rowProps: {
@@ -3791,11 +4149,11 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3791
4149
  });
3792
4150
  }
3793
4151
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3794
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].tableFooter, _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].horizontalScrollContainer),
4152
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].tableFooter, _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].horizontalScrollContainer),
3795
4153
  style: {
3796
4154
  bottom: stickyBottom === 0 ? undefined : stickyBottom
3797
4155
  }
3798
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_40__["HtmlTable"], {
4156
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_html_table__WEBPACK_IMPORTED_MODULE_41__["HtmlTable"], {
3799
4157
  tbodyHtmlTag: "tfoot",
3800
4158
  data: footerDataSource,
3801
4159
  horizontalRenderInfo: info,
@@ -3809,7 +4167,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3809
4167
  limit: Infinity
3810
4168
  }
3811
4169
  }), footerDataSource.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3812
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].verticalScrollPlaceholder,
4170
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].verticalScrollPlaceholder,
3813
4171
  style: this.hasScrollY ? {
3814
4172
  width: this.getScrollBarWidth(),
3815
4173
  visibility: 'initial'
@@ -3822,49 +4180,49 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3822
4180
  var _ref, _ref2;
3823
4181
  var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
3824
4182
  // console.log('render LockShadows')
3825
- var leftLockShadowWidth = info.leftLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_42__["LOCK_SHADOW_PADDING"];
3826
- var rightLockShadownWidth = info.rightLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_42__["LOCK_SHADOW_PADDING"] + stickyRightOffset;
4183
+ var leftLockShadowWidth = info.leftLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_43__["LOCK_SHADOW_PADDING"];
4184
+ var rightLockShadownWidth = info.rightLockTotalWidth + _styles__WEBPACK_IMPORTED_MODULE_43__["LOCK_SHADOW_PADDING"] + stickyRightOffset;
3827
4185
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_31___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3828
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].lockShadowMask,
3829
- style: (_ref = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref, Object(_utils__WEBPACK_IMPORTED_MODULE_44__["swapRTLDirection"])(info.direction, 'left'), 0), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref, "width", leftLockShadowWidth), _ref)
4186
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].lockShadowMask,
4187
+ style: (_ref = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref, Object(_utils__WEBPACK_IMPORTED_MODULE_45__["swapRTLDirection"])(info.direction, 'left'), 0), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref, "width", leftLockShadowWidth), _ref)
3830
4188
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3831
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].leftLockShadow)
4189
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].leftLockShadow)
3832
4190
  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3833
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].lockShadowMask,
3834
- style: (_ref2 = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref2, Object(_utils__WEBPACK_IMPORTED_MODULE_44__["swapRTLDirection"])(info.direction, 'right'), 0), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref2, "width", rightLockShadownWidth), _ref2)
4191
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].lockShadowMask,
4192
+ style: (_ref2 = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref2, Object(_utils__WEBPACK_IMPORTED_MODULE_45__["swapRTLDirection"])(info.direction, 'right'), 0), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_ref2, "width", rightLockShadownWidth), _ref2)
3835
4193
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3836
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].rightLockShadow)
4194
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].lockShadow, _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].rightLockShadow)
3837
4195
  })));
3838
4196
  }
3839
4197
  }, {
3840
4198
  key: "renderStickyScroll",
3841
4199
  value: function renderStickyScroll(info) {
3842
4200
  // console.log('render stickyscroll')
3843
- var _this$props6 = this.props,
3844
- hasStickyScroll = _this$props6.hasStickyScroll,
3845
- stickyBottom = _this$props6.stickyBottom;
4201
+ var _this$props7 = this.props,
4202
+ hasStickyScroll = _this$props7.hasStickyScroll,
4203
+ stickyBottom = _this$props7.stickyBottom;
3846
4204
  var hasScroll = this.state.hasScroll;
3847
4205
  var isScroll = hasStickyScroll && hasScroll;
3848
4206
  var stickyScrollContainerStyle = this.getStickyScrollContainerStyle();
3849
4207
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3850
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].horizontalScrollContainer, _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].horizontalStickyScrollContainer),
4208
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].horizontalScrollContainer, _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].horizontalStickyScrollContainer),
3851
4209
  style: stickyScrollContainerStyle
3852
4210
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3853
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].horizontalScrollLeftSpacer),
4211
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].horizontalScrollLeftSpacer),
3854
4212
  style: {
3855
4213
  width: info.leftLockTotalWidth,
3856
4214
  display: isScroll ? 'block' : 'none'
3857
4215
  }
3858
4216
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3859
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].stickyScroll),
4217
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].stickyScroll),
3860
4218
  style: {
3861
4219
  display: isScroll ? 'block' : 'none',
3862
4220
  bottom: stickyBottom
3863
4221
  }
3864
4222
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3865
- className: _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].stickyScrollItem
4223
+ className: _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].stickyScrollItem
3866
4224
  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", {
3867
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].horizontalScrollRightSpacer),
4225
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].horizontalScrollRightSpacer),
3868
4226
  style: {
3869
4227
  width: info.rightLockTotalWidth,
3870
4228
  display: isScroll ? 'block' : 'none'
@@ -3874,14 +4232,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3874
4232
  }, {
3875
4233
  key: "getScrollBarWidth",
3876
4234
  value: function getScrollBarWidth() {
3877
- return this.props.scrollbarWidth || Object(_utils__WEBPACK_IMPORTED_MODULE_44__["getScrollbarSize"])().width;
4235
+ return this.props.scrollbarWidth || Object(_utils__WEBPACK_IMPORTED_MODULE_45__["getScrollbarSize"])().width;
3878
4236
  }
3879
4237
  }, {
3880
4238
  key: "getStickyScrollContainerStyle",
3881
4239
  value: function getStickyScrollContainerStyle() {
3882
- var _this$props7 = this.props,
3883
- hasStickyScroll = _this$props7.hasStickyScroll,
3884
- stickyScrollHeight = _this$props7.stickyScrollHeight;
4240
+ var _this$props8 = this.props,
4241
+ hasStickyScroll = _this$props8.hasStickyScroll,
4242
+ stickyScrollHeight = _this$props8.stickyScrollHeight;
3885
4243
  var hasScroll = this.state.hasScroll;
3886
4244
  var isScroll = hasStickyScroll && hasScroll;
3887
4245
  var height = stickyScrollHeight === 'auto' ? this.getScrollBarWidth() : stickyScrollHeight;
@@ -3899,23 +4257,23 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3899
4257
  // console.log('render table')
3900
4258
  var info = Object(_calculations__WEBPACK_IMPORTED_MODULE_34__["calculateRenderInfo"])(this);
3901
4259
  this.lastInfo = info;
3902
- var _this$props8 = this.props,
3903
- dataSource = _this$props8.dataSource,
3904
- className = _this$props8.className,
3905
- style = _this$props8.style,
3906
- hasHeader = _this$props8.hasHeader,
3907
- useOuterBorder = _this$props8.useOuterBorder,
3908
- isStickyHead = _this$props8.isStickyHead,
3909
- isStickyHeader = _this$props8.isStickyHeader,
3910
- isStickyFooter = _this$props8.isStickyFooter,
3911
- isLoading = _this$props8.isLoading,
3912
- getTableProps = _this$props8.getTableProps,
3913
- footerDataSource = _this$props8.footerDataSource,
3914
- components = _this$props8.components,
3915
- bordered = _this$props8.bordered,
3916
- direction = _this$props8.direction;
4260
+ var _this$props9 = this.props,
4261
+ dataSource = _this$props9.dataSource,
4262
+ className = _this$props9.className,
4263
+ style = _this$props9.style,
4264
+ hasHeader = _this$props9.hasHeader,
4265
+ useOuterBorder = _this$props9.useOuterBorder,
4266
+ isStickyHead = _this$props9.isStickyHead,
4267
+ isStickyHeader = _this$props9.isStickyHeader,
4268
+ isStickyFooter = _this$props9.isStickyFooter,
4269
+ isLoading = _this$props9.isLoading,
4270
+ getTableProps = _this$props9.getTableProps,
4271
+ footerDataSource = _this$props9.footerDataSource,
4272
+ components = _this$props9.components,
4273
+ bordered = _this$props9.bordered,
4274
+ direction = _this$props9.direction;
3917
4275
  info.direction = direction;
3918
- var artTableWrapperClassName = classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].artTableWrapper, (_cx = {
4276
+ var artTableWrapperClassName = classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].artTableWrapper, (_cx = {
3919
4277
  'use-outer-border': useOuterBorder,
3920
4278
  empty: dataSource.length === 0,
3921
4279
  lock: info.hasLockColumn,
@@ -3923,30 +4281,30 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3923
4281
  'sticky-header': isStickyHeader !== null && isStickyHeader !== void 0 ? isStickyHeader : isStickyHead,
3924
4282
  'has-footer': footerDataSource.length > 0,
3925
4283
  'sticky-footer': isStickyFooter
3926
- }, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_cx, _styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].artTableBordered, bordered), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_cx, 'ie-polyfill-wrapper', _utils__WEBPACK_IMPORTED_MODULE_45__["browserType"].isIE), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_cx, 'sticky-polyfill-wrapper', Object(_utils__WEBPACK_IMPORTED_MODULE_45__["isStickyUIDegrade"])()), _cx), className);
4284
+ }, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_cx, _styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].artTableBordered, bordered), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_cx, 'ie-polyfill-wrapper', _utils__WEBPACK_IMPORTED_MODULE_46__["browserType"].isIE), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(_cx, 'sticky-polyfill-wrapper', Object(_utils__WEBPACK_IMPORTED_MODULE_46__["isStickyUIDegrade"])()), _cx), className);
3927
4285
  var artTableWrapperProps = _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()({
3928
4286
  className: artTableWrapperClassName,
3929
4287
  style: _objectSpread(_objectSpread({}, style), {}, {
3930
4288
  direction: direction
3931
4289
  })
3932
- }, _utils__WEBPACK_IMPORTED_MODULE_44__["STYLED_REF_PROP"], this.artTableWrapperRef);
4290
+ }, _utils__WEBPACK_IMPORTED_MODULE_45__["STYLED_REF_PROP"], this.artTableWrapperRef);
3933
4291
  var tableProps = getTableProps() || {};
3934
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_31___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_globalStyleComponent__WEBPACK_IMPORTED_MODULE_43__["default"], {
4292
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_31___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_globalStyleComponent__WEBPACK_IMPORTED_MODULE_44__["default"], {
3935
4293
  direction: info.direction
3936
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_styles__WEBPACK_IMPORTED_MODULE_42__["StyledArtTableWrapper"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_15___default()({}, artTableWrapperProps, {
4294
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_styles__WEBPACK_IMPORTED_MODULE_43__["StyledArtTableWrapper"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_15___default()({}, artTableWrapperProps, {
3937
4295
  direction: info.direction
3938
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_loading__WEBPACK_IMPORTED_MODULE_41__["default"], {
4296
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement(_loading__WEBPACK_IMPORTED_MODULE_42__["default"], {
3939
4297
  visible: isLoading,
3940
4298
  LoadingIcon: components.LoadingIcon,
3941
4299
  LoadingContentWrapper: components.LoadingContentWrapper
3942
4300
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_31___default.a.createElement("div", _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_15___default()({}, tableProps, {
3943
- className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_42__["Classes"].artTable, tableProps.className)
4301
+ className: classnames__WEBPACK_IMPORTED_MODULE_30___default()(_styles__WEBPACK_IMPORTED_MODULE_43__["Classes"].artTable, tableProps.className)
3944
4302
  }), this.renderTableHeader(info), this.renderTableBody(info), this.renderTableFooter(info), this.renderLockShadows(info)), this.renderStickyScroll(info))));
3945
4303
  }
3946
4304
  }, {
3947
4305
  key: "componentDidMount",
3948
4306
  value: function componentDidMount() {
3949
- var _this$props$setTableW2, _this$props10, _this$props$setTableD, _this$props11, _this$props$setRowHei, _this$props12;
4307
+ var _this$props$setTableW2, _this$props11, _this$props$setTableD, _this$props12, _this$props$setRowHei, _this$props13;
3950
4308
  this.rootSubscription = new rxjs__WEBPACK_IMPORTED_MODULE_32__["Subscription"]();
3951
4309
  this.resizeSubject = new rxjs__WEBPACK_IMPORTED_MODULE_32__["Subject"]();
3952
4310
  this.updateDOMHelper();
@@ -3954,30 +4312,30 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3954
4312
  this.initSubscriptions();
3955
4313
  this.didMountOrUpdate();
3956
4314
  // console.log('did mount end')
3957
- var _this$props9 = this.props,
3958
- cssVariables = _this$props9.cssVariables,
3959
- enableCSSVariables = _this$props9.enableCSSVariables,
3960
- bordered = _this$props9.bordered;
3961
- Object(_utils__WEBPACK_IMPORTED_MODULE_44__["cssPolifill"])({
4315
+ var _this$props10 = this.props,
4316
+ cssVariables = _this$props10.cssVariables,
4317
+ enableCSSVariables = _this$props10.enableCSSVariables,
4318
+ bordered = _this$props10.bordered;
4319
+ Object(_utils__WEBPACK_IMPORTED_MODULE_45__["cssPolifill"])({
3962
4320
  variables: cssVariables || {},
3963
4321
  enableCSSVariables: enableCSSVariables,
3964
4322
  bordered: bordered
3965
4323
  });
3966
- (_this$props$setTableW2 = (_this$props10 = this.props).setTableWidth) === null || _this$props$setTableW2 === void 0 ? void 0 : _this$props$setTableW2.call(_this$props10, this.domHelper.tableBody.clientWidth);
3967
- (_this$props$setTableD = (_this$props11 = this.props).setTableDomHelper) === null || _this$props$setTableD === void 0 ? void 0 : _this$props$setTableD.call(_this$props11, this.domHelper);
3968
- (_this$props$setRowHei = (_this$props12 = this.props).setRowHeightManager) === null || _this$props$setRowHei === void 0 ? void 0 : _this$props$setRowHei.call(_this$props12, this.rowHeightManager);
4324
+ (_this$props$setTableW2 = (_this$props11 = this.props).setTableWidth) === null || _this$props$setTableW2 === void 0 ? void 0 : _this$props$setTableW2.call(_this$props11, this.domHelper.tableBody.clientWidth);
4325
+ (_this$props$setTableD = (_this$props12 = this.props).setTableDomHelper) === null || _this$props$setTableD === void 0 ? void 0 : _this$props$setTableD.call(_this$props12, this.domHelper);
4326
+ (_this$props$setRowHei = (_this$props13 = this.props).setRowHeightManager) === null || _this$props$setRowHei === void 0 ? void 0 : _this$props$setRowHei.call(_this$props13, this.rowHeightManager);
3969
4327
  }
3970
4328
  }, {
3971
4329
  key: "componentDidUpdate",
3972
4330
  value: function componentDidUpdate(prevProps, prevState) {
3973
- var _this$props14;
4331
+ var _this$props15;
3974
4332
  // console.log('did update start')
3975
- var _this$props13 = this.props,
3976
- cssVariables = _this$props13.cssVariables,
3977
- enableCSSVariables = _this$props13.enableCSSVariables,
3978
- bordered = _this$props13.bordered;
3979
- if (!Object(_utils__WEBPACK_IMPORTED_MODULE_44__["shallowEqual"])(prevProps === null || prevProps === void 0 ? void 0 : prevProps.cssVariables, (_this$props14 = this.props) === null || _this$props14 === void 0 ? void 0 : _this$props14.cssVariables)) {
3980
- Object(_utils__WEBPACK_IMPORTED_MODULE_44__["cssPolifill"])({
4333
+ var _this$props14 = this.props,
4334
+ cssVariables = _this$props14.cssVariables,
4335
+ enableCSSVariables = _this$props14.enableCSSVariables,
4336
+ bordered = _this$props14.bordered;
4337
+ if (!Object(_utils__WEBPACK_IMPORTED_MODULE_45__["shallowEqual"])(prevProps === null || prevProps === void 0 ? void 0 : prevProps.cssVariables, (_this$props15 = this.props) === null || _this$props15 === void 0 ? void 0 : _this$props15.cssVariables)) {
4338
+ Object(_utils__WEBPACK_IMPORTED_MODULE_45__["cssPolifill"])({
3981
4339
  variables: cssVariables || {},
3982
4340
  enableCSSVariables: enableCSSVariables,
3983
4341
  bordered: bordered
@@ -3991,10 +4349,13 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
3991
4349
  }, {
3992
4350
  key: "didMountOrUpdate",
3993
4351
  value: function didMountOrUpdate(prevProps, prevState) {
3994
- this.syncHorizontalScrollFromTableBody();
3995
- this.updateStickyScroll();
3996
- this.adjustNeedRenderLock();
3997
- this.updateRowHeightManager();
4352
+ var _this2 = this;
4353
+ window.requestAnimationFrame(function () {
4354
+ _this2.syncHorizontalScrollFromTableBody();
4355
+ _this2.updateStickyScroll();
4356
+ _this2.adjustNeedRenderLock();
4357
+ _this2.updateRowHeightManager();
4358
+ });
3998
4359
  this.updateScrollLeftWhenLayoutChanged(prevProps, prevState);
3999
4360
  }
4000
4361
  }, {
@@ -4009,40 +4370,40 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4009
4370
  var prevHasFooter = prevProps.footerDataSource.length > 0;
4010
4371
  var currentHasFooter = this.props.footerDataSource.length > 0;
4011
4372
  if (!prevHasFooter && currentHasFooter) {
4012
- Object(_utils__WEBPACK_IMPORTED_MODULE_44__["getTableScrollFooterDOM"])(this.domHelper).scrollLeft = this.domHelper.virtual.scrollLeft;
4373
+ Object(_utils__WEBPACK_IMPORTED_MODULE_45__["getTableScrollFooterDOM"])(this.domHelper).scrollLeft = this.domHelper.virtual.scrollLeft;
4013
4374
  }
4014
4375
  }
4015
4376
  }
4016
4377
  }, {
4017
4378
  key: "initSubscriptions",
4018
4379
  value: function initSubscriptions() {
4019
- var _this2 = this;
4380
+ var _this3 = this;
4020
4381
  var _this$domHelper2 = this.domHelper,
4021
4382
  virtual = _this$domHelper2.virtual,
4022
4383
  stickyScroll = _this$domHelper2.stickyScroll;
4023
- this.rootSubscription.add(_utils__WEBPACK_IMPORTED_MODULE_44__["throttledWindowResize$"].subscribe(function () {
4024
- _this2.updateStickyScroll();
4025
- _this2.adjustNeedRenderLock();
4384
+ this.rootSubscription.add(_utils__WEBPACK_IMPORTED_MODULE_45__["throttledWindowResize$"].subscribe(function () {
4385
+ _this3.updateStickyScroll();
4386
+ _this3.adjustNeedRenderLock();
4026
4387
  }));
4027
4388
  this.resizeSubject.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["debounceTime"](100)).subscribe(function () {
4028
- var _this2$props$setTable, _this2$props;
4029
- (_this2$props$setTable = (_this2$props = _this2.props).setTableWidth) === null || _this2$props$setTable === void 0 ? void 0 : _this2$props$setTable.call(_this2$props, _this2.domHelper.tableBody.clientWidth);
4389
+ var _this3$props$setTable, _this3$props;
4390
+ (_this3$props$setTable = (_this3$props = _this3.props).setTableWidth) === null || _this3$props$setTable === void 0 ? void 0 : _this3$props$setTable.call(_this3$props, _this3.domHelper.tableBody.clientWidth);
4030
4391
  });
4031
4392
  var handleTableWrapperResize = function handleTableWrapperResize() {
4032
- _this2.resizeSubject.next();
4393
+ _this3.resizeSubject.next();
4033
4394
  };
4034
- this.resizeObserver = Object(_utils__WEBPACK_IMPORTED_MODULE_44__["addResizeObserver"])(this.domHelper.artTableWrapper, handleTableWrapperResize);
4395
+ this.resizeObserver = Object(_utils__WEBPACK_IMPORTED_MODULE_45__["addResizeObserver"])(this.domHelper.artTableWrapper, handleTableWrapperResize);
4035
4396
 
4036
4397
  // 滚动同步
4037
- this.rootSubscription.add(Object(_utils__WEBPACK_IMPORTED_MODULE_44__["syncScrollLeft"])([Object(_utils__WEBPACK_IMPORTED_MODULE_44__["getTableScrollHeaderDOM"])(this.domHelper), virtual, Object(_utils__WEBPACK_IMPORTED_MODULE_44__["getTableScrollFooterDOM"])(this.domHelper), stickyScroll], function (scrollLeft) {
4038
- _this2.syncHorizontalScroll(scrollLeft);
4398
+ this.rootSubscription.add(Object(_utils__WEBPACK_IMPORTED_MODULE_45__["syncScrollLeft"])([Object(_utils__WEBPACK_IMPORTED_MODULE_45__["getTableScrollHeaderDOM"])(this.domHelper), virtual, Object(_utils__WEBPACK_IMPORTED_MODULE_45__["getTableScrollFooterDOM"])(this.domHelper), stickyScroll], function (scrollLeft) {
4399
+ _this3.syncHorizontalScroll(scrollLeft);
4039
4400
  }));
4040
4401
  var richVisibleRects$ = Object(_helpers_getRichVisibleRectsStream__WEBPACK_IMPORTED_MODULE_37__["getRichVisibleRectsStream"])(this.domHelper.virtual, this.props$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["skip"](1), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["mapTo"]('structure-may-change')), this.props.virtualDebugLabel).pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["shareReplay"]());
4041
4402
 
4042
4403
  // 每当可见部分发生变化的时候,调整 loading icon 的未知(如果 loading icon 存在的话)
4043
4404
  this.rootSubscription.add(Object(rxjs__WEBPACK_IMPORTED_MODULE_32__["combineLatest"])([richVisibleRects$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["map"](function (p) {
4044
4405
  return p.clipRect;
4045
- }), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["distinctUntilChanged"](_utils__WEBPACK_IMPORTED_MODULE_44__["shallowEqual"])), this.props$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["startWith"](null), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["pairwise"](), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["filter"](function (_ref3) {
4406
+ }), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["distinctUntilChanged"](_utils__WEBPACK_IMPORTED_MODULE_45__["shallowEqual"])), this.props$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["startWith"](null), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["pairwise"](), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["filter"](function (_ref3) {
4046
4407
  var _ref4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_14___default()(_ref3, 2),
4047
4408
  prevProps = _ref4[0],
4048
4409
  props = _ref4[1];
@@ -4050,7 +4411,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4050
4411
  }))]).subscribe(function (_ref5) {
4051
4412
  var _ref6 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_14___default()(_ref5, 1),
4052
4413
  clipRect = _ref6[0];
4053
- var loadingIndicator = _this2.domHelper.getLoadingIndicator();
4414
+ var loadingIndicator = _this3.domHelper.getLoadingIndicator();
4054
4415
  if (!loadingIndicator) {
4055
4416
  return;
4056
4417
  }
@@ -4062,9 +4423,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4062
4423
 
4063
4424
  // 每当可见部分发生变化的时候,如果开启了虚拟滚动,则重新触发 render
4064
4425
  this.rootSubscription.add(richVisibleRects$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["filter"](function () {
4065
- var _this2$lastInfo$useVi = _this2.lastInfo.useVirtual,
4066
- horizontal = _this2$lastInfo$useVi.horizontal,
4067
- vertical = _this2$lastInfo$useVi.vertical;
4426
+ var _this3$lastInfo$useVi = _this3.lastInfo.useVirtual,
4427
+ horizontal = _this3$lastInfo$useVi.horizontal,
4428
+ vertical = _this3$lastInfo$useVi.vertical;
4068
4429
  return horizontal || vertical;
4069
4430
  }), rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["map"](function (_ref7) {
4070
4431
  var clipRect = _ref7.clipRect,
@@ -4080,9 +4441,32 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4080
4441
  return true;
4081
4442
  }
4082
4443
  // 因为 overscan 的存在,滚动较小的距离时不需要触发组件重渲染
4083
- return Math.abs(x.maxRenderWidth - y.maxRenderWidth) < _utils__WEBPACK_IMPORTED_MODULE_44__["OVERSCAN_SIZE"] / 2 && Math.abs(x.maxRenderHeight - y.maxRenderHeight) < _utils__WEBPACK_IMPORTED_MODULE_44__["OVERSCAN_SIZE"] / 2 && Math.abs(x.offsetY - y.offsetY) < _utils__WEBPACK_IMPORTED_MODULE_44__["OVERSCAN_SIZE"] / 2;
4444
+ return Math.abs(x.maxRenderWidth - y.maxRenderWidth) < _utils__WEBPACK_IMPORTED_MODULE_45__["OVERSCAN_SIZE"] / 2 && Math.abs(x.maxRenderHeight - y.maxRenderHeight) < _utils__WEBPACK_IMPORTED_MODULE_45__["OVERSCAN_SIZE"] / 2 && Math.abs(x.offsetY - y.offsetY) < _utils__WEBPACK_IMPORTED_MODULE_45__["OVERSCAN_SIZE"] / 2;
4445
+ }),
4446
+ // 快速滚动检测和处理
4447
+ rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["tap"](function (sizeAndOffset) {
4448
+ // 只有在启用快速滚动时才使用 FastScrollManager 处理滚动事件
4449
+ if (_this3.props.isLowPerformance) {
4450
+ _this3.fastScrollManager.handleScrollEvent(sizeAndOffset, {
4451
+ offsetY: _this3.state.offsetY,
4452
+ maxRenderHeight: _this3.state.maxRenderHeight,
4453
+ maxRenderWidth: _this3.state.maxRenderWidth
4454
+ }, _this3.props.dataSource.length, _this3.domHelper.virtual.scrollHeight);
4455
+ }
4084
4456
  })).subscribe(function (sizeAndOffset) {
4085
- _this2.setState(sizeAndOffset);
4457
+ var _this3$topBlankRef$cu, _this3$bottomBlankRef;
4458
+ // 正常滚动时也需要实时更新 blank 高度,确保缓慢滚动时的视觉连续性
4459
+ var currentRange = _this3.rowHeightManager.getRenderRange(sizeAndOffset.offsetY, sizeAndOffset.maxRenderHeight, _this3.props.dataSource.length);
4460
+
4461
+ // 直接更新 DOM,避免等待下次渲染
4462
+ (_this3$topBlankRef$cu = _this3.topBlankRef.current) === null || _this3$topBlankRef$cu === void 0 ? void 0 : _this3$topBlankRef$cu.updateHeight(currentRange.topBlank);
4463
+ (_this3$bottomBlankRef = _this3.bottomBlankRef.current) === null || _this3$bottomBlankRef === void 0 ? void 0 : _this3$bottomBlankRef.updateHeight(currentRange.bottomBlank);
4464
+
4465
+ // 只有在启用快速滚动时才检查快速滚动状态
4466
+ if (_this3.props.isLowPerformance && _this3.fastScrollManager.getIsFastScrolling()) {
4467
+ return;
4468
+ }
4469
+ _this3.setState(sizeAndOffset);
4086
4470
  }));
4087
4471
  this.rootSubscription.add(richVisibleRects$.pipe(rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["map"](function (_ref8) {
4088
4472
  var clipRect = _ref8.clipRect,
@@ -4097,16 +4481,16 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4097
4481
  }),
4098
4482
  // 计算得到当前行索引对应的数据块,blocks改成数组的形式,兼容快速拖动可视区域出现两个数据块的情况
4099
4483
  rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["map"](function (sizeAndOffset) {
4100
- var _this2$props$scrollLo;
4484
+ var _this3$props$scrollLo;
4101
4485
  var offsetY = sizeAndOffset.offsetY,
4102
4486
  maxRenderHeight = sizeAndOffset.maxRenderHeight;
4103
- var scrollDirection = offsetY - _this2.offsetY >= 0 ? 'down' : 'up';
4104
- _this2.offsetY = offsetY;
4105
- var rowCount = _this2.props.dataSource.length;
4106
- var vertical = _this2.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, rowCount);
4487
+ var scrollDirection = offsetY - _this3.offsetY >= 0 ? 'down' : 'up';
4488
+ _this3.offsetY = offsetY;
4489
+ var rowCount = _this3.props.dataSource.length;
4490
+ var vertical = _this3.rowHeightManager.getRenderRange(offsetY, maxRenderHeight, rowCount);
4107
4491
  var topIndex = vertical.topIndex,
4108
4492
  bottomIndex = vertical.bottomIndex;
4109
- var blockSize = ((_this2$props$scrollLo = _this2.props.scrollLoad) === null || _this2$props$scrollLo === void 0 ? void 0 : _this2$props$scrollLo.blockSize) || 200;
4493
+ var blockSize = ((_this3$props$scrollLo = _this3.props.scrollLoad) === null || _this3$props$scrollLo === void 0 ? void 0 : _this3$props$scrollLo.blockSize) || 200;
4110
4494
  var topBlockStartIndex = Math.floor(Math.max(topIndex - 1, 0) / blockSize) * blockSize;
4111
4495
  var bottomBlockStartIndex = Math.floor((bottomIndex + 1) / blockSize) * blockSize;
4112
4496
  return scrollDirection === 'down' ? [topBlockStartIndex, bottomBlockStartIndex] : [bottomBlockStartIndex, topBlockStartIndex];
@@ -4120,8 +4504,8 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4120
4504
  }),
4121
4505
  // 过滤掉重复掉值
4122
4506
  rxjs_operators__WEBPACK_IMPORTED_MODULE_33__["distinctUntilChanged"]()).subscribe(function (startIndex) {
4123
- var _this2$props$scrollLo2;
4124
- (_this2$props$scrollLo2 = _this2.props.scrollLoad) === null || _this2$props$scrollLo2 === void 0 ? void 0 : _this2$props$scrollLo2.callback(startIndex);
4507
+ var _this3$props$scrollLo2;
4508
+ (_this3$props$scrollLo2 = _this3.props.scrollLoad) === null || _this3$props$scrollLo2 === void 0 ? void 0 : _this3$props$scrollLo2.callback(startIndex);
4125
4509
  }));
4126
4510
  }
4127
4511
  }, {
@@ -4131,6 +4515,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4131
4515
  (_this$resizeObserver = this.resizeObserver) === null || _this$resizeObserver === void 0 ? void 0 : _this$resizeObserver.disconnect();
4132
4516
  this.rootSubscription.unsubscribe();
4133
4517
  this.resizeSubject.unsubscribe();
4518
+ // 只有在启用快速滚动时才清理快速滚动管理器
4519
+ if (this.props.isLowPerformance) {
4520
+ this.fastScrollManager.cleanup();
4521
+ }
4134
4522
  }
4135
4523
 
4136
4524
  /** 更新 DOM 节点的引用,方便其他方法直接操作 DOM */
@@ -4196,7 +4584,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
4196
4584
  flat = _this$lastInfo2.flat,
4197
4585
  hasLockColumn = _this$lastInfo2.hasLockColumn;
4198
4586
  if (hasLockColumn) {
4199
- var sumOfColWidth = Object(_utils__WEBPACK_IMPORTED_MODULE_44__["sum"])(flat.full.map(function (col) {
4587
+ var sumOfColWidth = Object(_utils__WEBPACK_IMPORTED_MODULE_45__["sum"])(flat.full.map(function (col) {
4200
4588
  return col.width;
4201
4589
  }));
4202
4590
  var nextNeedRenderLock = sumOfColWidth > this.domHelper.artTable.clientWidth;
@@ -4227,6 +4615,7 @@ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_22___default()(Ba
4227
4615
  stickyScrollHeight: 'auto',
4228
4616
  useVirtual: 'auto',
4229
4617
  estimatedRowHeight: 48,
4618
+ isLowPerformance: false,
4230
4619
  isLoading: false,
4231
4620
  components: {},
4232
4621
  getTableProps: rxjs__WEBPACK_IMPORTED_MODULE_32__["noop"],