{"version":3,"file":"getScroll.cjs","sources":["../../../../../packages/utils/scroll/getScroll.ts"],"sourcesContent":["import { isWindow } from '../is';\n\nexport function getScroll(\n  target: HTMLElement | Window | Document | null,\n  top: boolean,\n): number {\n  if (typeof window === 'undefined')\n    return 0;\n\n  const method = top ? 'scrollTop' : 'scrollLeft';\n  let result = 0;\n  if (isWindow(target)) {\n    result = target[top ? 'pageYOffset' : 'pageXOffset'];\n  } else if (target instanceof Document) {\n    result = target.documentElement[method];\n  } else if (target instanceof HTMLElement) {\n    result = target[method];\n  } else if (target) {\n    // According to the type inference, the `target` is `never` type.\n    // Since we configured the loose mode type checking, and supports mocking the target with such shape below::\n    //    `{ documentElement: { scrollLeft: 200, scrollTop: 400 } }`,\n    //    the program may falls into this branch.\n    // Check the corresponding tests for details. Don't sure what is the real scenario this happens.\n    result = target[method];\n  }\n\n  if (target && !isWindow(target) && typeof result !== 'number')\n    result = ((target.ownerDocument ?? target) as any).documentElement?.[method];\n\n  return result;\n}\n"],"names":["isWindow"],"mappings":";;;;AAEgB,SAAA,SAAA,CACd,QACA,GACQ,EAAA;AALV,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAME,EAAA,IAAI,OAAO,MAAW,KAAA,WAAA;AACpB,IAAO,OAAA,CAAA,CAAA;AAET,EAAM,MAAA,MAAA,GAAS,MAAM,WAAc,GAAA,YAAA,CAAA;AACnC,EAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AACb,EAAI,IAAAA,WAAA,CAAS,MAAM,CAAG,EAAA;AACpB,IAAS,MAAA,GAAA,MAAA,CAAO,GAAM,GAAA,aAAA,GAAgB,aAAa,CAAA,CAAA;AAAA,GACrD,MAAA,IAAW,kBAAkB,QAAU,EAAA;AACrC,IAAS,MAAA,GAAA,MAAA,CAAO,gBAAgB,MAAM,CAAA,CAAA;AAAA,GACxC,MAAA,IAAW,kBAAkB,WAAa,EAAA;AACxC,IAAA,MAAA,GAAS,OAAO,MAAM,CAAA,CAAA;AAAA,aACb,MAAQ,EAAA;AAMjB,IAAA,MAAA,GAAS,OAAO,MAAM,CAAA,CAAA;AAAA,GACxB;AAEA,EAAA,IAAI,UAAU,CAACA,WAAA,CAAS,MAAM,CAAA,IAAK,OAAO,MAAW,KAAA,QAAA;AACnD,IAAA,MAAA,GAAA,CAAW,EAAO,GAAA,CAAA,CAAA,EAAA,GAAA,MAAA,CAAA,aAAA,KAAP,IAAwB,GAAA,EAAA,GAAA,MAAA,EAAgB,oBAAxC,IAA0D,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAEvE,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}