linkmore-design
Version:
π πlmη»δ»ΆεΊγπ
49 lines (48 loc) β’ 1.75 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _context = require("./context");
const VirtualWrapper = /*#__PURE__*/_react.default.memo(wrapperProps => {
const {
children,
...resetProps
} = wrapperProps;
const {
state,
dispatch,
instance
} = (0, _context.useStore)();
const {
rowVirtual: {
virtualItems,
totalSize
}
} = instance;
const contents = (0, _react.useMemo)(() => children[1], [children]);
const contentsLen = (0, _react.useMemo)(() => contents?.length ?? 0, [contents]);
(0, _react.useEffect)(() => {
if (state.totalLen !== contentsLen) {
dispatch({
type: 'changeTotalLen',
totalLen: contentsLen ?? 0
});
}
}, [contentsLen, dispatch, state.totalLen]);
const paddingTop = virtualItems.length > 0 ? virtualItems?.[0]?.start || 0 : 0;
const paddingBottom = virtualItems.length > 0 ? totalSize - (virtualItems?.[virtualItems.length - 1]?.end || 0) : 0;
return /*#__PURE__*/_react.default.createElement("tbody", resetProps, paddingTop > 0 && /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
style: {
height: `${paddingTop}px`
}
})), children[0], virtualItems.map(virtualRow => contents[virtualRow.index]), paddingBottom > 0 && /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
style: {
height: `${paddingBottom}px`
}
})));
});
var _default = VirtualWrapper;
exports.default = _default;