UNPKG

element-plus

Version:

A Component Library for Vue 3

50 lines (48 loc) 1.42 kB
import { isClient } from "../browser.mjs"; //#region ../../packages/utils/dom/position.ts const isInContainer = (el, container) => { if (!isClient || !el || !container) return false; const elRect = el.getBoundingClientRect(); let containerRect; if (container instanceof Element) containerRect = container.getBoundingClientRect(); else containerRect = { top: 0, right: window.innerWidth, bottom: window.innerHeight, left: 0 }; return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right; }; const getOffsetTop = (el) => { let offset = 0; let parent = el; while (parent) { offset += parent.offsetTop; parent = parent.offsetParent; } return offset; }; const getOffsetTopDistance = (el, containerEl) => { return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl)); }; const getClientXY = (event) => { let clientX; let clientY; if (event.type === "touchend") { clientY = event.changedTouches[0].clientY; clientX = event.changedTouches[0].clientX; } else if (event.type.startsWith("touch")) { clientY = event.touches[0].clientY; clientX = event.touches[0].clientX; } else { clientY = event.clientY; clientX = event.clientX; } return { clientX, clientY }; }; //#endregion export { getClientXY, getOffsetTop, getOffsetTopDistance, isInContainer }; //# sourceMappingURL=position.mjs.map