Browse code

Remove old version 5

Benjamin Roth authored on14/03/2021 15:27:00
Showing1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,245 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Virtual = {
5
-  update(force) {
6
-    const swiper = this;
7
-    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
8
-    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
9
-    const {
10
-      from: previousFrom,
11
-      to: previousTo,
12
-      slides,
13
-      slidesGrid: previousSlidesGrid,
14
-      renderSlide,
15
-      offset: previousOffset,
16
-    } = swiper.virtual;
17
-    swiper.updateActiveIndex();
18
-    const activeIndex = swiper.activeIndex || 0;
19
-
20
-    let offsetProp;
21
-    if (swiper.rtlTranslate) offsetProp = 'right';
22
-    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
23
-
24
-    let slidesAfter;
25
-    let slidesBefore;
26
-    if (centeredSlides) {
27
-      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
28
-      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
29
-    } else {
30
-      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
31
-      slidesBefore = slidesPerGroup + addSlidesAfter;
32
-    }
33
-    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
34
-    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
35
-    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
36
-
37
-    Utils.extend(swiper.virtual, {
38
-      from,
39
-      to,
40
-      offset,
41
-      slidesGrid: swiper.slidesGrid,
42
-    });
43
-
44
-    function onRendered() {
45
-      swiper.updateSlides();
46
-      swiper.updateProgress();
47
-      swiper.updateSlidesClasses();
48
-      if (swiper.lazy && swiper.params.lazy.enabled) {
49
-        swiper.lazy.load();
50
-      }
51
-    }
52
-
53
-    if (previousFrom === from && previousTo === to && !force) {
54
-      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
55
-        swiper.slides.css(offsetProp, `${offset}px`);
56
-      }
57
-      swiper.updateProgress();
58
-      return;
59
-    }
60
-    if (swiper.params.virtual.renderExternal) {
61
-      swiper.params.virtual.renderExternal.call(swiper, {
62
-        offset,
63
-        from,
64
-        to,
65
-        slides: (function getSlides() {
66
-          const slidesToRender = [];
67
-          for (let i = from; i <= to; i += 1) {
68
-            slidesToRender.push(slides[i]);
69
-          }
70
-          return slidesToRender;
71
-        }()),
72
-      });
73
-      onRendered();
74
-      return;
75
-    }
76
-    const prependIndexes = [];
77
-    const appendIndexes = [];
78
-    if (force) {
79
-      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
80
-    } else {
81
-      for (let i = previousFrom; i <= previousTo; i += 1) {
82
-        if (i < from || i > to) {
83
-          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
84
-        }
85
-      }
86
-    }
87
-    for (let i = 0; i < slides.length; i += 1) {
88
-      if (i >= from && i <= to) {
89
-        if (typeof previousTo === 'undefined' || force) {
90
-          appendIndexes.push(i);
91
-        } else {
92
-          if (i > previousTo) appendIndexes.push(i);
93
-          if (i < previousFrom) prependIndexes.push(i);
94
-        }
95
-      }
96
-    }
97
-    appendIndexes.forEach((index) => {
98
-      swiper.$wrapperEl.append(renderSlide(slides[index], index));
99
-    });
100
-    prependIndexes.sort((a, b) => b - a).forEach((index) => {
101
-      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
102
-    });
103
-    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
104
-    onRendered();
105
-  },
106
-  renderSlide(slide, index) {
107
-    const swiper = this;
108
-    const params = swiper.params.virtual;
109
-    if (params.cache && swiper.virtual.cache[index]) {
110
-      return swiper.virtual.cache[index];
111
-    }
112
-    const $slideEl = params.renderSlide
113
-      ? $(params.renderSlide.call(swiper, slide, index))
114
-      : $(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
115
-    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
116
-    if (params.cache) swiper.virtual.cache[index] = $slideEl;
117
-    return $slideEl;
118
-  },
119
-  appendSlide(slides) {
120
-    const swiper = this;
121
-    if (typeof slides === 'object' && 'length' in slides) {
122
-      for (let i = 0; i < slides.length; i += 1) {
123
-        if (slides[i]) swiper.virtual.slides.push(slides[i]);
124
-      }
125
-    } else {
126
-      swiper.virtual.slides.push(slides);
127
-    }
128
-    swiper.virtual.update(true);
129
-  },
130
-  prependSlide(slides) {
131
-    const swiper = this;
132
-    const activeIndex = swiper.activeIndex;
133
-    let newActiveIndex = activeIndex + 1;
134
-    let numberOfNewSlides = 1;
135
-
136
-    if (Array.isArray(slides)) {
137
-      for (let i = 0; i < slides.length; i += 1) {
138
-        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
139
-      }
140
-      newActiveIndex = activeIndex + slides.length;
141
-      numberOfNewSlides = slides.length;
142
-    } else {
143
-      swiper.virtual.slides.unshift(slides);
144
-    }
145
-    if (swiper.params.virtual.cache) {
146
-      const cache = swiper.virtual.cache;
147
-      const newCache = {};
148
-      Object.keys(cache).forEach((cachedIndex) => {
149
-        const $cachedEl = cache[cachedIndex];
150
-        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
151
-        if (cachedElIndex) {
152
-          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
153
-        }
154
-        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
155
-      });
156
-      swiper.virtual.cache = newCache;
157
-    }
158
-    swiper.virtual.update(true);
159
-    swiper.slideTo(newActiveIndex, 0);
160
-  },
161
-  removeSlide(slidesIndexes) {
162
-    const swiper = this;
163
-    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
164
-    let activeIndex = swiper.activeIndex;
165
-    if (Array.isArray(slidesIndexes)) {
166
-      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
167
-        swiper.virtual.slides.splice(slidesIndexes[i], 1);
168
-        if (swiper.params.virtual.cache) {
169
-          delete swiper.virtual.cache[slidesIndexes[i]];
170
-        }
171
-        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
172
-        activeIndex = Math.max(activeIndex, 0);
173
-      }
174
-    } else {
175
-      swiper.virtual.slides.splice(slidesIndexes, 1);
176
-      if (swiper.params.virtual.cache) {
177
-        delete swiper.virtual.cache[slidesIndexes];
178
-      }
179
-      if (slidesIndexes < activeIndex) activeIndex -= 1;
180
-      activeIndex = Math.max(activeIndex, 0);
181
-    }
182
-    swiper.virtual.update(true);
183
-    swiper.slideTo(activeIndex, 0);
184
-  },
185
-  removeAllSlides() {
186
-    const swiper = this;
187
-    swiper.virtual.slides = [];
188
-    if (swiper.params.virtual.cache) {
189
-      swiper.virtual.cache = {};
190
-    }
191
-    swiper.virtual.update(true);
192
-    swiper.slideTo(0, 0);
193
-  },
194
-};
195
-
196
-export default {
197
-  name: 'virtual',
198
-  params: {
199
-    virtual: {
200
-      enabled: false,
201
-      slides: [],
202
-      cache: true,
203
-      renderSlide: null,
204
-      renderExternal: null,
205
-      addSlidesBefore: 0,
206
-      addSlidesAfter: 0,
207
-    },
208
-  },
209
-  create() {
210
-    const swiper = this;
211
-    Utils.extend(swiper, {
212
-      virtual: {
213
-        update: Virtual.update.bind(swiper),
214
-        appendSlide: Virtual.appendSlide.bind(swiper),
215
-        prependSlide: Virtual.prependSlide.bind(swiper),
216
-        removeSlide: Virtual.removeSlide.bind(swiper),
217
-        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
218
-        renderSlide: Virtual.renderSlide.bind(swiper),
219
-        slides: swiper.params.virtual.slides,
220
-        cache: {},
221
-      },
222
-    });
223
-  },
224
-  on: {
225
-    beforeInit() {
226
-      const swiper = this;
227
-      if (!swiper.params.virtual.enabled) return;
228
-      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
229
-      const overwriteParams = {
230
-        watchSlidesProgress: true,
231
-      };
232
-      Utils.extend(swiper.params, overwriteParams);
233
-      Utils.extend(swiper.originalParams, overwriteParams);
234
-
235
-      if (!swiper.params.initialSlide) {
236
-        swiper.virtual.update();
237
-      }
238
-    },
239
-    setTranslate() {
240
-      const swiper = this;
241
-      if (!swiper.params.virtual.enabled) return;
242
-      swiper.virtual.update();
243
-    },
244
-  },
245
-};
Browse code

