UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.64 kB
{"version":3,"file":"position.mjs","names":[],"sources":["../../../../../packages/utils/dom/position.ts"],"sourcesContent":["import { isClient } from '../browser'\n\nexport const isInContainer = (\n el?: Element,\n container?: Element | Window\n): boolean => {\n if (!isClient || !el || !container) return false\n\n const elRect = el.getBoundingClientRect()\n\n let containerRect: Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>\n if (container instanceof Element) {\n containerRect = container.getBoundingClientRect()\n } else {\n containerRect = {\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n left: 0,\n }\n }\n return (\n elRect.top < containerRect.bottom &&\n elRect.bottom > containerRect.top &&\n elRect.right > containerRect.left &&\n elRect.left < containerRect.right\n )\n}\n\nexport const getOffsetTop = (el: HTMLElement) => {\n let offset = 0\n let parent = el\n\n while (parent) {\n offset += parent.offsetTop\n parent = parent.offsetParent as HTMLElement\n }\n\n return offset\n}\n\nexport const getOffsetTopDistance = (\n el: HTMLElement,\n containerEl: HTMLElement\n) => {\n return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl))\n}\n\nexport const getClientXY = (event: MouseEvent | TouchEvent) => {\n let clientX: number\n let clientY: number\n if (event.type === 'touchend') {\n clientY = (event as TouchEvent).changedTouches[0].clientY\n clientX = (event as TouchEvent).changedTouches[0].clientX\n } else if (event.type.startsWith('touch')) {\n clientY = (event as TouchEvent).touches[0].clientY\n clientX = (event as TouchEvent).touches[0].clientX\n } else {\n clientY = (event as MouseEvent).clientY\n clientX = (event as MouseEvent).clientX\n }\n return {\n clientX,\n clientY,\n }\n}\n"],"mappings":";;AAEA,MAAa,iBACX,IACA,cACY;CACZ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,OAAO;CAE3C,MAAM,SAAS,GAAG,uBAAuB;CAEzC,IAAI;CACJ,IAAI,qBAAqB,SACvB,gBAAgB,UAAU,uBAAuB;MAEjD,gBAAgB;EACd,KAAK;EACL,OAAO,OAAO;EACd,QAAQ,OAAO;EACf,MAAM;EACP;CAEH,OACE,OAAO,MAAM,cAAc,UAC3B,OAAO,SAAS,cAAc,OAC9B,OAAO,QAAQ,cAAc,QAC7B,OAAO,OAAO,cAAc;;AAIhC,MAAa,gBAAgB,OAAoB;CAC/C,IAAI,SAAS;CACb,IAAI,SAAS;CAEb,OAAO,QAAQ;EACb,UAAU,OAAO;EACjB,SAAS,OAAO;;CAGlB,OAAO;;AAGT,MAAa,wBACX,IACA,gBACG;CACH,OAAO,KAAK,IAAI,aAAa,GAAG,GAAG,aAAa,YAAY,CAAC;;AAG/D,MAAa,eAAe,UAAmC;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI,MAAM,SAAS,YAAY;EAC7B,UAAW,MAAqB,eAAe,GAAG;EAClD,UAAW,MAAqB,eAAe,GAAG;QAC7C,IAAI,MAAM,KAAK,WAAW,QAAQ,EAAE;EACzC,UAAW,MAAqB,QAAQ,GAAG;EAC3C,UAAW,MAAqB,QAAQ,GAAG;QACtC;EACL,UAAW,MAAqB;EAChC,UAAW,MAAqB;;CAElC,OAAO;EACL;EACA;EACD"}