dom.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. var __defProp = Object.defineProperty;
  2. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  3. var __getOwnPropNames = Object.getOwnPropertyNames;
  4. var __hasOwnProp = Object.prototype.hasOwnProperty;
  5. var __export = (target, all) => {
  6. for (var name in all)
  7. __defProp(target, name, { get: all[name], enumerable: true });
  8. };
  9. var __copyProps = (to, from, except, desc) => {
  10. if (from && typeof from === "object" || typeof from === "function") {
  11. for (let key of __getOwnPropNames(from))
  12. if (!__hasOwnProp.call(to, key) && key !== except)
  13. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  14. }
  15. return to;
  16. };
  17. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  18. var stdin_exports = {};
  19. __export(stdin_exports, {
  20. getContainingBlock: () => getContainingBlock,
  21. getElementTop: () => getElementTop,
  22. getRootScrollTop: () => getRootScrollTop,
  23. getScrollTop: () => getScrollTop,
  24. isHidden: () => isHidden,
  25. preventDefault: () => preventDefault,
  26. resetScroll: () => resetScroll,
  27. setRootScrollTop: () => setRootScrollTop,
  28. setScrollTop: () => setScrollTop,
  29. stopPropagation: () => stopPropagation,
  30. windowHeight: () => windowHeight,
  31. windowWidth: () => windowWidth
  32. });
  33. module.exports = __toCommonJS(stdin_exports);
  34. var import_use = require("@vant/use");
  35. var import_vue = require("vue");
  36. var import_basic = require("./basic");
  37. function getScrollTop(el) {
  38. const top = "scrollTop" in el ? el.scrollTop : el.pageYOffset;
  39. return Math.max(top, 0);
  40. }
  41. function setScrollTop(el, value) {
  42. if ("scrollTop" in el) {
  43. el.scrollTop = value;
  44. } else {
  45. el.scrollTo(el.scrollX, value);
  46. }
  47. }
  48. function getRootScrollTop() {
  49. return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
  50. }
  51. function setRootScrollTop(value) {
  52. setScrollTop(window, value);
  53. setScrollTop(document.body, value);
  54. }
  55. function getElementTop(el, scroller) {
  56. if (el === window) {
  57. return 0;
  58. }
  59. const scrollTop = scroller ? getScrollTop(scroller) : getRootScrollTop();
  60. return (0, import_use.useRect)(el).top + scrollTop;
  61. }
  62. const isIOS = (0, import_basic.isIOS)();
  63. function resetScroll() {
  64. if (isIOS) {
  65. setRootScrollTop(getRootScrollTop());
  66. }
  67. }
  68. const stopPropagation = (event) => event.stopPropagation();
  69. function preventDefault(event, isStopPropagation) {
  70. if (typeof event.cancelable !== "boolean" || event.cancelable) {
  71. event.preventDefault();
  72. }
  73. if (isStopPropagation) {
  74. stopPropagation(event);
  75. }
  76. }
  77. function isHidden(elementRef) {
  78. const el = (0, import_vue.unref)(elementRef);
  79. if (!el) {
  80. return false;
  81. }
  82. const style = window.getComputedStyle(el);
  83. const hidden = style.display === "none";
  84. const parentHidden = el.offsetParent === null && style.position !== "fixed";
  85. return hidden || parentHidden;
  86. }
  87. const { width: windowWidth, height: windowHeight } = (0, import_use.useWindowSize)();
  88. function isContainingBlock(el) {
  89. const css = window.getComputedStyle(el);
  90. return css.transform !== "none" || css.perspective !== "none" || ["transform", "perspective", "filter"].some(
  91. (value) => (css.willChange || "").includes(value)
  92. );
  93. }
  94. function getContainingBlock(el) {
  95. let node = el.parentElement;
  96. while (node) {
  97. if (node && node.tagName !== "HTML" && node.tagName !== "BODY" && isContainingBlock(node)) {
  98. return node;
  99. }
  100. node = node.parentElement;
  101. }
  102. return null;
  103. }