{"version":3,"file":"dom_misc.min.mjs","sources":["../../../src/util/dom_misc.ts"],"sourcesContent":["/**\n * Returns element scroll offsets\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\nexport function getScrollLeftTop(element: HTMLElement | null) {\n  const doc = element && getDocumentFromElement(element);\n  let left = 0,\n    top = 0;\n  if (!element || !doc) {\n    return { left, top };\n  }\n\n  const docElement = doc.documentElement,\n    body = doc.body || {\n      scrollLeft: 0,\n      scrollTop: 0,\n    };\n  // While loop checks (and then sets element to) .parentNode OR .host\n  //  to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n  //  but the .parentNode of a root ShadowDOM node will always be null, instead\n  //  it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n  // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM\n  while (element && (element.parentNode || element.host)) {\n    // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM\n    element = element.parentNode || element.host;\n    // @ts-expect-error because element is typed as HTMLElement but it can go up to document\n    if (element === doc) {\n      left = body.scrollLeft || docElement.scrollLeft || 0;\n      top = body.scrollTop || docElement.scrollTop || 0;\n    } else {\n      left += element!.scrollLeft || 0;\n      top += element!.scrollTop || 0;\n    }\n\n    if (element!.nodeType === 1 && element!.style.position === 'fixed') {\n      break;\n    }\n  }\n\n  return { left, top };\n}\n\nexport const getDocumentFromElement = (el: HTMLElement) =>\n  el.ownerDocument || null;\n\nexport const getWindowFromElement = (el: HTMLElement) =>\n  el.ownerDocument?.defaultView || null;\n"],"names":["getScrollLeftTop","element","doc","getDocumentFromElement","left","top","docElement","documentElement","body","scrollLeft","scrollTop","parentNode","host","nodeType","style","position","el","ownerDocument","getWindowFromElement","_el$ownerDocument","defaultView"],"mappings":"AAKO,SAASA,EAAiBC,GAC/B,MAAMC,EAAMD,GAAWE,EAAuBF,GAC9C,IAAIG,EAAO,EACTC,EAAM,EACR,IAAKJ,IAAYC,EACf,MAAO,CAAEE,OAAMC,OAGjB,MAAMC,EAAaJ,EAAIK,gBACrBC,EAAON,EAAIM,MAAQ,CACjBC,WAAY,EACZC,UAAW,GAOf,KAAOT,IAAYA,EAAQU,YAAcV,EAAQW,SAE/CX,EAAUA,EAAQU,YAAcV,EAAQW,QAExBV,GACdE,EAAOI,EAAKC,YAAcH,EAAWG,YAAc,EACnDJ,EAAMG,EAAKE,WAAaJ,EAAWI,WAAa,IAEhDN,GAAQH,EAASQ,YAAc,EAC/BJ,GAAOJ,EAASS,WAAa,GAGL,IAAtBT,EAASY,UAA8C,UAA5BZ,EAASa,MAAMC,YAKhD,MAAO,CAAEX,OAAMC,MACjB,CAEO,MAAMF,EAA0Ba,GACrCA,EAAGC,eAAiB,KAETC,EAAwBF,IAAe,IAAAG,EAAA,OAClCA,QAAhBA,EAAAH,EAAGC,qBAAHE,IAAgBA,OAAhBA,EAAAA,EAAkBC,cAAe,IAAI"}