tdesign-react
Version:
TDesign Component for React
138 lines (132 loc) • 5.74 kB
JavaScript
/**
* tdesign v1.16.6
* (c) 2026 tdesign
* @license MIT
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var hooks_useVirtualScroll = require('../../hooks/useVirtualScroll.js');
require('../../_chunks/dep-3281986a.js');
require('../../_chunks/dep-54373955.js');
require('../../_chunks/dep-ef5bfcf1.js');
require('../../_chunks/dep-a96a03f6.js');
require('../../_chunks/dep-e0d43c80.js');
require('../../_chunks/dep-9d3b1a05.js');
require('../../_chunks/dep-1f8c969d.js');
require('../../_chunks/dep-615c149d.js');
require('../../_chunks/dep-90a93885.js');
require('../../_chunks/dep-0173c82c.js');
require('../../_chunks/dep-a8d5081a.js');
require('../../_chunks/dep-403f5edf.js');
require('../../_chunks/dep-d24b94bc.js');
require('../../_chunks/dep-6478e7e3.js');
require('../../_chunks/dep-c9025587.js');
require('../../_chunks/dep-8663a5c9.js');
require('../../_chunks/dep-50349518.js');
require('../../_chunks/dep-8c9795f9.js');
require('../../_chunks/dep-723e29d6.js');
require('../../_chunks/dep-0bd8b970.js');
require('../../_chunks/dep-18c47660.js');
require('../../_chunks/dep-91b467dd.js');
require('../../_chunks/dep-18ca5cd9.js');
require('../../_chunks/dep-3facd669.js');
require('../../_chunks/dep-0652d2a6.js');
var usePanelVirtualScroll = function usePanelVirtualScroll(_ref) {
var popupContentRef = _ref.popupContentRef,
scroll = _ref.scroll,
options = _ref.options,
size = _ref.size;
var scrollThreshold = (scroll === null || scroll === void 0 ? void 0 : scroll.threshold) || 100;
var scrollType = scroll === null || scroll === void 0 ? void 0 : scroll.type;
var enableVirtual = React.useMemo(function () {
return scrollType === "virtual";
}, [scrollType]);
var isVirtual = React.useMemo(function () {
return enableVirtual && (options === null || options === void 0 ? void 0 : options.length) > scrollThreshold;
}, [enableVirtual, options === null || options === void 0 ? void 0 : options.length, scrollThreshold]);
var scrollParams = React.useMemo(function () {
var heightMap = {
small: 20,
medium: 28,
large: 36
};
var rowHeight = heightMap[size] || 28;
return {
type: "virtual",
isFixedRowHeight: (scroll === null || scroll === void 0 ? void 0 : scroll.isFixedRowHeight) || false,
rowHeight: (scroll === null || scroll === void 0 ? void 0 : scroll.rowHeight) || rowHeight,
bufferSize: (scroll === null || scroll === void 0 ? void 0 : scroll.bufferSize) || 20,
threshold: scrollThreshold
};
}, [scroll, scrollThreshold, size]);
var _useVirtualScroll = hooks_useVirtualScroll["default"](popupContentRef, {
enable: enableVirtual,
data: options || [],
scroll: scrollParams
}),
_useVirtualScroll$vis = _useVirtualScroll.visibleData,
visibleData = _useVirtualScroll$vis === void 0 ? null : _useVirtualScroll$vis,
_useVirtualScroll$han = _useVirtualScroll.handleScroll,
handleVirtualScroll = _useVirtualScroll$han === void 0 ? null : _useVirtualScroll$han,
_useVirtualScroll$scr = _useVirtualScroll.scrollHeight,
scrollHeight = _useVirtualScroll$scr === void 0 ? null : _useVirtualScroll$scr,
_useVirtualScroll$tra = _useVirtualScroll.translateY,
translateY = _useVirtualScroll$tra === void 0 ? null : _useVirtualScroll$tra,
_useVirtualScroll$han2 = _useVirtualScroll.handleRowMounted,
handleRowMounted = _useVirtualScroll$han2 === void 0 ? null : _useVirtualScroll$han2;
var lastScrollY = -1;
var onInnerVirtualScroll = React.useCallback(function (e) {
if (!isVirtual) {
return;
}
var target = e.target;
var top = target.scrollTop;
if (Math.abs(lastScrollY - top) > 5) {
handleVirtualScroll();
lastScrollY = top;
} else {
lastScrollY = -1;
}
}, [isVirtual, handleVirtualScroll]);
React.useEffect(function () {
var popupContentDom = popupContentRef === null || popupContentRef === void 0 ? void 0 : popupContentRef.current;
if (isVirtual) {
var _popupContentDom$addE;
popupContentDom === null || popupContentDom === void 0 || (_popupContentDom$addE = popupContentDom.addEventListener) === null || _popupContentDom$addE === void 0 || _popupContentDom$addE.call(popupContentDom, "scroll", onInnerVirtualScroll);
}
return function () {
if (isVirtual) {
var _popupContentDom$remo;
popupContentDom === null || popupContentDom === void 0 || (_popupContentDom$remo = popupContentDom.removeEventListener) === null || _popupContentDom$remo === void 0 || _popupContentDom$remo.call(popupContentDom, "scroll", onInnerVirtualScroll);
}
};
}, [isVirtual, onInnerVirtualScroll, popupContentRef.current]);
var cursorStyle = {
position: "absolute",
width: "1px",
height: "1px",
transition: "transform 0.2s",
transform: "translate(0, ".concat(scrollHeight, "px)"),
MsTransform: "translate(0, ".concat(scrollHeight, "px)"),
MozTransform: "translate(0, ".concat(scrollHeight, "px)"),
WebkitTransform: "translate(0, ".concat(scrollHeight, "px)")
};
var panelStyle = {
transform: "translate(0, ".concat(translateY, "px)"),
MsTransform: "translate(0, ".concat(translateY, "px)"),
MozTransform: "translate(0, ".concat(translateY, "px)"),
WebkitTransform: "translate(0, ".concat(translateY, "px)")
};
return {
scrollHeight: scrollHeight,
translateY: translateY,
visibleData: visibleData,
handleRowMounted: handleRowMounted,
isVirtual: isVirtual,
cursorStyle: cursorStyle,
panelStyle: panelStyle
};
};
exports["default"] = usePanelVirtualScroll;
//# sourceMappingURL=usePanelVirtualScroll.js.map