{"version":3,"file":"use-scroll.mjs","sources":["../../../../../../../packages/components/table/src/hooks/use-scroll.ts"],"sourcesContent":["import type { ComponentPublicInstance, Ref } from 'vue'\nimport { ref, onMounted, watch } from 'vue'\nimport type { TableColumnData } from '../types'\n\nexport const useScroll = (renderDataColumns: Ref<TableColumnData[]>) => {\n  const tbodyComRef = ref<ComponentPublicInstance>()\n  // 当前滚动条的位置\n  const horScrollPosition = ref<'left' | 'right' | 'middle'>()\n  //body水平滚动来控制header区域的水平滚动\n  const theadComRef = ref<ComponentPublicInstance & { scrollLeft: (v: number) => void }>()\n  // 用body的水平滚动来控制header的水平滚动\n  const onTbodyScroll = (e: Event) => {\n    const target = e.target as HTMLDivElement\n    const { scrollLeft } = target\n    // 触发header滚动条滚动\n    theadComRef.value?.scrollLeft(scrollLeft)\n    setHorScrollPosition(target)\n  }\n\n  const setHorScrollPosition = (scrollContainer: HTMLDivElement) => {\n    const { scrollLeft, clientWidth } = scrollContainer\n    const horScrollWidth = scrollContainer.firstElementChild!.clientWidth - clientWidth\n\n    if (horScrollWidth === 0) return\n\n    if (scrollLeft === 0) {\n      horScrollPosition.value = 'left'\n    } else if (scrollLeft === horScrollWidth) {\n      horScrollPosition.value = 'right'\n    } else {\n      horScrollPosition.value = 'middle'\n    }\n  }\n\n  const updateHorScrollPosition = () => {\n    const scrollContainer = tbodyComRef.value?.$el?.firstElementChild\n    scrollContainer && setHorScrollPosition(scrollContainer)\n  }\n\n  onMounted(() => {\n    updateHorScrollPosition()\n  })\n\n  watch(\n    () => renderDataColumns.value,\n    () => {\n      updateHorScrollPosition()\n    }\n  )\n\n  return {\n    theadComRef,\n    tbodyComRef,\n    onTbodyScroll,\n    horScrollPosition\n  }\n}\n"],"names":[],"mappings":";;AAIa,MAAA,SAAA,GAAY,CAAC,iBAA8C,KAAA;AACtE,EAAA,MAAM,cAAc,GAA6B,EAAA,CAAA;AAEjD,EAAA,MAAM,oBAAoB,GAAiC,EAAA,CAAA;AAE3D,EAAA,MAAM,cAAc,GAAmE,EAAA,CAAA;AAEvF,EAAM,MAAA,aAAA,GAAgB,CAAC,CAAa,KAAA;AAXtC,IAAA,IAAA,EAAA,CAAA;AAYI,IAAA,MAAM,SAAS,CAAE,CAAA,MAAA,CAAA;AACjB,IAAM,MAAA,EAAE,YAAe,GAAA,MAAA,CAAA;AAEvB,IAAY,CAAA,EAAA,GAAA,WAAA,CAAA,KAAA,KAAZ,mBAAmB,UAAW,CAAA,UAAA,CAAA,CAAA;AAC9B,IAAA,oBAAA,CAAqB,MAAM,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAM,MAAA,oBAAA,GAAuB,CAAC,eAAoC,KAAA;AAChE,IAAM,MAAA,EAAE,UAAY,EAAA,WAAA,EAAgB,GAAA,eAAA,CAAA;AACpC,IAAM,MAAA,cAAA,GAAiB,eAAgB,CAAA,iBAAA,CAAmB,WAAc,GAAA,WAAA,CAAA;AAExE,IAAA,IAAI,cAAmB,KAAA,CAAA;AAAG,MAAA,OAAA;AAE1B,IAAA,IAAI,eAAe,CAAG,EAAA;AACpB,MAAA,iBAAA,CAAkB,KAAQ,GAAA,MAAA,CAAA;AAAA,KAC5B,MAAA,IAAW,eAAe,cAAgB,EAAA;AACxC,MAAA,iBAAA,CAAkB,KAAQ,GAAA,OAAA,CAAA;AAAA,KACrB,MAAA;AACL,MAAA,iBAAA,CAAkB,KAAQ,GAAA,QAAA,CAAA;AAAA,KAC5B;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,0BAA0B,MAAM;AAlCxC,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAmCI,IAAA,MAAM,eAAkB,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAA,CAAY,KAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,QAAnB,IAAwB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAA,CAAA;AAChD,IAAA,eAAA,IAAmB,qBAAqB,eAAe,CAAA,CAAA;AAAA,GACzD,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAwB,uBAAA,EAAA,CAAA;AAAA,GACzB,CAAA,CAAA;AAED,EAAA,KAAA;AAAA,IACE,MAAM,iBAAkB,CAAA,KAAA;AAAA,IACxB,MAAM;AACJ,MAAwB,uBAAA,EAAA,CAAA;AAAA,KAC1B;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,GACF,CAAA;AACF;;;;"}