import type { ComputedRef } from 'vue';
import { computed, toRefs } from 'vue';
import { VirtualListProps } from '../virtual-list-types';

interface IUseVirtual {
  isVirtual: ComputedRef<boolean>;
  inVirtual: ComputedRef<boolean>;
}

export default function useVirtual(props: VirtualListProps): IUseVirtual {
  const { height, data, itemHeight, virtual } = toRefs(props);
  const isVirtual = computed(() => {
    return Boolean(virtual.value !== false && height.value);
  });
  const inVirtual = computed(() => {
    return Boolean(isVirtual.value && data.value.length && itemHeight.value * data.value.length > height.value);
  });
  return { isVirtual, inVirtual };
}