{"version":3,"file":"item.mjs","sources":["../../../../../../packages/components/virtual-list/src/item.ts"],"sourcesContent":["import {\n  defineComponent,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  renderSlot,\n} from 'vue'\nimport { definePropType, throttle } from '@element-plus/utils'\nimport { useResize } from '@element-plus/hooks'\nimport { cacheKey } from './hooks'\n\nexport default defineComponent({\n  name: 'Item',\n  inheritAttrs: false,\n  props: {\n    index: {\n      type: Number,\n    },\n    data: {\n      type: definePropType<Record<string, any>>(Object),\n      default: () => ({}),\n    },\n    isDynamicSize: {\n      type: Boolean,\n      default: true,\n    },\n  },\n  setup(props, { slots }) {\n    const cache: any = inject(cacheKey)\n\n    const { observeResize, unobserveResize } = useResize()\n\n    const instance = getCurrentInstance()\n\n    const getEl = () => {\n      const el = instance?.proxy?.$el as Element | null\n      if (\n        el?.nextElementSibling &&\n        el.nextElementSibling !== el.nextSibling &&\n        el.nodeType === 3 &&\n        el.nodeValue !== ''\n      ) {\n        return null\n      } else {\n        return el?.nextElementSibling ?? null\n      }\n    }\n\n    let observed = false\n\n    const setRealSize = (entry: ResizeObserverEntry) => {\n      if (props.isDynamicSize) {\n        const el = getEl()\n        cache.setRealSize(props.index, el, entry)\n      }\n    }\n\n    function handleResize(entry: ResizeObserverEntry) {\n      setRealSize(entry)\n    }\n\n    const throttleResize = throttle(handleResize, 100)\n\n    function observe() {\n      if (observed) return\n\n      const el = getEl()\n\n      if (el) {\n        observeResize(el, throttleResize)\n        observed = true\n      }\n    }\n\n    function unobserve() {\n      if (observed) {\n        const el = getEl()\n\n        if (el) {\n          unobserveResize(el)\n        }\n\n        observed = false\n      }\n    }\n\n    onMounted(() => {\n      observe()\n    })\n\n    onBeforeUnmount(() => {\n      unobserve()\n    })\n\n    return () => renderSlot(slots, 'default')\n  },\n})\n"],"names":[],"mappings":"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"}