effect-init.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. export default function effectInit(params) {
  2. const {
  3. effect,
  4. swiper,
  5. on,
  6. setTranslate,
  7. setTransition,
  8. overwriteParams,
  9. perspective,
  10. recreateShadows,
  11. getEffectParams
  12. } = params;
  13. on('beforeInit', () => {
  14. if (swiper.params.effect !== effect) return;
  15. swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
  16. if (perspective && perspective()) {
  17. swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
  18. }
  19. const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
  20. Object.assign(swiper.params, overwriteParamsResult);
  21. Object.assign(swiper.originalParams, overwriteParamsResult);
  22. });
  23. on('setTranslate', () => {
  24. if (swiper.params.effect !== effect) return;
  25. setTranslate();
  26. });
  27. on('setTransition', (_s, duration) => {
  28. if (swiper.params.effect !== effect) return;
  29. setTransition(duration);
  30. });
  31. on('transitionEnd', () => {
  32. if (swiper.params.effect !== effect) return;
  33. if (recreateShadows) {
  34. if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows
  35. swiper.slides.each(slideEl => {
  36. const $slideEl = swiper.$(slideEl);
  37. $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();
  38. }); // create new one
  39. recreateShadows();
  40. }
  41. });
  42. let requireUpdateOnVirtual;
  43. on('virtualUpdate', () => {
  44. if (swiper.params.effect !== effect) return;
  45. if (!swiper.slides.length) {
  46. requireUpdateOnVirtual = true;
  47. }
  48. requestAnimationFrame(() => {
  49. if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
  50. setTranslate();
  51. requireUpdateOnVirtual = false;
  52. }
  53. });
  54. });
  55. }