123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- function appendSlide(slides) {
- const swiper = this;
- const {
- params,
- slidesEl
- } = swiper;
- if (params.loop) {
- swiper.loopDestroy();
- }
- const appendElement = slideEl => {
- if (typeof slideEl === 'string') {
- const tempDOM = document.createElement('div');
- tempDOM.innerHTML = slideEl;
- slidesEl.append(tempDOM.children[0]);
- tempDOM.innerHTML = '';
- } else {
- slidesEl.append(slideEl);
- }
- };
- if (typeof slides === 'object' && 'length' in slides) {
- for (let i = 0; i < slides.length; i += 1) {
- if (slides[i]) appendElement(slides[i]);
- }
- } else {
- appendElement(slides);
- }
- swiper.recalcSlides();
- if (params.loop) {
- swiper.loopCreate();
- }
- if (!params.observer || swiper.isElement) {
- swiper.update();
- }
- }
- function prependSlide(slides) {
- const swiper = this;
- const {
- params,
- activeIndex,
- slidesEl
- } = swiper;
- if (params.loop) {
- swiper.loopDestroy();
- }
- let newActiveIndex = activeIndex + 1;
- const prependElement = slideEl => {
- if (typeof slideEl === 'string') {
- const tempDOM = document.createElement('div');
- tempDOM.innerHTML = slideEl;
- slidesEl.prepend(tempDOM.children[0]);
- tempDOM.innerHTML = '';
- } else {
- slidesEl.prepend(slideEl);
- }
- };
- if (typeof slides === 'object' && 'length' in slides) {
- for (let i = 0; i < slides.length; i += 1) {
- if (slides[i]) prependElement(slides[i]);
- }
- newActiveIndex = activeIndex + slides.length;
- } else {
- prependElement(slides);
- }
- swiper.recalcSlides();
- if (params.loop) {
- swiper.loopCreate();
- }
- if (!params.observer || swiper.isElement) {
- swiper.update();
- }
- swiper.slideTo(newActiveIndex, 0, false);
- }
- function addSlide(index, slides) {
- const swiper = this;
- const {
- params,
- activeIndex,
- slidesEl
- } = swiper;
- let activeIndexBuffer = activeIndex;
- if (params.loop) {
- activeIndexBuffer -= swiper.loopedSlides;
- swiper.loopDestroy();
- swiper.recalcSlides();
- }
- const baseLength = swiper.slides.length;
- if (index <= 0) {
- swiper.prependSlide(slides);
- return;
- }
- if (index >= baseLength) {
- swiper.appendSlide(slides);
- return;
- }
- let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
- const slidesBuffer = [];
- for (let i = baseLength - 1; i >= index; i -= 1) {
- const currentSlide = swiper.slides[i];
- currentSlide.remove();
- slidesBuffer.unshift(currentSlide);
- }
- if (typeof slides === 'object' && 'length' in slides) {
- for (let i = 0; i < slides.length; i += 1) {
- if (slides[i]) slidesEl.append(slides[i]);
- }
- newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
- } else {
- slidesEl.append(slides);
- }
- for (let i = 0; i < slidesBuffer.length; i += 1) {
- slidesEl.append(slidesBuffer[i]);
- }
- swiper.recalcSlides();
- if (params.loop) {
- swiper.loopCreate();
- }
- if (!params.observer || swiper.isElement) {
- swiper.update();
- }
- if (params.loop) {
- swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
- } else {
- swiper.slideTo(newActiveIndex, 0, false);
- }
- }
- function removeSlide(slidesIndexes) {
- const swiper = this;
- const {
- params,
- activeIndex
- } = swiper;
- let activeIndexBuffer = activeIndex;
- if (params.loop) {
- activeIndexBuffer -= swiper.loopedSlides;
- swiper.loopDestroy();
- }
- let newActiveIndex = activeIndexBuffer;
- let indexToRemove;
- if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
- for (let i = 0; i < slidesIndexes.length; i += 1) {
- indexToRemove = slidesIndexes[i];
- if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
- if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
- }
- newActiveIndex = Math.max(newActiveIndex, 0);
- } else {
- indexToRemove = slidesIndexes;
- if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
- if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
- newActiveIndex = Math.max(newActiveIndex, 0);
- }
- swiper.recalcSlides();
- if (params.loop) {
- swiper.loopCreate();
- }
- if (!params.observer || swiper.isElement) {
- swiper.update();
- }
- if (params.loop) {
- swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
- } else {
- swiper.slideTo(newActiveIndex, 0, false);
- }
- }
- function removeAllSlides() {
- const swiper = this;
- const slidesIndexes = [];
- for (let i = 0; i < swiper.slides.length; i += 1) {
- slidesIndexes.push(i);
- }
- swiper.removeSlide(slidesIndexes);
- }
- function Manipulation(_ref) {
- let {
- swiper
- } = _ref;
- Object.assign(swiper, {
- appendSlide: appendSlide.bind(swiper),
- prependSlide: prependSlide.bind(swiper),
- addSlide: addSlide.bind(swiper),
- removeSlide: removeSlide.bind(swiper),
- removeAllSlides: removeAllSlides.bind(swiper)
- });
- }
- export { Manipulation as default };
|