UNPKG

tdesign-react

Version:
134 lines (128 loc) 5.52 kB
/** * tdesign v1.15.1 * (c) 2025 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-8e4d656d.js'); require('../../_chunks/dep-00b49251.js'); require('../../_chunks/dep-eb6d55c1.js'); require('../../_chunks/dep-31c4bc3d.js'); require('../../_chunks/dep-eea2872a.js'); require('../../_chunks/dep-25585736.js'); require('../../_chunks/dep-667ac7af.js'); require('../../_chunks/dep-62e73936.js'); require('../../_chunks/dep-64577888.js'); require('../../_chunks/dep-71455db7.js'); require('../../_chunks/dep-9e5a468d.js'); require('../../_chunks/dep-ec8d2dca.js'); require('../../_chunks/dep-fc596d16.js'); require('../../_chunks/dep-f26edb7b.js'); require('../../_chunks/dep-f33c1939.js'); require('../../_chunks/dep-21ece627.js'); require('../../_chunks/dep-25e4aa84.js'); require('../../_chunks/dep-e1fbe1c3.js'); require('../../_chunks/dep-014b9b78.js'); require('../../_chunks/dep-abdd786a.js'); require('../../_chunks/dep-3d4656ee.js'); require('../../_chunks/dep-0ffc9d96.js'); require('../../_chunks/dep-efe6d243.js'); require('../../_chunks/dep-4b18243f.js'); require('../../_chunks/dep-bff2c990.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 isVirtual = React.useMemo(function () { return scrollType === "virtual" && (options === null || options === void 0 ? void 0 : options.length) > scrollThreshold; }, [scrollType, scrollThreshold, options]); 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, { 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; } }, []); 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