xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 2.36 kB
Source Map (JSON)
{"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;;;;"}