UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.51 kB
{"version":3,"file":"position.mjs","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"],"names":[],"mappings":";;AAEa,MAAA,aAAA,GAAgB,CAC3B,EAAA,EACA,SACY,KAAA;AACZ,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,EAAA,IAAM,CAAC,SAAA;AAAW,IAAO,OAAA,KAAA,CAAA;AAE3C,EAAM,MAAA,MAAA,GAAS,GAAG,qBAAsB,EAAA,CAAA;AAExC,EAAI,IAAA,aAAA,CAAA;AACJ,EAAA,IAAI,qBAAqB,OAAS,EAAA;AAChC,IAAA,aAAA,GAAgB,UAAU,qBAAsB,EAAA,CAAA;AAAA,GAC3C,MAAA;AACL,IAAgB,aAAA,GAAA;AAAA,MACd,GAAK,EAAA,CAAA;AAAA,MACL,OAAO,MAAO,CAAA,UAAA;AAAA,MACd,QAAQ,MAAO,CAAA,WAAA;AAAA,MACf,IAAM,EAAA,CAAA;AAAA,KACR,CAAA;AAAA,GACF;AACA,EAAA,OACE,MAAO,CAAA,GAAA,GAAM,aAAc,CAAA,MAAA,IAC3B,OAAO,MAAS,GAAA,aAAA,CAAc,GAC9B,IAAA,MAAA,CAAO,KAAQ,GAAA,aAAA,CAAc,IAC7B,IAAA,MAAA,CAAO,OAAO,aAAc,CAAA,KAAA,CAAA;AAEhC,EAAA;AAEa,MAAA,YAAA,GAAe,CAAC,EAAoB,KAAA;AAC/C,EAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AACb,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AAEb,EAAA,OAAO,MAAQ,EAAA;AACb,IAAA,MAAA,IAAU,MAAO,CAAA,SAAA,CAAA;AACjB,IAAA,MAAA,GAAS,MAAO,CAAA,YAAA,CAAA;AAAA,GAClB;AAEA,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AAEa,MAAA,oBAAA,GAAuB,CAClC,EAAA,EACA,WACG,KAAA;AACH,EAAA,OAAO,KAAK,GAAI,CAAA,YAAA,CAAa,EAAE,CAAI,GAAA,YAAA,CAAa,WAAW,CAAC,CAAA,CAAA;AAC9D,EAAA;AAEa,MAAA,WAAA,GAAc,CAAC,KAAmC,KAAA;AAC7D,EAAI,IAAA,OAAA,CAAA;AACJ,EAAI,IAAA,OAAA,CAAA;AACJ,EAAI,IAAA,KAAA,CAAM,SAAS,UAAY,EAAA;AAC7B,IAAW,OAAA,GAAA,KAAA,CAAqB,eAAe,CAAG,CAAA,CAAA,OAAA,CAAA;AAClD,IAAW,OAAA,GAAA,KAAA,CAAqB,eAAe,CAAG,CAAA,CAAA,OAAA,CAAA;AAAA,GACzC,MAAA,IAAA,KAAA,CAAM,IAAK,CAAA,UAAA,CAAW,OAAO,CAAG,EAAA;AACzC,IAAW,OAAA,GAAA,KAAA,CAAqB,QAAQ,CAAG,CAAA,CAAA,OAAA,CAAA;AAC3C,IAAW,OAAA,GAAA,KAAA,CAAqB,QAAQ,CAAG,CAAA,CAAA,OAAA,CAAA;AAAA,GACtC,MAAA;AACL,IAAA,OAAA,GAAW,KAAqB,CAAA,OAAA,CAAA;AAChC,IAAA,OAAA,GAAW,KAAqB,CAAA,OAAA,CAAA;AAAA,GAClC;AACA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF;;;;"}