position.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
  2. let _vueuse_core = require("@vueuse/core");
  3. //#region ../../packages/utils/dom/position.ts
  4. const isInContainer = (el, container) => {
  5. if (!_vueuse_core.isClient || !el || !container) return false;
  6. const elRect = el.getBoundingClientRect();
  7. let containerRect;
  8. if (container instanceof Element) containerRect = container.getBoundingClientRect();
  9. else containerRect = {
  10. top: 0,
  11. right: window.innerWidth,
  12. bottom: window.innerHeight,
  13. left: 0
  14. };
  15. return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;
  16. };
  17. const getOffsetTop = (el) => {
  18. let offset = 0;
  19. let parent = el;
  20. while (parent) {
  21. offset += parent.offsetTop;
  22. parent = parent.offsetParent;
  23. }
  24. return offset;
  25. };
  26. const getOffsetTopDistance = (el, containerEl) => {
  27. return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl));
  28. };
  29. const getClientXY = (event) => {
  30. let clientX;
  31. let clientY;
  32. if (event.type === "touchend") {
  33. clientY = event.changedTouches[0].clientY;
  34. clientX = event.changedTouches[0].clientX;
  35. } else if (event.type.startsWith("touch")) {
  36. clientY = event.touches[0].clientY;
  37. clientX = event.touches[0].clientX;
  38. } else {
  39. clientY = event.clientY;
  40. clientX = event.clientX;
  41. }
  42. return {
  43. clientX,
  44. clientY
  45. };
  46. };
  47. //#endregion
  48. exports.getClientXY = getClientXY;
  49. exports.getOffsetTop = getOffsetTop;
  50. exports.getOffsetTopDistance = getOffsetTopDistance;
  51. exports.isInContainer = isInContainer;
  52. //# sourceMappingURL=position.js.map