UNPKG

tdesign-react

Version:
120 lines (112 loc) 4.07 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var raf = require('raf'); var _util_style = require('../_chunks/dep-381fa848.js'); var _util_easing = require('./easing.js'); var isString = require('../_chunks/dep-4ed9eda4.js'); require('../_chunks/dep-25585736.js'); require('../_chunks/dep-667ac7af.js'); require('../_chunks/dep-64577888.js'); require('../_chunks/dep-62e73936.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var raf__default = /*#__PURE__*/_interopDefaultLegacy(raf); function hasBodyScrollbar() { return document.body.scrollHeight > document.documentElement.clientHeight; } var isNodeOverflow = function isNodeOverflow(ele) { var _ele$clientWidth = ele.clientWidth, clientWidth = _ele$clientWidth === void 0 ? 0 : _ele$clientWidth, _ele$scrollWidth = ele.scrollWidth, scrollWidth = _ele$scrollWidth === void 0 ? 0 : _ele$scrollWidth; if (scrollWidth > clientWidth) { return true; } return false; }; var getScrollContainer = function getScrollContainer() { var container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "body"; if (isString.isString(container)) { return container ? document.querySelector(container) : window; } if (typeof container === "function") { return container(); } return container || window; }; function getScroll(target, isLeft) { if (typeof window === "undefined" || !target) { return 0; } var method = isLeft ? "scrollLeft" : "scrollTop"; var result = 0; if (_util_style.isWindow(target)) { result = target[isLeft ? "pageXOffset" : "pageYOffset"]; } else if (target instanceof Document) { result = target.documentElement[method]; } else if (target) { result = target[method]; } return result; } function scrollTo(target, opt) { var _opt$container = opt.container, container = _opt$container === void 0 ? window : _opt$container, _opt$duration = opt.duration, duration = _opt$duration === void 0 ? 450 : _opt$duration, _opt$easing = opt.easing, easing = _opt$easing === void 0 ? _util_easing.easeInOutCubic : _opt$easing; var scrollTop = getScroll(container); var startTime = Date.now(); return new Promise(function (res) { var _fnc = function fnc() { var timestamp = Date.now(); var time = timestamp - startTime; var nextScrollTop = easing(Math.min(time, duration), scrollTop, target, duration); if (_util_style.isWindow(container)) { container.scrollTo(window.pageXOffset, nextScrollTop); } else if (typeof HTMLDocument !== "undefined" && (container instanceof HTMLDocument || container.constructor.name === "HTMLDocument")) { container.documentElement.scrollTop = nextScrollTop; } else { container.scrollTop = nextScrollTop; } if (time < duration) { raf__default["default"](_fnc); } else { raf__default["default"](res); } }; raf__default["default"](_fnc); }); } function getWindowScroll() { var _document = document, body = _document.body; var docElm = document.documentElement; var scrollTop = window.pageYOffset || docElm.scrollTop || body.scrollTop; var scrollLeft = window.pageXOffset || docElm.scrollLeft || body.scrollLeft; return { scrollTop: scrollTop, scrollLeft: scrollLeft }; } function getOffsetTop(target, container) { var _target$getBoundingCl = target.getBoundingClientRect(), top = _target$getBoundingCl.top; if (container === window) { return top - document.documentElement.clientTop; } return top - container.getBoundingClientRect().top; } exports.getOffsetTop = getOffsetTop; exports.getScroll = getScroll; exports.getScrollContainer = getScrollContainer; exports.getWindowScroll = getWindowScroll; exports.hasBodyScrollbar = hasBodyScrollbar; exports.isNodeOverflow = isNodeOverflow; exports.scrollTo = scrollTo; //# sourceMappingURL=scroll.js.map