{"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":["isInContainer","t","n","i","e","getBoundingClientRect","o","Element","top","right","window","innerWidth","bottom","innerHeight","left","getOffsetTop","offsetTop","offsetParent","getOffsetTopDistance","Math","abs","getClientXY","type","changedTouches","clientY","clientX","startsWith","touches"],"mappings":"+DAAkD,MAACA,EAAc,CAACC,EAAEC,KAAK,IAAIC,IAAIF,IAAIC,EAAE,OAAM,EAAG,MAAME,EAAEH,EAAEI,wBAAwB,IAAIC,EAAE,OAA4BA,EAArBJ,aAAaK,QAAUL,EAAEG,wBAA0B,CAACG,IAAI,EAAEC,MAAMC,OAAOC,WAAWC,OAAOF,OAAOG,YAAYC,KAAK,GAAGV,EAAEI,IAAIF,EAAEM,QAAQR,EAAEQ,OAAON,EAAEE,KAAKJ,EAAEK,MAAMH,EAAEQ,MAAMV,EAAEU,KAAKR,EAAEG,OAAOM,EAAad,IAAI,IAAIC,EAAE,EAAEE,EAAEH,EAAE,KAAKG,GAAGF,GAAGE,EAAEY,UAAUZ,EAAEA,EAAEa,aAAa,OAAOf,GAAGgB,EAAqB,CAACjB,EAAEC,IAAIiB,KAAKC,IAAIL,EAAad,GAAGc,EAAab,IAAImB,EAAYpB,IAAI,IAAIC,EAAEE,EAAE,MAAgB,aAATH,EAAEqB,MAAmBlB,EAAEH,EAAEsB,eAAe,GAAGC,QAAQtB,EAAED,EAAEsB,eAAe,GAAGE,SAASxB,EAAEqB,KAAKI,WAAW,UAAUtB,EAAEH,EAAE0B,QAAQ,GAAGH,QAAQtB,EAAED,EAAE0B,QAAQ,GAAGF,UAAUrB,EAAEH,EAAEuB,QAAQtB,EAAED,EAAEwB,SAAS,CAACA,QAAQvB,EAAEsB,QAAQpB"}