56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
export default function effectInit(params) {
 | 
						|
  const {
 | 
						|
    effect,
 | 
						|
    swiper,
 | 
						|
    on,
 | 
						|
    setTranslate,
 | 
						|
    setTransition,
 | 
						|
    overwriteParams,
 | 
						|
    perspective,
 | 
						|
    recreateShadows,
 | 
						|
    getEffectParams
 | 
						|
  } = params;
 | 
						|
  on('beforeInit', () => {
 | 
						|
    if (swiper.params.effect !== effect) return;
 | 
						|
    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
 | 
						|
    if (perspective && perspective()) {
 | 
						|
      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
 | 
						|
    }
 | 
						|
    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
 | 
						|
    Object.assign(swiper.params, overwriteParamsResult);
 | 
						|
    Object.assign(swiper.originalParams, overwriteParamsResult);
 | 
						|
  });
 | 
						|
  on('setTranslate', () => {
 | 
						|
    if (swiper.params.effect !== effect) return;
 | 
						|
    setTranslate();
 | 
						|
  });
 | 
						|
  on('setTransition', (_s, duration) => {
 | 
						|
    if (swiper.params.effect !== effect) return;
 | 
						|
    setTransition(duration);
 | 
						|
  });
 | 
						|
  on('transitionEnd', () => {
 | 
						|
    if (swiper.params.effect !== effect) return;
 | 
						|
    if (recreateShadows) {
 | 
						|
      if (!getEffectParams || !getEffectParams().slideShadows) return;
 | 
						|
      // remove shadows
 | 
						|
      swiper.slides.forEach(slideEl => {
 | 
						|
        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());
 | 
						|
      });
 | 
						|
      // create new one
 | 
						|
      recreateShadows();
 | 
						|
    }
 | 
						|
  });
 | 
						|
  let requireUpdateOnVirtual;
 | 
						|
  on('virtualUpdate', () => {
 | 
						|
    if (swiper.params.effect !== effect) return;
 | 
						|
    if (!swiper.slides.length) {
 | 
						|
      requireUpdateOnVirtual = true;
 | 
						|
    }
 | 
						|
    requestAnimationFrame(() => {
 | 
						|
      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
 | 
						|
        setTranslate();
 | 
						|
        requireUpdateOnVirtual = false;
 | 
						|
      }
 | 
						|
    });
 | 
						|
  });
 | 
						|
} |