Sha256: 944c28d881d5cb8f89dc2f1842a82a08d7402fd77112e41a11732a695e011f77

Contents?: true

Size: 1.88 KB

Versions: 64

Compression:

Stored size: 1.88 KB

Contents

export default class Infinite {
	constructor(slider) {
		this.slider = slider;
	}

	init() {
		if (this.slider.options.infinite && this.slider.options.effect === 'translate') {
			if (this.slider.options.centerMode) {
				this._infiniteCount = Math.ceil(this.slider.slidesToShow + (this.slider.slidesToShow / 2));
			} else {
				this._infiniteCount = this.slider.slidesToShow;
			}

			let frontClones = [];
			let slideIndex = 0;
			for (let i = this.slider.state.length; i > (this.slider.state.length - 1 - this._infiniteCount); i -= 1) {
				slideIndex = (this.slider.state.length * Math.floor(this._infiniteCount / this.slider.state.length) + i - 1) % this.slider.state.length;
				frontClones.unshift(this._cloneSlide(this.slider.slides[slideIndex], slideIndex - this.slider.state.length));
			}

			let backClones = [];
			for (let i = 0; i < this._infiniteCount + this.slider.state.length; i += 1) {
				backClones.push(this._cloneSlide(this.slider.slides[i % this.slider.state.length], i + this.slider.state.length));
			}

			this.slider.slides = [
				...frontClones,
				...this.slider.slides,
				...backClones
			];
		}
		return this;
	}

	apply() {
	}

	onTransitionEnd(e) {
		if (this.slider.options.infinite) {
			if (this.slider.state.next >= this.slider.state.length) {
				this.slider.state.index = this.slider.state.next = this.slider.state.next - this.slider.state.length;
				this.slider.transitioner.apply(true);
			} else if (this.slider.state.next < 0) {
				this.slider.state.index = this.slider.state.next = this.slider.state.length + this.slider.state.next;
				this.slider.transitioner.apply(true);
			}
		}
	}

	_cloneSlide(slide, index) {
		const newSlide = slide.cloneNode(true);
		newSlide.dataset.sliderIndex = index;
		newSlide.dataset.cloned = true;
		const ids = newSlide.querySelectorAll('[id]') || [];
		ids.forEach(id => {
			id.setAttribute('id', '');
		});
		return newSlide;
	}
}

Version data entries

64 entries across 64 versions & 1 rubygems

Version Path
intia-theme-0.1.65 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.64 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.63 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.62 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.61 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.60 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.59 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.58 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.57 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.56 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.55 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.54 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.53 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.52 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.51 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.50 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.49 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.48 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.47 node_modules/bulma-carousel/src/js/components/infinite.js
intia-theme-0.1.46 node_modules/bulma-carousel/src/js/components/infinite.js