Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

scrollTo.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = scrollTo;
  5. var _offset = _interopRequireDefault(require("../query/offset"));
  6. var _height = _interopRequireDefault(require("../query/height"));
  7. var _scrollParent = _interopRequireDefault(require("../query/scrollParent"));
  8. var _scrollTop = _interopRequireDefault(require("../query/scrollTop"));
  9. var _requestAnimationFrame = _interopRequireDefault(require("./requestAnimationFrame"));
  10. var _isWindow = _interopRequireDefault(require("../query/isWindow"));
  11. function scrollTo(selected, scrollParent) {
  12. var offset = (0, _offset.default)(selected);
  13. var poff = {
  14. top: 0,
  15. left: 0
  16. };
  17. var list, listScrollTop, selectedTop, isWin;
  18. var selectedHeight, listHeight, bottom;
  19. if (!selected) return;
  20. list = scrollParent || (0, _scrollParent.default)(selected);
  21. isWin = (0, _isWindow.default)(list);
  22. listScrollTop = (0, _scrollTop.default)(list);
  23. listHeight = (0, _height.default)(list, true);
  24. isWin = (0, _isWindow.default)(list);
  25. if (!isWin) poff = (0, _offset.default)(list);
  26. offset = {
  27. top: offset.top - poff.top,
  28. left: offset.left - poff.left,
  29. height: offset.height,
  30. width: offset.width
  31. };
  32. selectedHeight = offset.height;
  33. selectedTop = offset.top + (isWin ? 0 : listScrollTop);
  34. bottom = selectedTop + selectedHeight;
  35. listScrollTop = listScrollTop > selectedTop ? selectedTop : bottom > listScrollTop + listHeight ? bottom - listHeight : listScrollTop;
  36. var id = (0, _requestAnimationFrame.default)(function () {
  37. return (0, _scrollTop.default)(list, listScrollTop);
  38. });
  39. return function () {
  40. return _requestAnimationFrame.default.cancel(id);
  41. };
  42. }
  43. module.exports = exports["default"];