{"version":3,"file":"useLazyLoad.mjs","sources":["../../../src/table/hooks/useLazyLoad.ts"],"sourcesContent":["import { ref, onMounted, computed, nextTick, Ref, UnwrapRef } from 'vue';\nimport observe from '../../_common/js/utils/observe';\nimport { isServer } from '../../utils/dom';\n\nexport type UseLazyLoadParams = UnwrapRef<{\n  type: 'lazy' | 'virtual';\n  rowHeight?: number;\n  bufferSize?: number;\n}>;\n\nexport default function useLazyLoad(\n  containerRef: Ref<HTMLElement>,\n  childRef: Ref<HTMLTableRowElement>,\n  params: UseLazyLoadParams,\n) {\n  const tRowHeight = computed(() => Math.max(params.rowHeight || 48, 48));\n  const isInit = ref(false);\n  const hasLazyLoadHolder = computed(() => params?.type === 'lazy' && !isInit.value);\n\n  const requestAnimationFrame = (!isServer && window.requestAnimationFrame) || ((cb) => setTimeout(cb, 16.6));\n\n  const init = () => {\n    if (!isInit.value) {\n      requestAnimationFrame(() => {\n        isInit.value = true;\n      });\n    }\n  };\n\n  onMounted(() => {\n    if (params?.type !== 'lazy') return;\n    nextTick(() => {\n      const bufferSize = Math.max(10, params.bufferSize || 10);\n      const height = tRowHeight.value * bufferSize;\n      observe(childRef.value, containerRef.value, init, height);\n    });\n  });\n\n  return {\n    hasLazyLoadHolder,\n    tRowHeight,\n  };\n}\n"],"names":["requestAnimationFrame","onMounted","nextTick","observe","hasLazyLoadHolder","tRowHeight"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUA,SAAA,WAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA;;;;AAMQ,EAAA,IAAA,MAAA,GAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;AAC6B,IAAA,OAAA,CAAA,MAAA,KAAA,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,IAAA,MAAA,MAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA;;;AAE4C,IAAA,OAAA,UAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;;AAE/E,EAAA,IAAA,IAAA,GAAA,SAAA,IAAA,GAAA;AACM,IAAA,IAAA,CAAA,MAAA,CAAA,KAAA,EAAA;AACFA,MAAAA,qBAAAA,CAAAA,YAAAA;;AAEA,OAAA,CAAA,CAAA;AACF,KAAA;;AAGFC,EAAAA,SAAAA,CAAAA,YAAAA;;AAEEC,IAAAA,QAAAA,CAAAA,YAAAA;AACE,MAAA,IAAA,UAAA,GAAA,IAAA,CAAA,GAAA,CAAA,EAAA,EAAA,MAAA,CAAA,UAAA,IAAA,EAAA,CAAA,CAAA;AACM,MAAA,IAAA,MAAA,GAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA;AACNC,MAAAA,OAAAA,CAAAA,QAAAA,CAAAA,KAAAA,EAAAA,YAAAA,CAAAA,KAAAA,EAAAA,IAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AACF,KAAA,CAAA,CAAA;AACF,GAAA,CAAA,CAAA;;AAGEC,IAAAA,iBAAAA,EAAAA,iBAAAA;AACAC,IAAAA,UAAAA,EAAAA,UAAAA;;AAEJ;;;;"}