Initial commit

Benjamin Roth authored on19/05/2020 21:59:44
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,245 @@
1
+import $ from '../../utils/dom';
2
+import Utils from '../../utils/utils';
3
+
4
+const Virtual = {
5
+  update(force) {
6
+    const swiper = this;
7
+    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
8
+    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
9
+    const {
10
+      from: previousFrom,
11
+      to: previousTo,
12
+      slides,
13
+      slidesGrid: previousSlidesGrid,
14
+      renderSlide,
15
+      offset: previousOffset,
16
+    } = swiper.virtual;
17
+    swiper.updateActiveIndex();
18
+    const activeIndex = swiper.activeIndex || 0;
19
+
20
+    let offsetProp;
21
+    if (swiper.rtlTranslate) offsetProp = 'right';
22
+    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
23
+
24
+    let slidesAfter;
25
+    let slidesBefore;
26
+    if (centeredSlides) {
27
+      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
28
+      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
29
+    } else {
30
+      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
31
+      slidesBefore = slidesPerGroup + addSlidesAfter;
32
+    }
33
+    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
34
+    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
35
+    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
36
+
37
+    Utils.extend(swiper.virtual, {
38
+      from,
39
+      to,
40
+      offset,
41
+      slidesGrid: swiper.slidesGrid,
42
+    });
43
+
44
+    function onRendered() {
45
+      swiper.updateSlides();
46
+      swiper.updateProgress();
47
+      swiper.updateSlidesClasses();
48
+      if (swiper.lazy && swiper.params.lazy.enabled) {
49
+        swiper.lazy.load();
50
+      }
51
+    }
52
+
53
+    if (previousFrom === from && previousTo === to && !force) {
54
+      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
55
+        swiper.slides.css(offsetProp, `${offset}px`);
56
+      }
57
+      swiper.updateProgress();
58
+      return;
59
+    }
60
+    if (swiper.params.virtual.renderExternal) {
61
+      swiper.params.virtual.renderExternal.call(swiper, {
62
+        offset,
63
+        from,
64
+        to,
65
+        slides: (function getSlides() {
66
+          const slidesToRender = [];
67
+          for (let i = from; i <= to; i += 1) {
68
+            slidesToRender.push(slides[i]);
69
+          }
70
+          return slidesToRender;
71
+        }()),
72
+      });
73
+      onRendered();
74
+      return;
75
+    }
76
+    const prependIndexes = [];
77
+    const appendIndexes = [];
78
+    if (force) {
79
+      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
80
+    } else {
81
+      for (let i = previousFrom; i <= previousTo; i += 1) {
82
+        if (i < from || i > to) {
83
+          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
84
+        }
85
+      }
86
+    }
87
+    for (let i = 0; i < slides.length; i += 1) {
88
+      if (i >= from && i <= to) {
89
+        if (typeof previousTo === 'undefined' || force) {
90
+          appendIndexes.push(i);
91
+        } else {
92
+          if (i > previousTo) appendIndexes.push(i);
93
+          if (i < previousFrom) prependIndexes.push(i);
94
+        }
95
+      }
96
+    }
97
+    appendIndexes.forEach((index) => {
98
+      swiper.$wrapperEl.append(renderSlide(slides[index], index));
99
+    });
100
+    prependIndexes.sort((a, b) => b - a).forEach((index) => {
101
+      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
102
+    });
103
+    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
104
+    onRendered();
105
+  },
106
+  renderSlide(slide, index) {
107
+    const swiper = this;
108
+    const params = swiper.params.virtual;
109
+    if (params.cache && swiper.virtual.cache[index]) {
110
+      return swiper.virtual.cache[index];
111
+    }
112
+    const $slideEl = params.renderSlide
113
+      ? $(params.renderSlide.call(swiper, slide, index))
114
+      : $(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
115
+    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
116
+    if (params.cache) swiper.virtual.cache[index] = $slideEl;
117
+    return $slideEl;
118
+  },
119
+  appendSlide(slides) {
120
+    const swiper = this;
121
+    if (typeof slides === 'object' && 'length' in slides) {
122
+      for (let i = 0; i < slides.length; i += 1) {
123
+        if (slides[i]) swiper.virtual.slides.push(slides[i]);
124
+      }
125
+    } else {
126
+      swiper.virtual.slides.push(slides);
127
+    }
128
+    swiper.virtual.update(true);
129
+  },
130
+  prependSlide(slides) {
131
+    const swiper = this;
132
+    const activeIndex = swiper.activeIndex;
133
+    let newActiveIndex = activeIndex + 1;
134
+    let numberOfNewSlides = 1;
135
+
136
+    if (Array.isArray(slides)) {
137
+      for (let i = 0; i < slides.length; i += 1) {
138
+        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
139
+      }
140
+      newActiveIndex = activeIndex + slides.length;
141
+      numberOfNewSlides = slides.length;
142
+    } else {
143
+      swiper.virtual.slides.unshift(slides);
144
+    }
145
+    if (swiper.params.virtual.cache) {
146
+      const cache = swiper.virtual.cache;
147
+      const newCache = {};
148
+      Object.keys(cache).forEach((cachedIndex) => {
149
+        const $cachedEl = cache[cachedIndex];
150
+        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
151
+        if (cachedElIndex) {
152
+          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
153
+        }
154
+        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
155
+      });
156
+      swiper.virtual.cache = newCache;
157
+    }
158
+    swiper.virtual.update(true);
159
+    swiper.slideTo(newActiveIndex, 0);
160
+  },
161
+  removeSlide(slidesIndexes) {
162
+    const swiper = this;
163
+    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
164
+    let activeIndex = swiper.activeIndex;
165
+    if (Array.isArray(slidesIndexes)) {
166
+      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
167
+        swiper.virtual.slides.splice(slidesIndexes[i], 1);
168
+        if (swiper.params.virtual.cache) {
169
+          delete swiper.virtual.cache[slidesIndexes[i]];
170
+        }
171
+        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
172
+        activeIndex = Math.max(activeIndex, 0);
173
+      }
174
+    } else {
175
+      swiper.virtual.slides.splice(slidesIndexes, 1);
176
+      if (swiper.params.virtual.cache) {
177
+        delete swiper.virtual.cache[slidesIndexes];
178
+      }
179
+      if (slidesIndexes < activeIndex) activeIndex -= 1;
180
+      activeIndex = Math.max(activeIndex, 0);
181
+    }
182
+    swiper.virtual.update(true);
183
+    swiper.slideTo(activeIndex, 0);
184
+  },
185
+  removeAllSlides() {
186
+    const swiper = this;
187
+    swiper.virtual.slides = [];
188
+    if (swiper.params.virtual.cache) {
189
+      swiper.virtual.cache = {};
190
+    }
191
+    swiper.virtual.update(true);
192
+    swiper.slideTo(0, 0);
193
+  },
194
+};
195
+
196
+export default {
197
+  name: 'virtual',
198
+  params: {
199
+    virtual: {
200
+      enabled: false,
201
+      slides: [],
202
+      cache: true,
203
+      renderSlide: null,
204
+      renderExternal: null,
205
+      addSlidesBefore: 0,
206
+      addSlidesAfter: 0,
207
+    },
208
+  },
209
+  create() {
210
+    const swiper = this;
211
+    Utils.extend(swiper, {
212
+      virtual: {
213
+        update: Virtual.update.bind(swiper),
214
+        appendSlide: Virtual.appendSlide.bind(swiper),
215
+        prependSlide: Virtual.prependSlide.bind(swiper),
216
+        removeSlide: Virtual.removeSlide.bind(swiper),
217
+        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
218
+        renderSlide: Virtual.renderSlide.bind(swiper),
219
+        slides: swiper.params.virtual.slides,
220
+        cache: {},
221
+      },
222
+    });
223
+  },
224
+  on: {
225
+    beforeInit() {
226
+      const swiper = this;
227
+      if (!swiper.params.virtual.enabled) return;
228
+      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
229
+      const overwriteParams = {
230
+        watchSlidesProgress: true,
231
+      };
232
+      Utils.extend(swiper.params, overwriteParams);
233
+      Utils.extend(swiper.originalParams, overwriteParams);
234
+
235
+      if (!swiper.params.initialSlide) {
236
+        swiper.virtual.update();
237
+      }
238
+    },
239
+    setTranslate() {
240
+      const swiper = this;
241
+      if (!swiper.params.virtual.enabled) return;
242
+      swiper.virtual.update();
243
+    },
244
+  },
245
+};