版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

86 строки
2.6 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. require('../browser.js');
  4. var style = require('./style.js');
  5. var core = require('@vueuse/core');
  6. const isScroll = (el, isVertical) => {
  7. if (!core.isClient)
  8. return false;
  9. const key = {
  10. undefined: "overflow",
  11. true: "overflow-y",
  12. false: "overflow-x"
  13. }[String(isVertical)];
  14. const overflow = style.getStyle(el, key);
  15. return ["scroll", "auto", "overlay"].some((s) => overflow.includes(s));
  16. };
  17. const getScrollContainer = (el, isVertical) => {
  18. if (!core.isClient)
  19. return;
  20. let parent = el;
  21. while (parent) {
  22. if ([window, document, document.documentElement].includes(parent))
  23. return window;
  24. if (isScroll(parent, isVertical))
  25. return parent;
  26. parent = parent.parentNode;
  27. }
  28. return parent;
  29. };
  30. let scrollBarWidth;
  31. const getScrollBarWidth = (namespace) => {
  32. var _a;
  33. if (!core.isClient)
  34. return 0;
  35. if (scrollBarWidth !== void 0)
  36. return scrollBarWidth;
  37. const outer = document.createElement("div");
  38. outer.className = `${namespace}-scrollbar__wrap`;
  39. outer.style.visibility = "hidden";
  40. outer.style.width = "100px";
  41. outer.style.position = "absolute";
  42. outer.style.top = "-9999px";
  43. document.body.appendChild(outer);
  44. const widthNoScroll = outer.offsetWidth;
  45. outer.style.overflow = "scroll";
  46. const inner = document.createElement("div");
  47. inner.style.width = "100%";
  48. outer.appendChild(inner);
  49. const widthWithScroll = inner.offsetWidth;
  50. (_a = outer.parentNode) == null ? void 0 : _a.removeChild(outer);
  51. scrollBarWidth = widthNoScroll - widthWithScroll;
  52. return scrollBarWidth;
  53. };
  54. function scrollIntoView(container, selected) {
  55. if (!core.isClient)
  56. return;
  57. if (!selected) {
  58. container.scrollTop = 0;
  59. return;
  60. }
  61. const offsetParents = [];
  62. let pointer = selected.offsetParent;
  63. while (pointer !== null && container !== pointer && container.contains(pointer)) {
  64. offsetParents.push(pointer);
  65. pointer = pointer.offsetParent;
  66. }
  67. const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0);
  68. const bottom = top + selected.offsetHeight;
  69. const viewRectTop = container.scrollTop;
  70. const viewRectBottom = viewRectTop + container.clientHeight;
  71. if (top < viewRectTop) {
  72. container.scrollTop = top;
  73. } else if (bottom > viewRectBottom) {
  74. container.scrollTop = bottom - container.clientHeight;
  75. }
  76. }
  77. exports.getScrollBarWidth = getScrollBarWidth;
  78. exports.getScrollContainer = getScrollContainer;
  79. exports.isScroll = isScroll;
  80. exports.scrollIntoView = scrollIntoView;
  81. //# sourceMappingURL=scroll.js.map