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 |
-}; |
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 |
+}; |