{"version":3,"file":"position.mjs","sources":["../../../../../../packages/utils/dom/position.ts"],"sourcesContent":["import { isClient } from '../browser'\r\n\r\nexport const isInContainer = (\r\n  el?: Element,\r\n  container?: Element | Window\r\n): boolean => {\r\n  if (!isClient || !el || !container) return false\r\n\r\n  const elRect = el.getBoundingClientRect()\r\n\r\n  let containerRect: Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>\r\n  if (container instanceof Element) {\r\n    containerRect = container.getBoundingClientRect()\r\n  } else {\r\n    containerRect = {\r\n      top: 0,\r\n      right: window.innerWidth,\r\n      bottom: window.innerHeight,\r\n      left: 0,\r\n    }\r\n  }\r\n  return (\r\n    elRect.top < containerRect.bottom &&\r\n    elRect.bottom > containerRect.top &&\r\n    elRect.right > containerRect.left &&\r\n    elRect.left < containerRect.right\r\n  )\r\n}\r\n\r\nexport const getOffsetTop = (el: HTMLElement) => {\r\n  let offset = 0\r\n  let parent = el\r\n\r\n  while (parent) {\r\n    offset += parent.offsetTop\r\n    parent = parent.offsetParent as HTMLElement\r\n  }\r\n\r\n  return offset\r\n}\r\n\r\nexport const getOffsetTopDistance = (\r\n  el: HTMLElement,\r\n  containerEl: HTMLElement\r\n) => {\r\n  return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl))\r\n}\r\n\r\nexport const getClientXY = (event: MouseEvent | TouchEvent) => {\r\n  let clientX: number\r\n  let clientY: number\r\n  if (event.type === 'touchend') {\r\n    clientY = (event as TouchEvent).changedTouches[0].clientY\r\n    clientX = (event as TouchEvent).changedTouches[0].clientX\r\n  } else if (event.type.startsWith('touch')) {\r\n    clientY = (event as TouchEvent).touches[0].clientY\r\n    clientX = (event as TouchEvent).touches[0].clientX\r\n  } else {\r\n    clientY = (event as MouseEvent).clientY\r\n    clientX = (event as MouseEvent).clientX\r\n  }\r\n  return {\r\n    clientX,\r\n    clientY,\r\n  }\r\n}\r\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;;;;"}