{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/use-scroll-parent/index.ts"],"sourcesContent":["import { type Ref, onMounted, ref } from 'vue'\nimport { inBrowser } from '@xzx-design/utils'\n\ntype ScrollElement = HTMLElement | Window\n\nconst overflowScrollReg = /scroll|auto|overlay/i\nconst defaultRoot = inBrowser ? window : undefined\n\nfunction isElement(node: Element) {\n  const ELEMENT_NODE_TYPE = 1\n  return (\n    node.tagName !== 'HTML' &&\n    node.tagName !== 'BODY' &&\n    node.nodeType === ELEMENT_NODE_TYPE\n  )\n}\n\nexport function getScrollParent(\n  el: Element,\n  root: ScrollElement | undefined = defaultRoot\n) {\n  let node = el\n\n  while (node && node !== root && isElement(node)) {\n    const { overflowY } = window.getComputedStyle(node)\n    if (overflowScrollReg.test(overflowY)) {\n      return node\n    }\n    node = node.parentNode as Element\n  }\n\n  return root\n}\n\nexport function useScrollParent(\n  el: Ref<Element | undefined>,\n  root: ScrollElement | undefined = defaultRoot\n) {\n  const scrollParent = ref<Element | Window>()\n\n  onMounted(() => {\n    if (el.value) {\n      scrollParent.value = getScrollParent(el.value, root)\n    }\n  })\n\n  return scrollParent\n}\n"],"names":[],"mappings":";;;;AAKA,MAAM,iBAAoB,GAAA,sBAAA,CAAA;AAC1B,MAAM,WAAA,GAAc,YAAY,MAAS,GAAA,KAAA,CAAA,CAAA;AAEzC,SAAS,UAAU,IAAe,EAAA;AAChC,EAAA,MAAM,iBAAoB,GAAA,CAAA,CAAA;AAC1B,EAAA,OACE,KAAK,OAAY,KAAA,MAAA,IACjB,KAAK,OAAY,KAAA,MAAA,IACjB,KAAK,QAAa,KAAA,iBAAA,CAAA;AAEtB,CAAA;AAEgB,SAAA,eAAA,CACd,EACA,EAAA,IAAA,GAAkC,WAClC,EAAA;AACA,EAAA,IAAI,IAAO,GAAA,EAAA,CAAA;AAEX,EAAA,OAAO,IAAQ,IAAA,IAAA,KAAS,IAAQ,IAAA,SAAA,CAAU,IAAI,CAAG,EAAA;AAC/C,IAAA,MAAM,EAAE,SAAA,EAAc,GAAA,MAAA,CAAO,iBAAiB,IAAI,CAAA,CAAA;AAClD,IAAI,IAAA,iBAAA,CAAkB,IAAK,CAAA,SAAS,CAAG,EAAA;AACrC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAA;AAAA,GACd;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEgB,SAAA,eAAA,CACd,EACA,EAAA,IAAA,GAAkC,WAClC,EAAA;AACA,EAAA,MAAM,eAAe,GAAsB,EAAA,CAAA;AAE3C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,GAAG,KAAO,EAAA;AACZ,MAAA,YAAA,CAAa,KAAQ,GAAA,eAAA,CAAgB,EAAG,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,KACrD;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,YAAA,CAAA;AACT;;;;"}