@chatui/core
Version:
The React library for Chatbot UI
42 lines (41 loc) • 1.77 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.InfiniteScroll = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _clsx = _interopRequireDefault(require("clsx"));
var _useForwardRef = _interopRequireDefault(require("../../hooks/useForwardRef"));
var _getToBottom = _interopRequireDefault(require("../../utils/getToBottom"));
var _excluded = ["className", "disabled", "distance", "children", "onLoadMore", "onScroll"];
var InfiniteScroll = exports.InfiniteScroll = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
var className = props.className,
disabled = props.disabled,
_props$distance = props.distance,
distance = _props$distance === void 0 ? 0 : _props$distance,
children = props.children,
onLoadMore = props.onLoadMore,
onScroll = props.onScroll,
other = (0, _objectWithoutProperties2.default)(props, _excluded);
var wrapperRef = (0, _useForwardRef.default)(ref);
function handleScroll(e) {
if (onScroll) {
onScroll(e);
}
var el = wrapperRef.current;
if (!el) return;
var nearBottom = (0, _getToBottom.default)(el) <= distance;
if (nearBottom) {
onLoadMore();
}
}
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
className: (0, _clsx.default)('InfiniteScroll', className),
role: "feed",
onScroll: !disabled ? handleScroll : undefined,
ref: wrapperRef
}, other), children);
});