element-plus
Version:
A Component Library for Vue 3
1 lines • 3.4 kB
Source Map (JSON)
{"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":";;AAEO,MAAM,aAAA,GAAgB,CAC3B,EAAA,EACA,SAAA,KACY;AACZ,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,EAAA,IAAM,CAAC,WAAW,OAAO,KAAA;AAE3C,EAAA,MAAM,MAAA,GAAS,GAAG,qBAAA,EAAsB;AAExC,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,qBAAqB,OAAA,EAAS;AAChC,IAAA,aAAA,GAAgB,UAAU,qBAAA,EAAsB;AAAA,EAClD,CAAA,MAAO;AACL,IAAA,aAAA,GAAgB;AAAA,MACd,GAAA,EAAK,CAAA;AAAA,MACL,OAAO,MAAA,CAAO,UAAA;AAAA,MACd,QAAQ,MAAA,CAAO,WAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACR;AAAA,EACF;AACA,EAAA,OACE,MAAA,CAAO,GAAA,GAAM,aAAA,CAAc,MAAA,IAC3B,OAAO,MAAA,GAAS,aAAA,CAAc,GAAA,IAC9B,MAAA,CAAO,KAAA,GAAQ,aAAA,CAAc,IAAA,IAC7B,MAAA,CAAO,OAAO,aAAA,CAAc,KAAA;AAEhC;AAEO,MAAM,YAAA,GAAe,CAAC,EAAA,KAAoB;AAC/C,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,MAAA,GAAS,EAAA;AAEb,EAAA,OAAO,MAAA,EAAQ;AACb,IAAA,MAAA,IAAU,MAAA,CAAO,SAAA;AACjB,IAAA,MAAA,GAAS,MAAA,CAAO,YAAA;AAAA,EAClB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,oBAAA,GAAuB,CAClC,EAAA,EACA,WAAA,KACG;AACH,EAAA,OAAO,KAAK,GAAA,CAAI,YAAA,CAAa,EAAE,CAAA,GAAI,YAAA,CAAa,WAAW,CAAC,CAAA;AAC9D;AAEO,MAAM,WAAA,GAAc,CAAC,KAAA,KAAmC;AAC7D,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC7B,IAAA,OAAA,GAAW,KAAA,CAAqB,cAAA,CAAe,CAAC,CAAA,CAAE,OAAA;AAClD,IAAA,OAAA,GAAW,KAAA,CAAqB,cAAA,CAAe,CAAC,CAAA,CAAE,OAAA;AAAA,EACpD,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AACzC,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAA;AAC3C,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAA;AAAA,EAC7C,CAAA,MAAO;AACL,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA;AAChC,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA;AAAA,EAClC;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}