{"version":3,"file":"useListVirtualScroll.mjs","sources":["../../../../components/list/hooks/useListVirtualScroll.ts"],"sourcesContent":["import { Ref, computed } from 'vue';\n\nimport log from '@tdesign/common-js/log/index';\nimport { useVirtualScrollNew } from '@tdesign/shared-hooks';\nimport { TdListProps } from '../type';\nimport { Styles, type ComponentScrollToElementParams } from '../../common';\n\nexport const useListVirtualScroll = (\n  scroll: TdListProps['scroll'],\n  listRef: Ref<HTMLElement>,\n  listItems: Ref<any[]>,\n) => {\n  const virtualScrollParams = computed(() => ({\n    data: listItems.value,\n    scroll: scroll,\n  }));\n  const virtualConfig = useVirtualScrollNew(listRef, virtualScrollParams);\n  const isVirtualScroll = computed(() => virtualConfig.isVirtualScroll.value);\n  let lastScrollY = -1;\n\n  const onInnerVirtualScroll = (e: WheelEvent) => {\n    const target = (e.target || e.srcElement) as HTMLElement;\n    const top = target.scrollTop;\n    if (lastScrollY !== top) {\n      virtualConfig.isVirtualScroll.value && virtualConfig.handleScroll();\n    } else {\n      lastScrollY = -1;\n    }\n    lastScrollY = top;\n  };\n\n  const cursorStyle = computed(\n    () =>\n      ({\n        position: 'absolute',\n        width: '1px',\n        height: '1px',\n        transition: 'transform 0.2s',\n        transform: `translate(0, ${virtualConfig.scrollHeight.value}px)`,\n        '-ms-transform': `translate(0, ${virtualConfig.scrollHeight.value}px)`,\n        '-moz-transform': `translate(0, ${virtualConfig.scrollHeight.value}px)`,\n        '-webkit-transform': `translate(0, ${virtualConfig.scrollHeight.value}px)`,\n      } as Styles),\n  );\n\n  const listStyle = computed(\n    () =>\n      ({\n        transform: `translate(0, ${virtualConfig.translateY.value}px)`,\n        '-ms-transform': `translate(0, ${virtualConfig.translateY.value}px)`,\n        '-moz-transform': `translate(0, ${virtualConfig.translateY.value}px)`,\n        '-webkit-transform': `translate(0, ${virtualConfig.translateY.value}px)`,\n      } as Styles),\n  );\n\n  const handleScrollTo = (params: ComponentScrollToElementParams) => {\n    const { index, key } = params;\n    const targetIndex = index === 0 ? index : index ?? Number(key);\n    if (!targetIndex && targetIndex !== 0) {\n      log.error('List', 'scrollTo: `index` or `key` must exist.');\n      return;\n    }\n    if (targetIndex < 0 || targetIndex >= listItems.value.length) {\n      log.error('List', `${targetIndex} does not exist in data, check \\`index\\` or \\`key\\` please.`);\n      return;\n    }\n    virtualConfig.scrollToElement({ ...params, index: targetIndex - 1 });\n  };\n\n  return {\n    virtualConfig,\n    cursorStyle,\n    listStyle,\n    isVirtualScroll,\n    onInnerVirtualScroll,\n    scrollToElement: handleScrollTo,\n  };\n};\n"],"names":["useListVirtualScroll","scroll","listRef","listItems","virtualScrollParams","computed","data","value","virtualConfig","useVirtualScrollNew","isVirtualScroll","lastScrollY","onInnerVirtualScroll","e","target","srcElement","top","scrollTop","handleScroll","cursorStyle","position","width","height","transition","transform","concat","scrollHeight","listStyle","translateY","handleScrollTo","params","index","key","targetIndex","Number","log","error","length","scrollToElement"],"mappings":"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"}