{"version":3,"file":"useScrollParent.mjs","sources":["../../../../src/composables/useScrollParent.ts"],"sourcesContent":["import { Ref } from 'vue'\nimport { useWindow } from './useWindow'\n\ntype ScrollElement = HTMLElement | (Window & { scrollLeft: number; scrollTop: number })\n\nexport const useScrollParent = () => {\n  const window = useWindow()\n\n  const fakeWindow = new Proxy(window.value || {}, {\n    get: (target, key: any, rec) => {\n      // Re-map scrollTop and scrollLeft to window.scrollY and window.scrollX\n      if (key === 'scrollTop') {\n        return window.value?.scrollY\n      }\n      if (key === 'scrollLeft') {\n        return window.value?.scrollX\n      }\n\n      const value = Reflect.get(target, key, rec)\n      if (typeof (value) === 'function') {\n        return value.bind(target)\n      }\n      return value\n    },\n  })\n\n  const getScrollableParent = (element?: HTMLElement | null): ScrollElement => {\n    if (!element) {\n      return fakeWindow as ScrollElement\n    }\n\n    if (element.scrollHeight > element.clientHeight) {\n      return element\n    }\n\n    return getScrollableParent(element.parentElement)\n  }\n\n  return { getScrollableParent }\n}\n"],"names":[],"mappings":";AAKO,MAAM,kBAAkB,MAAM;AACnC,QAAM,SAAS;AAEf,QAAM,aAAa,IAAI,MAAM,OAAO,SAAS,CAAA,GAAI;AAAA,IAC/C,KAAK,CAAC,QAAQ,KAAU,QAAQ;;AAE9B,UAAI,QAAQ,aAAa;AACvB,gBAAO,YAAO,UAAP,mBAAc;AAAA,MACvB;AACA,UAAI,QAAQ,cAAc;AACxB,gBAAO,YAAO,UAAP,mBAAc;AAAA,MACvB;AAEA,YAAM,QAAQ,QAAQ,IAAI,QAAQ,KAAK,GAAG;AACtC,UAAA,OAAQ,UAAW,YAAY;AAC1B,eAAA,MAAM,KAAK,MAAM;AAAA,MAC1B;AACO,aAAA;AAAA,IACT;AAAA,EAAA,CACD;AAEK,QAAA,sBAAsB,CAAC,YAAgD;AAC3E,QAAI,CAAC,SAAS;AACL,aAAA;AAAA,IACT;AAEI,QAAA,QAAQ,eAAe,QAAQ,cAAc;AACxC,aAAA;AAAA,IACT;AAEO,WAAA,oBAAoB,QAAQ,aAAa;AAAA,EAAA;AAGlD,SAAO,EAAE,oBAAoB;AAC/B;"}