1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { elementTransitionEnd } from './utils.js';
- export default function effectVirtualTransitionEnd({
- swiper,
- duration,
- transformElements,
- allSlides
- }) {
- const {
- activeIndex
- } = swiper;
- const getSlide = el => {
- if (!el.parentElement) {
- // assume shadow root
- const slide = swiper.slides.filter(slideEl => slideEl.shadowEl && slideEl.shadowEl === el.parentNode)[0];
- return slide;
- }
- return el.parentElement;
- };
- if (swiper.params.virtualTranslate && duration !== 0) {
- let eventTriggered = false;
- let transitionEndTarget;
- if (allSlides) {
- transitionEndTarget = transformElements;
- } else {
- transitionEndTarget = transformElements.filter(transformEl => {
- const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;
- return swiper.getSlideIndex(el) === activeIndex;
- });
- }
- transitionEndTarget.forEach(el => {
- elementTransitionEnd(el, () => {
- if (eventTriggered) return;
- if (!swiper || swiper.destroyed) return;
- eventTriggered = true;
- swiper.animating = false;
- const evt = new window.CustomEvent('transitionend', {
- bubbles: true,
- cancelable: true
- });
- swiper.wrapperEl.dispatchEvent(evt);
- });
- });
- }
- }
|