indicator-ui 0.0.263 → 0.0.264

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.
package/dist/index.js CHANGED
@@ -35598,7 +35598,7 @@ __webpack_require__.r(__webpack_exports__);
35598
35598
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
35599
35599
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
35600
35600
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
35601
- var _excluded = ["onScroll", "onScrollTop", "onScrollBottom", "accuracy", "wrapper"];
35601
+ var _excluded = ["onScroll", "onScrollTop", "onScrollBottom", "accuracy", "wrapper", "onWheelTopUp", "onWheelBottomDown"];
35602
35602
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
35603
35603
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35604
35604
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -35620,8 +35620,13 @@ var ScrollProvider = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardR
35620
35620
  accuracy = _props$accuracy === void 0 ? 10 : _props$accuracy,
35621
35621
  _props$wrapper = props.wrapper,
35622
35622
  wrapper = _props$wrapper === void 0 ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {}) : _props$wrapper,
35623
+ onWheelTopUp = props.onWheelTopUp,
35624
+ onWheelBottomDown = props.onWheelBottomDown,
35623
35625
  componentProps = _objectWithoutProperties(props, _excluded);
35626
+ var lastScrollHeightRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(undefined);
35624
35627
  var elementRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
35628
+ var isTopTriggeredRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
35629
+ var isBottomTriggeredRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
35625
35630
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
35626
35631
  if (elementRef.current) {
35627
35632
  var handleScroll = function handleScroll(_event) {
@@ -35630,12 +35635,9 @@ var ScrollProvider = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardR
35630
35635
  var scrollTop = Math.abs(el.scrollTop);
35631
35636
  var clientHeight = el.clientHeight;
35632
35637
  var scrollHeight = el.scrollHeight;
35633
- if (onScrollTop && scrollTop <= accuracy) {
35634
- onScrollTop();
35635
- }
35636
- if (onScrollBottom && scrollTop + clientHeight + accuracy >= scrollHeight) {
35637
- onScrollBottom();
35638
- }
35638
+ var prevScrollHeight = lastScrollHeightRef.current;
35639
+ lastScrollHeightRef.current = scrollHeight;
35640
+ // Обработка обычного скролла
35639
35641
  if (onScroll) {
35640
35642
  if (typeof onScroll === "function") {
35641
35643
  onScroll(scrollTop);
@@ -35653,15 +35655,37 @@ var ScrollProvider = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardR
35653
35655
  }
35654
35656
  }
35655
35657
  }
35658
+ // Сброс флагов при выходе за границы accuracy
35659
+ if (scrollTop > accuracy) {
35660
+ isTopTriggeredRef.current = false;
35661
+ }
35662
+ if (scrollTop + clientHeight < scrollHeight - accuracy) {
35663
+ isBottomTriggeredRef.current = false;
35664
+ }
35665
+ // Обработка верхней границы
35666
+ if (onScrollTop && scrollTop <= accuracy) {
35667
+ var shouldSkipDueToHeightChange = prevScrollHeight !== undefined && scrollHeight > prevScrollHeight;
35668
+ if (!shouldSkipDueToHeightChange && !isTopTriggeredRef.current) {
35669
+ onScrollTop();
35670
+ isTopTriggeredRef.current = true;
35671
+ }
35672
+ }
35673
+ // Обработка нижней границы
35674
+ if (onScrollBottom && scrollTop + clientHeight + accuracy >= scrollHeight) {
35675
+ var _shouldSkipDueToHeightChange = prevScrollHeight !== undefined && scrollHeight < prevScrollHeight;
35676
+ if (!_shouldSkipDueToHeightChange && !isBottomTriggeredRef.current) {
35677
+ onScrollBottom();
35678
+ isBottomTriggeredRef.current = true;
35679
+ }
35680
+ }
35656
35681
  };
35657
- // Добавляем слушатель события scroll
35658
35682
  elementRef.current.addEventListener("scroll", handleScroll);
35659
35683
  return function () {
35660
35684
  var _elementRef$current;
35661
35685
  (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 || _elementRef$current.removeEventListener("scroll", handleScroll);
35662
35686
  };
35663
35687
  }
35664
- }, [onScroll, onScrollTop, onScrollBottom]);
35688
+ }, [onScroll, onScrollTop, onScrollBottom, accuracy]);
35665
35689
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().cloneElement(wrapper, _objectSpread({
35666
35690
  ref: function ref(node) {
35667
35691
  elementRef.current = node;