import { h } from 'vue';

function updateOnVirtualData(swiper) {
  if (
    !swiper ||
    swiper.destroyed ||
    !swiper.params.virtual ||
    (swiper.params.virtual && !swiper.params.virtual.enabled)
  )
    return;
  swiper.updateSlides();
  swiper.updateProgress();
  swiper.updateSlidesClasses();
  if (swiper.lazy && swiper.params.lazy.enabled) {
    swiper.lazy.load();
  }
}

function renderVirtual(swiperRef, slides, virtualData) {
  if (!virtualData) return null;
  const style = swiperRef.value.isHorizontal()
    ? {
        [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,
      }
    : {
        top: `${virtualData.offset}px`,
      };
  return slides
    .filter((slide, index) => index >= virtualData.from && index <= virtualData.to)
    .map((slide) => {
      if (!slide.props) slide.props = {};
      if (!slide.props.style) slide.props.style = {};
      slide.props.swiperRef = swiperRef;
      slide.props.style = style;
      return h(slide.type, { ...slide.props }, slide.children);
    });
}

export { renderVirtual, updateOnVirtualData };

import { h } from 'vue';

function updateOnVirtualData(swiper) {
  if (
    !swiper ||
    swiper.destroyed ||
    !swiper.params.virtual ||
    (swiper.params.virtual && !swiper.params.virtual.enabled)
  )
    return;
  swiper.updateSlides();
  swiper.updateProgress();
  swiper.updateSlidesClasses();
  if (swiper.lazy && swiper.params.lazy.enabled) {
    swiper.lazy.load();
  }
  if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {
    swiper.parallax.setTranslate();
  }
}

function renderVirtual(swiperRef, slides, virtualData) {
  if (!virtualData) return null;
  const style = swiperRef.value.isHorizontal()
    ? {
        [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,
      }
    : {
        top: `${virtualData.offset}px`,
      };
  return slides
    .filter((slide, index) => index >= virtualData.from && index <= virtualData.to)
    .map((slide) => {
      if (!slide.props) slide.props = {};
      if (!slide.props.style) slide.props.style = {};
      slide.props.swiperRef = swiperRef;
      slide.props.style = style;
      return h(slide.type, { ...slide.props }, slide.children);
    });
}

export { renderVirtual, updateOnVirtualData };

update parallax on Virtual slides rendered