@geotrekce/geotrek-rando-widget 0.0.21 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/dist/cjs/{css-shim-4e479c1a.js → css-shim-541cb78a.js} +2 -2
  2. package/dist/cjs/css-shim-541cb78a.js.br +0 -0
  3. package/dist/cjs/css-shim-541cb78a.js.gz +0 -0
  4. package/dist/cjs/{css-shim-4e479c1a.js.map → css-shim-541cb78a.js.map} +1 -1
  5. package/dist/cjs/{dom-52c0133a.js → dom-7f26de17.js} +2 -2
  6. package/dist/cjs/dom-7f26de17.js.br +0 -0
  7. package/dist/cjs/dom-7f26de17.js.gz +0 -0
  8. package/dist/cjs/{dom-52c0133a.js.map → dom-7f26de17.js.map} +1 -1
  9. package/dist/cjs/geotrek-rando-widget.cjs.js +4 -4
  10. package/dist/cjs/geotrek-rando-widget.cjs.js.br +0 -0
  11. package/dist/cjs/geotrek-rando-widget.cjs.js.gz +0 -0
  12. package/dist/cjs/geotrek-rando-widget.cjs.js.map +1 -1
  13. package/dist/cjs/grw-app.cjs.entry.js +61 -17
  14. package/dist/cjs/grw-app.cjs.entry.js.br +0 -0
  15. package/dist/cjs/grw-app.cjs.entry.js.gz +0 -0
  16. package/dist/cjs/grw-app.cjs.entry.js.map +1 -1
  17. package/dist/cjs/{grw-filter_6.cjs.entry.js → grw-filter_7.cjs.entry.js} +5554 -257
  18. package/dist/cjs/grw-filter_7.cjs.entry.js.br +0 -0
  19. package/dist/cjs/grw-filter_7.cjs.entry.js.gz +0 -0
  20. package/dist/cjs/grw-filter_7.cjs.entry.js.map +1 -0
  21. package/dist/cjs/grw-information-desk-detail_3.cjs.entry.js +51 -9
  22. package/dist/cjs/grw-information-desk-detail_3.cjs.entry.js.br +0 -0
  23. package/dist/cjs/grw-information-desk-detail_3.cjs.entry.js.gz +0 -0
  24. package/dist/cjs/grw-information-desk-detail_3.cjs.entry.js.map +1 -1
  25. package/dist/cjs/grw-trek-card.cjs.entry.js +17 -10
  26. package/dist/cjs/grw-trek-card.cjs.entry.js.br +0 -0
  27. package/dist/cjs/grw-trek-card.cjs.entry.js.gz +0 -0
  28. package/dist/cjs/grw-trek-card.cjs.entry.js.map +1 -1
  29. package/dist/cjs/i18n-67fd458f.js +108 -0
  30. package/dist/cjs/i18n-67fd458f.js.br +0 -0
  31. package/dist/cjs/i18n-67fd458f.js.gz +0 -0
  32. package/dist/cjs/i18n-67fd458f.js.map +1 -0
  33. package/dist/cjs/{index-5c1a15c7.js → index-965985fa.js} +486 -30
  34. package/dist/cjs/index-965985fa.js.br +0 -0
  35. package/dist/cjs/index-965985fa.js.gz +0 -0
  36. package/dist/cjs/index-965985fa.js.map +1 -0
  37. package/dist/cjs/loader.cjs.js +4 -4
  38. package/dist/cjs/loader.cjs.js.br +0 -0
  39. package/dist/cjs/loader.cjs.js.gz +0 -0
  40. package/dist/cjs/loader.cjs.js.map +1 -1
  41. package/dist/cjs/pagination-149c2052.js +4655 -0
  42. package/dist/cjs/pagination-149c2052.js.br +0 -0
  43. package/dist/cjs/pagination-149c2052.js.gz +0 -0
  44. package/dist/cjs/pagination-149c2052.js.map +1 -0
  45. package/dist/cjs/{shadow-css-388a8a25.js → shadow-css-2e025b8c.js} +2 -2
  46. package/dist/cjs/shadow-css-2e025b8c.js.br +0 -0
  47. package/dist/cjs/shadow-css-2e025b8c.js.gz +0 -0
  48. package/dist/cjs/{shadow-css-388a8a25.js.map → shadow-css-2e025b8c.js.map} +1 -1
  49. package/dist/cjs/{store-a027262c.js → store-002456b2.js} +11 -9
  50. package/dist/cjs/store-002456b2.js.br +0 -0
  51. package/dist/cjs/store-002456b2.js.gz +0 -0
  52. package/dist/cjs/store-002456b2.js.map +1 -0
  53. package/dist/collection/assets/default-image.svg +1 -0
  54. package/dist/collection/assets/default-image.svg.br +1 -0
  55. package/dist/collection/assets/default-image.svg.gz +0 -0
  56. package/dist/collection/assets/layers.svg +1 -0
  57. package/dist/collection/assets/layers.svg.br +0 -0
  58. package/dist/collection/assets/layers.svg.gz +0 -0
  59. package/dist/collection/collection-manifest.json +3 -2
  60. package/dist/collection/components/grw-app/grw-app.css +120 -73
  61. package/dist/collection/components/grw-app/grw-app.css.br +0 -0
  62. package/dist/collection/components/grw-app/grw-app.css.gz +0 -0
  63. package/dist/collection/components/grw-app/grw-app.js +332 -49
  64. package/dist/collection/components/grw-app/grw-app.js.br +0 -0
  65. package/dist/collection/components/grw-app/grw-app.js.gz +0 -0
  66. package/dist/collection/components/grw-app/grw-app.js.map +1 -1
  67. package/dist/collection/components/grw-filter/grw-filter.css +43 -10
  68. package/dist/collection/components/grw-filter/grw-filter.css.br +0 -0
  69. package/dist/collection/components/grw-filter/grw-filter.css.gz +0 -0
  70. package/dist/collection/components/grw-filter/grw-filter.js +1 -1
  71. package/dist/collection/components/grw-filter/grw-filter.js.br +0 -0
  72. package/dist/collection/components/grw-filter/grw-filter.js.gz +0 -0
  73. package/dist/collection/components/grw-filter/grw-filter.js.map +1 -1
  74. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.css +78 -8
  75. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.css.br +0 -0
  76. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.css.gz +0 -0
  77. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.js +32 -4
  78. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.js.br +0 -0
  79. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.js.gz +0 -0
  80. package/dist/collection/components/grw-information-desk-detail/grw-information-desk-detail.js.map +1 -1
  81. package/dist/collection/components/grw-map/grw-map.css +1213 -672
  82. package/dist/collection/components/grw-map/grw-map.css.br +0 -0
  83. package/dist/collection/components/grw-map/grw-map.css.gz +0 -0
  84. package/dist/collection/components/grw-map/grw-map.js +269 -59
  85. package/dist/collection/components/grw-map/grw-map.js.br +0 -0
  86. package/dist/collection/components/grw-map/grw-map.js.gz +0 -0
  87. package/dist/collection/components/grw-map/grw-map.js.map +1 -1
  88. package/dist/collection/components/grw-poi-detail/grw-poi-detail.css +563 -11
  89. package/dist/collection/components/grw-poi-detail/grw-poi-detail.css.br +0 -0
  90. package/dist/collection/components/grw-poi-detail/grw-poi-detail.css.gz +0 -0
  91. package/dist/collection/components/grw-poi-detail/grw-poi-detail.js +45 -2
  92. package/dist/collection/components/grw-poi-detail/grw-poi-detail.js.br +0 -0
  93. package/dist/collection/components/grw-poi-detail/grw-poi-detail.js.gz +0 -0
  94. package/dist/collection/components/grw-poi-detail/grw-poi-detail.js.map +1 -1
  95. package/dist/collection/components/grw-select-language/grw-select-language.css +7 -0
  96. package/dist/collection/components/grw-select-language/grw-select-language.css.br +0 -0
  97. package/dist/collection/components/grw-select-language/grw-select-language.css.gz +0 -0
  98. package/dist/collection/components/grw-select-language/grw-select-language.js +26 -0
  99. package/dist/collection/components/grw-select-language/grw-select-language.js.br +0 -0
  100. package/dist/collection/components/grw-select-language/grw-select-language.js.gz +0 -0
  101. package/dist/collection/components/grw-select-language/grw-select-language.js.map +1 -0
  102. package/dist/collection/components/grw-sensitive-area-detail/grw-sensitive-area-detail.css +9 -6
  103. package/dist/collection/components/grw-sensitive-area-detail/grw-sensitive-area-detail.css.br +0 -0
  104. package/dist/collection/components/grw-sensitive-area-detail/grw-sensitive-area-detail.css.gz +0 -0
  105. package/dist/collection/components/grw-trek-card/grw-trek-card.css +44 -16
  106. package/dist/collection/components/grw-trek-card/grw-trek-card.css.br +0 -0
  107. package/dist/collection/components/grw-trek-card/grw-trek-card.css.gz +0 -0
  108. package/dist/collection/components/grw-trek-card/grw-trek-card.js +75 -14
  109. package/dist/collection/components/grw-trek-card/grw-trek-card.js.br +0 -0
  110. package/dist/collection/components/grw-trek-card/grw-trek-card.js.gz +0 -0
  111. package/dist/collection/components/grw-trek-card/grw-trek-card.js.map +1 -1
  112. package/dist/collection/components/grw-trek-detail/grw-trek-detail.css +807 -53
  113. package/dist/collection/components/grw-trek-detail/grw-trek-detail.css.br +0 -0
  114. package/dist/collection/components/grw-trek-detail/grw-trek-detail.css.gz +0 -0
  115. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js +419 -25
  116. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.br +0 -0
  117. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.gz +0 -0
  118. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.map +1 -1
  119. package/dist/collection/components/grw-treks-list/grw-treks-list.css +7 -2
  120. package/dist/collection/components/grw-treks-list/grw-treks-list.css.br +0 -0
  121. package/dist/collection/components/grw-treks-list/grw-treks-list.css.gz +0 -0
  122. package/dist/collection/components/grw-treks-list/grw-treks-list.js +66 -9
  123. package/dist/collection/components/grw-treks-list/grw-treks-list.js.br +0 -0
  124. package/dist/collection/components/grw-treks-list/grw-treks-list.js.gz +0 -0
  125. package/dist/collection/components/grw-treks-list/grw-treks-list.js.map +1 -1
  126. package/dist/collection/i18n/i18n.js +103 -0
  127. package/dist/collection/i18n/i18n.js.br +0 -0
  128. package/dist/collection/i18n/i18n.js.gz +0 -0
  129. package/dist/collection/i18n/i18n.js.map +1 -0
  130. package/dist/collection/store/grw-trek-provider.js +29 -20
  131. package/dist/collection/store/grw-trek-provider.js.br +0 -0
  132. package/dist/collection/store/grw-trek-provider.js.gz +0 -0
  133. package/dist/collection/store/grw-trek-provider.js.map +1 -1
  134. package/dist/collection/store/grw-treks-provider.js +24 -16
  135. package/dist/collection/store/grw-treks-provider.js.br +0 -0
  136. package/dist/collection/store/grw-treks-provider.js.gz +0 -0
  137. package/dist/collection/store/grw-treks-provider.js.map +1 -1
  138. package/dist/collection/store/store.js +9 -7
  139. package/dist/collection/store/store.js.br +0 -0
  140. package/dist/collection/store/store.js.gz +0 -0
  141. package/dist/collection/store/store.js.map +1 -1
  142. package/dist/collection/stories/App.js +30 -6
  143. package/dist/collection/stories/App.js.br +0 -0
  144. package/dist/collection/stories/App.js.gz +0 -0
  145. package/dist/collection/stories/App.stories.js +16 -4
  146. package/dist/collection/stories/App.stories.js.br +0 -0
  147. package/dist/collection/stories/App.stories.js.gz +0 -0
  148. package/dist/collection/stories/TrekCard.js +6 -3
  149. package/dist/collection/stories/TrekCard.js.br +0 -0
  150. package/dist/collection/stories/TrekCard.js.gz +0 -0
  151. package/dist/collection/stories/TrekCard.stories.js +6 -3
  152. package/dist/collection/stories/TrekCard.stories.js.br +0 -0
  153. package/dist/collection/stories/TrekCard.stories.js.gz +0 -0
  154. package/dist/collection/stories/TrekDetail.js +19 -4
  155. package/dist/collection/stories/TrekDetail.js.br +0 -0
  156. package/dist/collection/stories/TrekDetail.js.gz +0 -0
  157. package/dist/collection/stories/TrekDetail.stories.js +8 -4
  158. package/dist/collection/stories/TrekDetail.stories.js.br +0 -0
  159. package/dist/collection/stories/TrekDetail.stories.js.gz +0 -0
  160. package/dist/collection/stories/TrekMap.js +23 -1
  161. package/dist/collection/stories/TrekMap.js.br +0 -0
  162. package/dist/collection/stories/TrekMap.js.gz +0 -0
  163. package/dist/collection/stories/TrekMap.stories.js +6 -1
  164. package/dist/collection/stories/TrekMap.stories.js.br +0 -0
  165. package/dist/collection/stories/TrekMap.stories.js.gz +0 -0
  166. package/dist/collection/stories/TreksList.js +22 -3
  167. package/dist/collection/stories/TreksList.js.br +0 -0
  168. package/dist/collection/stories/TreksList.js.gz +0 -0
  169. package/dist/collection/stories/TreksList.stories.js +6 -3
  170. package/dist/collection/stories/TreksList.stories.js.br +0 -0
  171. package/dist/collection/stories/TreksList.stories.js.gz +0 -0
  172. package/dist/collection/stories/TreksMap.js +6 -3
  173. package/dist/collection/stories/TreksMap.js.br +0 -0
  174. package/dist/collection/stories/TreksMap.js.gz +0 -0
  175. package/dist/collection/stories/TreksMap.stories.js +6 -3
  176. package/dist/collection/stories/TreksMap.stories.js.br +0 -0
  177. package/dist/collection/stories/TreksMap.stories.js.gz +0 -0
  178. package/dist/collection/types/types.js.map +1 -1
  179. package/dist/esm/{css-shim-cfbf2cf5.js → css-shim-8cc70a22.js} +2 -2
  180. package/dist/esm/css-shim-8cc70a22.js.br +0 -0
  181. package/dist/esm/css-shim-8cc70a22.js.gz +0 -0
  182. package/dist/esm/{css-shim-cfbf2cf5.js.map → css-shim-8cc70a22.js.map} +1 -1
  183. package/dist/esm/{dom-c0f8af80.js → dom-60e3e2ad.js} +2 -2
  184. package/dist/esm/dom-60e3e2ad.js.br +0 -0
  185. package/dist/esm/dom-60e3e2ad.js.gz +0 -0
  186. package/dist/esm/{dom-c0f8af80.js.map → dom-60e3e2ad.js.map} +1 -1
  187. package/dist/esm/geotrek-rando-widget.js +5 -5
  188. package/dist/esm/geotrek-rando-widget.js.br +0 -0
  189. package/dist/esm/geotrek-rando-widget.js.gz +0 -0
  190. package/dist/esm/geotrek-rando-widget.js.map +1 -1
  191. package/dist/esm/grw-app.entry.js +61 -17
  192. package/dist/esm/grw-app.entry.js.br +0 -0
  193. package/dist/esm/grw-app.entry.js.gz +0 -0
  194. package/dist/esm/grw-app.entry.js.map +1 -1
  195. package/dist/esm/{grw-filter_6.entry.js → grw-filter_7.entry.js} +5539 -263
  196. package/dist/esm/grw-filter_7.entry.js.br +0 -0
  197. package/dist/esm/grw-filter_7.entry.js.gz +0 -0
  198. package/dist/esm/grw-filter_7.entry.js.map +1 -0
  199. package/dist/esm/grw-information-desk-detail_3.entry.js +51 -9
  200. package/dist/esm/grw-information-desk-detail_3.entry.js.br +0 -0
  201. package/dist/esm/grw-information-desk-detail_3.entry.js.gz +0 -0
  202. package/dist/esm/grw-information-desk-detail_3.entry.js.map +1 -1
  203. package/dist/esm/grw-trek-card.entry.js +17 -10
  204. package/dist/esm/grw-trek-card.entry.js.br +0 -0
  205. package/dist/esm/grw-trek-card.entry.js.gz +0 -0
  206. package/dist/esm/grw-trek-card.entry.js.map +1 -1
  207. package/dist/esm/i18n-b25e6b48.js +106 -0
  208. package/dist/esm/i18n-b25e6b48.js.br +0 -0
  209. package/dist/esm/i18n-b25e6b48.js.gz +0 -0
  210. package/dist/esm/i18n-b25e6b48.js.map +1 -0
  211. package/dist/esm/{index-e862524f.js → index-57c9193c.js} +487 -31
  212. package/dist/esm/index-57c9193c.js.br +0 -0
  213. package/dist/esm/index-57c9193c.js.gz +0 -0
  214. package/dist/esm/index-57c9193c.js.map +1 -0
  215. package/dist/esm/loader.js +5 -5
  216. package/dist/esm/loader.js.br +0 -0
  217. package/dist/esm/loader.js.gz +0 -0
  218. package/dist/esm/loader.js.map +1 -1
  219. package/dist/esm/pagination-24051620.js +4646 -0
  220. package/dist/esm/pagination-24051620.js.br +0 -0
  221. package/dist/esm/pagination-24051620.js.gz +0 -0
  222. package/dist/esm/pagination-24051620.js.map +1 -0
  223. package/dist/esm/{shadow-css-12b9a099.js → shadow-css-19be24ee.js} +2 -2
  224. package/dist/esm/shadow-css-19be24ee.js.br +0 -0
  225. package/dist/esm/shadow-css-19be24ee.js.gz +0 -0
  226. package/dist/esm/{shadow-css-12b9a099.js.map → shadow-css-19be24ee.js.map} +1 -1
  227. package/dist/esm/{store-5565fa38.js → store-b2d579d9.js} +11 -9
  228. package/dist/esm/store-b2d579d9.js.br +0 -0
  229. package/dist/esm/store-b2d579d9.js.gz +0 -0
  230. package/dist/esm/store-b2d579d9.js.map +1 -0
  231. package/dist/esm-es5/{css-shim-cfbf2cf5.js → css-shim-8cc70a22.js} +1 -1
  232. package/dist/esm-es5/css-shim-8cc70a22.js.br +0 -0
  233. package/dist/esm-es5/css-shim-8cc70a22.js.gz +0 -0
  234. package/dist/esm-es5/{css-shim-cfbf2cf5.js.map → css-shim-8cc70a22.js.map} +1 -1
  235. package/dist/esm-es5/{dom-c0f8af80.js → dom-60e3e2ad.js} +1 -1
  236. package/dist/esm-es5/dom-60e3e2ad.js.br +0 -0
  237. package/dist/esm-es5/dom-60e3e2ad.js.gz +0 -0
  238. package/dist/esm-es5/{dom-c0f8af80.js.map → dom-60e3e2ad.js.map} +1 -1
  239. package/dist/esm-es5/geotrek-rando-widget.js +1 -1
  240. package/dist/esm-es5/geotrek-rando-widget.js.br +0 -0
  241. package/dist/esm-es5/geotrek-rando-widget.js.gz +0 -0
  242. package/dist/esm-es5/geotrek-rando-widget.js.map +1 -1
  243. package/dist/esm-es5/grw-app.entry.js +1 -1
  244. package/dist/esm-es5/grw-app.entry.js.br +0 -0
  245. package/dist/esm-es5/grw-app.entry.js.gz +0 -0
  246. package/dist/esm-es5/grw-app.entry.js.map +1 -1
  247. package/dist/esm-es5/grw-filter_7.entry.js +14 -0
  248. package/dist/esm-es5/grw-filter_7.entry.js.br +0 -0
  249. package/dist/esm-es5/grw-filter_7.entry.js.gz +0 -0
  250. package/dist/esm-es5/grw-filter_7.entry.js.map +1 -0
  251. package/dist/esm-es5/grw-information-desk-detail_3.entry.js +1 -1
  252. package/dist/esm-es5/grw-information-desk-detail_3.entry.js.br +0 -0
  253. package/dist/esm-es5/grw-information-desk-detail_3.entry.js.gz +0 -0
  254. package/dist/esm-es5/grw-information-desk-detail_3.entry.js.map +1 -1
  255. package/dist/esm-es5/grw-trek-card.entry.js +1 -1
  256. package/dist/esm-es5/grw-trek-card.entry.js.br +0 -0
  257. package/dist/esm-es5/grw-trek-card.entry.js.gz +0 -0
  258. package/dist/esm-es5/grw-trek-card.entry.js.map +1 -1
  259. package/dist/esm-es5/i18n-b25e6b48.js +2 -0
  260. package/dist/esm-es5/i18n-b25e6b48.js.br +0 -0
  261. package/dist/esm-es5/i18n-b25e6b48.js.gz +0 -0
  262. package/dist/esm-es5/i18n-b25e6b48.js.map +1 -0
  263. package/dist/esm-es5/index-57c9193c.js +3 -0
  264. package/dist/esm-es5/index-57c9193c.js.br +0 -0
  265. package/dist/esm-es5/index-57c9193c.js.gz +0 -0
  266. package/dist/esm-es5/index-57c9193c.js.map +1 -0
  267. package/dist/esm-es5/loader.js +1 -1
  268. package/dist/esm-es5/loader.js.br +0 -0
  269. package/dist/esm-es5/loader.js.gz +0 -0
  270. package/dist/esm-es5/loader.js.map +1 -1
  271. package/dist/esm-es5/pagination-24051620.js +2 -0
  272. package/dist/esm-es5/pagination-24051620.js.br +0 -0
  273. package/dist/esm-es5/pagination-24051620.js.gz +0 -0
  274. package/dist/esm-es5/pagination-24051620.js.map +1 -0
  275. package/dist/esm-es5/{shadow-css-12b9a099.js → shadow-css-19be24ee.js} +1 -1
  276. package/dist/esm-es5/shadow-css-19be24ee.js.br +0 -0
  277. package/dist/esm-es5/shadow-css-19be24ee.js.gz +0 -0
  278. package/dist/esm-es5/{shadow-css-12b9a099.js.map → shadow-css-19be24ee.js.map} +1 -1
  279. package/dist/esm-es5/{store-5565fa38.js → store-b2d579d9.js} +2 -2
  280. package/dist/esm-es5/store-b2d579d9.js.br +0 -0
  281. package/dist/esm-es5/store-b2d579d9.js.gz +0 -0
  282. package/dist/esm-es5/store-b2d579d9.js.map +1 -0
  283. package/dist/geotrek-rando-widget/assets/default-image.svg +1 -0
  284. package/dist/geotrek-rando-widget/assets/default-image.svg.br +1 -0
  285. package/dist/geotrek-rando-widget/assets/default-image.svg.gz +0 -0
  286. package/dist/geotrek-rando-widget/assets/layers.svg +1 -0
  287. package/dist/geotrek-rando-widget/assets/layers.svg.br +0 -0
  288. package/dist/geotrek-rando-widget/assets/layers.svg.gz +0 -0
  289. package/dist/geotrek-rando-widget/geotrek-rando-widget.css +1 -1
  290. package/dist/geotrek-rando-widget/geotrek-rando-widget.css.br +0 -0
  291. package/dist/geotrek-rando-widget/geotrek-rando-widget.css.gz +0 -0
  292. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js +1 -1
  293. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.br +0 -0
  294. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.gz +0 -0
  295. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.map +1 -1
  296. package/dist/geotrek-rando-widget/geotrek-rando-widget.js +1 -1
  297. package/dist/geotrek-rando-widget/geotrek-rando-widget.js.br +0 -0
  298. package/dist/geotrek-rando-widget/geotrek-rando-widget.js.gz +0 -0
  299. package/dist/geotrek-rando-widget/p-0773c38f.js +2 -0
  300. package/dist/geotrek-rando-widget/p-0773c38f.js.br +0 -0
  301. package/dist/geotrek-rando-widget/p-0773c38f.js.gz +0 -0
  302. package/dist/geotrek-rando-widget/p-0773c38f.js.map +1 -0
  303. package/dist/geotrek-rando-widget/{p-3eb96982.js → p-0f28420f.js} +1 -1
  304. package/dist/geotrek-rando-widget/p-0f28420f.js.br +0 -0
  305. package/dist/geotrek-rando-widget/p-0f28420f.js.gz +0 -0
  306. package/dist/geotrek-rando-widget/{p-3eb96982.js.map → p-0f28420f.js.map} +1 -1
  307. package/dist/geotrek-rando-widget/{p-1eb5bb96.js → p-15fed795.js} +1 -1
  308. package/dist/geotrek-rando-widget/p-15fed795.js.br +0 -0
  309. package/dist/geotrek-rando-widget/p-15fed795.js.gz +0 -0
  310. package/dist/geotrek-rando-widget/{p-1eb5bb96.js.map → p-15fed795.js.map} +1 -1
  311. package/dist/geotrek-rando-widget/p-1a25ab22.entry.js +14 -0
  312. package/dist/geotrek-rando-widget/p-1a25ab22.entry.js.br +0 -0
  313. package/dist/geotrek-rando-widget/p-1a25ab22.entry.js.gz +0 -0
  314. package/dist/geotrek-rando-widget/p-1a25ab22.entry.js.map +1 -0
  315. package/dist/geotrek-rando-widget/p-1e1b3006.entry.js +2 -0
  316. package/dist/geotrek-rando-widget/p-1e1b3006.entry.js.br +0 -0
  317. package/dist/geotrek-rando-widget/p-1e1b3006.entry.js.gz +0 -0
  318. package/dist/geotrek-rando-widget/p-1e1b3006.entry.js.map +1 -0
  319. package/dist/geotrek-rando-widget/{p-e6f85aed.system.js → p-2a99981a.system.js} +1 -1
  320. package/dist/geotrek-rando-widget/p-2a99981a.system.js.br +0 -0
  321. package/dist/geotrek-rando-widget/p-2a99981a.system.js.gz +0 -0
  322. package/dist/geotrek-rando-widget/{p-e6f85aed.system.js.map → p-2a99981a.system.js.map} +1 -1
  323. package/dist/geotrek-rando-widget/p-4f746b28.js +3 -0
  324. package/dist/geotrek-rando-widget/p-4f746b28.js.br +0 -0
  325. package/dist/geotrek-rando-widget/p-4f746b28.js.gz +0 -0
  326. package/dist/geotrek-rando-widget/p-4f746b28.js.map +1 -0
  327. package/dist/geotrek-rando-widget/p-58cf0dd0.js +2 -0
  328. package/dist/geotrek-rando-widget/p-58cf0dd0.js.br +0 -0
  329. package/dist/geotrek-rando-widget/p-58cf0dd0.js.gz +0 -0
  330. package/dist/geotrek-rando-widget/p-58cf0dd0.js.map +1 -0
  331. package/dist/geotrek-rando-widget/{p-66d490d8.system.js → p-634eaa8f.system.js} +1 -1
  332. package/dist/geotrek-rando-widget/p-634eaa8f.system.js.br +0 -0
  333. package/dist/geotrek-rando-widget/p-634eaa8f.system.js.gz +0 -0
  334. package/dist/geotrek-rando-widget/{p-66d490d8.system.js.map → p-634eaa8f.system.js.map} +1 -1
  335. package/dist/geotrek-rando-widget/{p-a9a35a44.system.js → p-63e651bf.system.js} +1 -1
  336. package/dist/geotrek-rando-widget/p-63e651bf.system.js.br +0 -0
  337. package/dist/geotrek-rando-widget/p-63e651bf.system.js.gz +0 -0
  338. package/dist/geotrek-rando-widget/{p-a9a35a44.system.js.map → p-63e651bf.system.js.map} +1 -1
  339. package/dist/geotrek-rando-widget/p-6d748d33.system.entry.js +2 -0
  340. package/dist/geotrek-rando-widget/p-6d748d33.system.entry.js.br +0 -0
  341. package/dist/geotrek-rando-widget/p-6d748d33.system.entry.js.gz +0 -0
  342. package/dist/geotrek-rando-widget/p-6d748d33.system.entry.js.map +1 -0
  343. package/dist/geotrek-rando-widget/p-758bdb7e.system.js +2 -0
  344. package/dist/geotrek-rando-widget/p-758bdb7e.system.js.br +0 -0
  345. package/dist/geotrek-rando-widget/p-758bdb7e.system.js.gz +0 -0
  346. package/dist/geotrek-rando-widget/p-758bdb7e.system.js.map +1 -0
  347. package/dist/geotrek-rando-widget/p-8872ebd8.system.js +2 -0
  348. package/dist/geotrek-rando-widget/p-8872ebd8.system.js.br +0 -0
  349. package/dist/geotrek-rando-widget/p-8872ebd8.system.js.gz +0 -0
  350. package/dist/geotrek-rando-widget/p-8872ebd8.system.js.map +1 -0
  351. package/dist/geotrek-rando-widget/p-8e38db57.system.js +2 -0
  352. package/dist/geotrek-rando-widget/p-8e38db57.system.js.br +0 -0
  353. package/dist/geotrek-rando-widget/p-8e38db57.system.js.gz +0 -0
  354. package/dist/geotrek-rando-widget/p-8e38db57.system.js.map +1 -0
  355. package/dist/geotrek-rando-widget/p-a06aacd4.js +2 -0
  356. package/dist/geotrek-rando-widget/p-a06aacd4.js.br +0 -0
  357. package/dist/geotrek-rando-widget/p-a06aacd4.js.gz +0 -0
  358. package/dist/geotrek-rando-widget/p-a06aacd4.js.map +1 -0
  359. package/dist/geotrek-rando-widget/{p-88c3a6bd.js → p-b5fc5b41.js} +1 -1
  360. package/dist/geotrek-rando-widget/p-b5fc5b41.js.br +0 -0
  361. package/dist/geotrek-rando-widget/p-b5fc5b41.js.gz +0 -0
  362. package/dist/geotrek-rando-widget/{p-88c3a6bd.js.map → p-b5fc5b41.js.map} +1 -1
  363. package/dist/geotrek-rando-widget/p-c72585fe.system.entry.js +14 -0
  364. package/dist/geotrek-rando-widget/p-c72585fe.system.entry.js.br +0 -0
  365. package/dist/geotrek-rando-widget/p-c72585fe.system.entry.js.gz +0 -0
  366. package/dist/geotrek-rando-widget/p-c72585fe.system.entry.js.map +1 -0
  367. package/dist/geotrek-rando-widget/p-d0b22f11.system.entry.js +2 -0
  368. package/dist/geotrek-rando-widget/p-d0b22f11.system.entry.js.br +0 -0
  369. package/dist/geotrek-rando-widget/p-d0b22f11.system.entry.js.gz +0 -0
  370. package/dist/geotrek-rando-widget/p-d0b22f11.system.entry.js.map +1 -0
  371. package/dist/geotrek-rando-widget/p-d5094323.system.js +3 -0
  372. package/dist/geotrek-rando-widget/p-d5094323.system.js.br +0 -0
  373. package/dist/geotrek-rando-widget/p-d5094323.system.js.gz +0 -0
  374. package/dist/geotrek-rando-widget/p-d5094323.system.js.map +1 -0
  375. package/dist/geotrek-rando-widget/p-d5b0f2d5.system.entry.js +2 -0
  376. package/dist/geotrek-rando-widget/p-d5b0f2d5.system.entry.js.br +0 -0
  377. package/dist/geotrek-rando-widget/p-d5b0f2d5.system.entry.js.gz +0 -0
  378. package/dist/geotrek-rando-widget/p-d5b0f2d5.system.entry.js.map +1 -0
  379. package/dist/geotrek-rando-widget/p-dbf7dc54.entry.js +2 -0
  380. package/dist/geotrek-rando-widget/p-dbf7dc54.entry.js.br +0 -0
  381. package/dist/geotrek-rando-widget/p-dbf7dc54.entry.js.gz +0 -0
  382. package/dist/geotrek-rando-widget/p-dbf7dc54.entry.js.map +1 -0
  383. package/dist/geotrek-rando-widget/p-dc91249a.system.js +2 -0
  384. package/dist/geotrek-rando-widget/p-dc91249a.system.js.br +0 -0
  385. package/dist/geotrek-rando-widget/p-dc91249a.system.js.gz +0 -0
  386. package/dist/geotrek-rando-widget/p-dc91249a.system.js.map +1 -0
  387. package/dist/geotrek-rando-widget/p-f60bd917.entry.js +2 -0
  388. package/dist/geotrek-rando-widget/p-f60bd917.entry.js.br +0 -0
  389. package/dist/geotrek-rando-widget/p-f60bd917.entry.js.gz +0 -0
  390. package/dist/geotrek-rando-widget/p-f60bd917.entry.js.map +1 -0
  391. package/dist/types/components/grw-app/grw-app.d.ts +20 -6
  392. package/dist/types/components/grw-information-desk-detail/grw-information-desk-detail.d.ts +8 -0
  393. package/dist/types/components/grw-map/grw-map.d.ts +28 -6
  394. package/dist/types/components/grw-poi-detail/grw-poi-detail.d.ts +11 -0
  395. package/dist/types/components/grw-select-language/grw-select-language.d.ts +4 -0
  396. package/dist/types/components/grw-trek-card/grw-trek-card.d.ts +5 -2
  397. package/dist/types/components/grw-trek-detail/grw-trek-detail.d.ts +74 -4
  398. package/dist/types/components/grw-treks-list/grw-treks-list.d.ts +6 -3
  399. package/dist/types/components.d.ts +115 -30
  400. package/dist/types/i18n/i18n.d.ts +56 -0
  401. package/dist/types/stencil-public-runtime.d.ts +3 -0
  402. package/dist/types/store/grw-trek-provider.d.ts +3 -1
  403. package/dist/types/store/grw-treks-provider.d.ts +3 -1
  404. package/dist/types/store/store.d.ts +4 -0
  405. package/dist/types/types/types.d.ts +17 -3
  406. package/loader/index.d.ts +1 -1
  407. package/package.json +17 -14
  408. package/readme.md +4 -2
  409. package/dist/cjs/css-shim-4e479c1a.js.br +0 -0
  410. package/dist/cjs/css-shim-4e479c1a.js.gz +0 -0
  411. package/dist/cjs/dom-52c0133a.js.br +0 -0
  412. package/dist/cjs/dom-52c0133a.js.gz +0 -0
  413. package/dist/cjs/grw-filter_6.cjs.entry.js.br +0 -0
  414. package/dist/cjs/grw-filter_6.cjs.entry.js.gz +0 -0
  415. package/dist/cjs/grw-filter_6.cjs.entry.js.map +0 -1
  416. package/dist/cjs/index-5c1a15c7.js.br +0 -0
  417. package/dist/cjs/index-5c1a15c7.js.gz +0 -0
  418. package/dist/cjs/index-5c1a15c7.js.map +0 -1
  419. package/dist/cjs/shadow-css-388a8a25.js.br +0 -0
  420. package/dist/cjs/shadow-css-388a8a25.js.gz +0 -0
  421. package/dist/cjs/store-a027262c.js.br +0 -0
  422. package/dist/cjs/store-a027262c.js.gz +0 -0
  423. package/dist/cjs/store-a027262c.js.map +0 -1
  424. package/dist/collection/assets/arrow-back.svg +0 -1
  425. package/dist/collection/assets/arrow-back.svg.br +0 -0
  426. package/dist/collection/assets/arrow-back.svg.gz +0 -0
  427. package/dist/collection/assets/ascent.svg +0 -1
  428. package/dist/collection/assets/ascent.svg.br +0 -0
  429. package/dist/collection/assets/ascent.svg.gz +0 -0
  430. package/dist/collection/assets/duration.svg +0 -1
  431. package/dist/collection/assets/duration.svg.br +0 -0
  432. package/dist/collection/assets/duration.svg.gz +0 -0
  433. package/dist/collection/assets/length.svg +0 -1
  434. package/dist/collection/assets/length.svg.br +0 -4
  435. package/dist/collection/assets/length.svg.gz +0 -0
  436. package/dist/esm/css-shim-cfbf2cf5.js.br +0 -0
  437. package/dist/esm/css-shim-cfbf2cf5.js.gz +0 -0
  438. package/dist/esm/dom-c0f8af80.js.br +0 -0
  439. package/dist/esm/dom-c0f8af80.js.gz +0 -0
  440. package/dist/esm/grw-filter_6.entry.js.br +0 -0
  441. package/dist/esm/grw-filter_6.entry.js.gz +0 -0
  442. package/dist/esm/grw-filter_6.entry.js.map +0 -1
  443. package/dist/esm/index-e862524f.js.br +0 -0
  444. package/dist/esm/index-e862524f.js.gz +0 -0
  445. package/dist/esm/index-e862524f.js.map +0 -1
  446. package/dist/esm/shadow-css-12b9a099.js.br +0 -0
  447. package/dist/esm/shadow-css-12b9a099.js.gz +0 -0
  448. package/dist/esm/store-5565fa38.js.br +0 -0
  449. package/dist/esm/store-5565fa38.js.gz +0 -0
  450. package/dist/esm/store-5565fa38.js.map +0 -1
  451. package/dist/esm-es5/css-shim-cfbf2cf5.js.br +0 -0
  452. package/dist/esm-es5/css-shim-cfbf2cf5.js.gz +0 -0
  453. package/dist/esm-es5/dom-c0f8af80.js.br +0 -0
  454. package/dist/esm-es5/dom-c0f8af80.js.gz +0 -0
  455. package/dist/esm-es5/grw-filter_6.entry.js +0 -7
  456. package/dist/esm-es5/grw-filter_6.entry.js.br +0 -0
  457. package/dist/esm-es5/grw-filter_6.entry.js.gz +0 -0
  458. package/dist/esm-es5/grw-filter_6.entry.js.map +0 -1
  459. package/dist/esm-es5/index-e862524f.js +0 -3
  460. package/dist/esm-es5/index-e862524f.js.br +0 -0
  461. package/dist/esm-es5/index-e862524f.js.gz +0 -0
  462. package/dist/esm-es5/index-e862524f.js.map +0 -1
  463. package/dist/esm-es5/shadow-css-12b9a099.js.br +0 -0
  464. package/dist/esm-es5/shadow-css-12b9a099.js.gz +0 -0
  465. package/dist/esm-es5/store-5565fa38.js.br +0 -0
  466. package/dist/esm-es5/store-5565fa38.js.gz +0 -0
  467. package/dist/esm-es5/store-5565fa38.js.map +0 -1
  468. package/dist/geotrek-rando-widget/assets/arrow-back.svg +0 -1
  469. package/dist/geotrek-rando-widget/assets/arrow-back.svg.br +0 -0
  470. package/dist/geotrek-rando-widget/assets/arrow-back.svg.gz +0 -0
  471. package/dist/geotrek-rando-widget/assets/ascent.svg +0 -1
  472. package/dist/geotrek-rando-widget/assets/ascent.svg.br +0 -0
  473. package/dist/geotrek-rando-widget/assets/ascent.svg.gz +0 -0
  474. package/dist/geotrek-rando-widget/assets/duration.svg +0 -1
  475. package/dist/geotrek-rando-widget/assets/duration.svg.br +0 -0
  476. package/dist/geotrek-rando-widget/assets/duration.svg.gz +0 -0
  477. package/dist/geotrek-rando-widget/assets/length.svg +0 -1
  478. package/dist/geotrek-rando-widget/assets/length.svg.br +0 -4
  479. package/dist/geotrek-rando-widget/assets/length.svg.gz +0 -0
  480. package/dist/geotrek-rando-widget/p-199359a3.system.js +0 -2
  481. package/dist/geotrek-rando-widget/p-199359a3.system.js.br +0 -0
  482. package/dist/geotrek-rando-widget/p-199359a3.system.js.gz +0 -0
  483. package/dist/geotrek-rando-widget/p-199359a3.system.js.map +0 -1
  484. package/dist/geotrek-rando-widget/p-19d69e2f.system.js +0 -3
  485. package/dist/geotrek-rando-widget/p-19d69e2f.system.js.br +0 -0
  486. package/dist/geotrek-rando-widget/p-19d69e2f.system.js.gz +0 -0
  487. package/dist/geotrek-rando-widget/p-19d69e2f.system.js.map +0 -1
  488. package/dist/geotrek-rando-widget/p-1eb5bb96.js.br +0 -0
  489. package/dist/geotrek-rando-widget/p-1eb5bb96.js.gz +0 -0
  490. package/dist/geotrek-rando-widget/p-24c3dfb6.entry.js +0 -7
  491. package/dist/geotrek-rando-widget/p-24c3dfb6.entry.js.br +0 -0
  492. package/dist/geotrek-rando-widget/p-24c3dfb6.entry.js.gz +0 -0
  493. package/dist/geotrek-rando-widget/p-24c3dfb6.entry.js.map +0 -1
  494. package/dist/geotrek-rando-widget/p-3eb96982.js.br +0 -0
  495. package/dist/geotrek-rando-widget/p-3eb96982.js.gz +0 -0
  496. package/dist/geotrek-rando-widget/p-504d151b.entry.js +0 -2
  497. package/dist/geotrek-rando-widget/p-504d151b.entry.js.br +0 -0
  498. package/dist/geotrek-rando-widget/p-504d151b.entry.js.gz +0 -0
  499. package/dist/geotrek-rando-widget/p-504d151b.entry.js.map +0 -1
  500. package/dist/geotrek-rando-widget/p-52c83c69.entry.js +0 -2
  501. package/dist/geotrek-rando-widget/p-52c83c69.entry.js.br +0 -0
  502. package/dist/geotrek-rando-widget/p-52c83c69.entry.js.gz +0 -0
  503. package/dist/geotrek-rando-widget/p-52c83c69.entry.js.map +0 -1
  504. package/dist/geotrek-rando-widget/p-66d490d8.system.js.br +0 -0
  505. package/dist/geotrek-rando-widget/p-66d490d8.system.js.gz +0 -0
  506. package/dist/geotrek-rando-widget/p-7262406c.js +0 -2
  507. package/dist/geotrek-rando-widget/p-7262406c.js.br +0 -0
  508. package/dist/geotrek-rando-widget/p-7262406c.js.gz +0 -0
  509. package/dist/geotrek-rando-widget/p-7262406c.js.map +0 -1
  510. package/dist/geotrek-rando-widget/p-88c3a6bd.js.br +0 -0
  511. package/dist/geotrek-rando-widget/p-88c3a6bd.js.gz +0 -0
  512. package/dist/geotrek-rando-widget/p-921dc146.system.entry.js +0 -2
  513. package/dist/geotrek-rando-widget/p-921dc146.system.entry.js.br +0 -0
  514. package/dist/geotrek-rando-widget/p-921dc146.system.entry.js.gz +0 -0
  515. package/dist/geotrek-rando-widget/p-921dc146.system.entry.js.map +0 -1
  516. package/dist/geotrek-rando-widget/p-99c86553.system.entry.js +0 -2
  517. package/dist/geotrek-rando-widget/p-99c86553.system.entry.js.br +0 -0
  518. package/dist/geotrek-rando-widget/p-99c86553.system.entry.js.gz +0 -0
  519. package/dist/geotrek-rando-widget/p-99c86553.system.entry.js.map +0 -1
  520. package/dist/geotrek-rando-widget/p-a96ced47.system.entry.js +0 -2
  521. package/dist/geotrek-rando-widget/p-a96ced47.system.entry.js.br +0 -0
  522. package/dist/geotrek-rando-widget/p-a96ced47.system.entry.js.gz +0 -0
  523. package/dist/geotrek-rando-widget/p-a96ced47.system.entry.js.map +0 -1
  524. package/dist/geotrek-rando-widget/p-a9a35a44.system.js.br +0 -0
  525. package/dist/geotrek-rando-widget/p-a9a35a44.system.js.gz +0 -0
  526. package/dist/geotrek-rando-widget/p-b00cf3cc.system.js +0 -2
  527. package/dist/geotrek-rando-widget/p-b00cf3cc.system.js.br +0 -0
  528. package/dist/geotrek-rando-widget/p-b00cf3cc.system.js.gz +0 -0
  529. package/dist/geotrek-rando-widget/p-b00cf3cc.system.js.map +0 -1
  530. package/dist/geotrek-rando-widget/p-c0687c5e.entry.js +0 -2
  531. package/dist/geotrek-rando-widget/p-c0687c5e.entry.js.br +0 -0
  532. package/dist/geotrek-rando-widget/p-c0687c5e.entry.js.gz +0 -0
  533. package/dist/geotrek-rando-widget/p-c0687c5e.entry.js.map +0 -1
  534. package/dist/geotrek-rando-widget/p-d8bdcfaf.js +0 -3
  535. package/dist/geotrek-rando-widget/p-d8bdcfaf.js.br +0 -0
  536. package/dist/geotrek-rando-widget/p-d8bdcfaf.js.gz +0 -0
  537. package/dist/geotrek-rando-widget/p-d8bdcfaf.js.map +0 -1
  538. package/dist/geotrek-rando-widget/p-e6f85aed.system.js.br +0 -0
  539. package/dist/geotrek-rando-widget/p-e6f85aed.system.js.gz +0 -0
  540. package/dist/geotrek-rando-widget/p-ee15d9b3.system.entry.js +0 -7
  541. package/dist/geotrek-rando-widget/p-ee15d9b3.system.entry.js.br +0 -0
  542. package/dist/geotrek-rando-widget/p-ee15d9b3.system.entry.js.gz +0 -0
  543. package/dist/geotrek-rando-widget/p-ee15d9b3.system.entry.js.map +0 -1
@@ -0,0 +1,4655 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * SSR Window 4.0.2
5
+ * Better handling for window object in SSR environment
6
+ * https://github.com/nolimits4web/ssr-window
7
+ *
8
+ * Copyright 2021, Vladimir Kharlampidi
9
+ *
10
+ * Licensed under MIT
11
+ *
12
+ * Released on: December 13, 2021
13
+ */
14
+ /* eslint-disable no-param-reassign */
15
+ function isObject$1(obj) {
16
+ return (obj !== null &&
17
+ typeof obj === 'object' &&
18
+ 'constructor' in obj &&
19
+ obj.constructor === Object);
20
+ }
21
+ function extend$1(target = {}, src = {}) {
22
+ Object.keys(src).forEach((key) => {
23
+ if (typeof target[key] === 'undefined')
24
+ target[key] = src[key];
25
+ else if (isObject$1(src[key]) &&
26
+ isObject$1(target[key]) &&
27
+ Object.keys(src[key]).length > 0) {
28
+ extend$1(target[key], src[key]);
29
+ }
30
+ });
31
+ }
32
+
33
+ const ssrDocument = {
34
+ body: {},
35
+ addEventListener() { },
36
+ removeEventListener() { },
37
+ activeElement: {
38
+ blur() { },
39
+ nodeName: '',
40
+ },
41
+ querySelector() {
42
+ return null;
43
+ },
44
+ querySelectorAll() {
45
+ return [];
46
+ },
47
+ getElementById() {
48
+ return null;
49
+ },
50
+ createEvent() {
51
+ return {
52
+ initEvent() { },
53
+ };
54
+ },
55
+ createElement() {
56
+ return {
57
+ children: [],
58
+ childNodes: [],
59
+ style: {},
60
+ setAttribute() { },
61
+ getElementsByTagName() {
62
+ return [];
63
+ },
64
+ };
65
+ },
66
+ createElementNS() {
67
+ return {};
68
+ },
69
+ importNode() {
70
+ return null;
71
+ },
72
+ location: {
73
+ hash: '',
74
+ host: '',
75
+ hostname: '',
76
+ href: '',
77
+ origin: '',
78
+ pathname: '',
79
+ protocol: '',
80
+ search: '',
81
+ },
82
+ };
83
+ function getDocument() {
84
+ const doc = typeof document !== 'undefined' ? document : {};
85
+ extend$1(doc, ssrDocument);
86
+ return doc;
87
+ }
88
+
89
+ const ssrWindow = {
90
+ document: ssrDocument,
91
+ navigator: {
92
+ userAgent: '',
93
+ },
94
+ location: {
95
+ hash: '',
96
+ host: '',
97
+ hostname: '',
98
+ href: '',
99
+ origin: '',
100
+ pathname: '',
101
+ protocol: '',
102
+ search: '',
103
+ },
104
+ history: {
105
+ replaceState() { },
106
+ pushState() { },
107
+ go() { },
108
+ back() { },
109
+ },
110
+ CustomEvent: function CustomEvent() {
111
+ return this;
112
+ },
113
+ addEventListener() { },
114
+ removeEventListener() { },
115
+ getComputedStyle() {
116
+ return {
117
+ getPropertyValue() {
118
+ return '';
119
+ },
120
+ };
121
+ },
122
+ Image() { },
123
+ Date() { },
124
+ screen: {},
125
+ setTimeout() { },
126
+ clearTimeout() { },
127
+ matchMedia() {
128
+ return {};
129
+ },
130
+ requestAnimationFrame(callback) {
131
+ if (typeof setTimeout === 'undefined') {
132
+ callback();
133
+ return null;
134
+ }
135
+ return setTimeout(callback, 0);
136
+ },
137
+ cancelAnimationFrame(id) {
138
+ if (typeof setTimeout === 'undefined') {
139
+ return;
140
+ }
141
+ clearTimeout(id);
142
+ },
143
+ };
144
+ function getWindow() {
145
+ const win = typeof window !== 'undefined' ? window : {};
146
+ extend$1(win, ssrWindow);
147
+ return win;
148
+ }
149
+
150
+ function deleteProps(obj) {
151
+ const object = obj;
152
+ Object.keys(object).forEach(key => {
153
+ try {
154
+ object[key] = null;
155
+ } catch (e) {
156
+ // no getter for object
157
+ }
158
+ try {
159
+ delete object[key];
160
+ } catch (e) {
161
+ // something got wrong
162
+ }
163
+ });
164
+ }
165
+ function nextTick(callback, delay = 0) {
166
+ return setTimeout(callback, delay);
167
+ }
168
+ function now() {
169
+ return Date.now();
170
+ }
171
+ function getComputedStyle$1(el) {
172
+ const window = getWindow();
173
+ let style;
174
+ if (window.getComputedStyle) {
175
+ style = window.getComputedStyle(el, null);
176
+ }
177
+ if (!style && el.currentStyle) {
178
+ style = el.currentStyle;
179
+ }
180
+ if (!style) {
181
+ style = el.style;
182
+ }
183
+ return style;
184
+ }
185
+ function getTranslate(el, axis = 'x') {
186
+ const window = getWindow();
187
+ let matrix;
188
+ let curTransform;
189
+ let transformMatrix;
190
+ const curStyle = getComputedStyle$1(el);
191
+ if (window.WebKitCSSMatrix) {
192
+ curTransform = curStyle.transform || curStyle.webkitTransform;
193
+ if (curTransform.split(',').length > 6) {
194
+ curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
195
+ }
196
+ // Some old versions of Webkit choke when 'none' is passed; pass
197
+ // empty string instead in this case
198
+ transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
199
+ } else {
200
+ transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
201
+ matrix = transformMatrix.toString().split(',');
202
+ }
203
+ if (axis === 'x') {
204
+ // Latest Chrome and webkits Fix
205
+ if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
206
+ // Crazy IE10 Matrix
207
+ else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
208
+ // Normal Browsers
209
+ else curTransform = parseFloat(matrix[4]);
210
+ }
211
+ if (axis === 'y') {
212
+ // Latest Chrome and webkits Fix
213
+ if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
214
+ // Crazy IE10 Matrix
215
+ else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
216
+ // Normal Browsers
217
+ else curTransform = parseFloat(matrix[5]);
218
+ }
219
+ return curTransform || 0;
220
+ }
221
+ function isObject(o) {
222
+ return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
223
+ }
224
+ function isNode(node) {
225
+ // eslint-disable-next-line
226
+ if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
227
+ return node instanceof HTMLElement;
228
+ }
229
+ return node && (node.nodeType === 1 || node.nodeType === 11);
230
+ }
231
+ function extend(...args) {
232
+ const to = Object(args[0]);
233
+ const noExtend = ['__proto__', 'constructor', 'prototype'];
234
+ for (let i = 1; i < args.length; i += 1) {
235
+ const nextSource = args[i];
236
+ if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
237
+ const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
238
+ for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
239
+ const nextKey = keysArray[nextIndex];
240
+ const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
241
+ if (desc !== undefined && desc.enumerable) {
242
+ if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
243
+ if (nextSource[nextKey].__swiper__) {
244
+ to[nextKey] = nextSource[nextKey];
245
+ } else {
246
+ extend(to[nextKey], nextSource[nextKey]);
247
+ }
248
+ } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
249
+ to[nextKey] = {};
250
+ if (nextSource[nextKey].__swiper__) {
251
+ to[nextKey] = nextSource[nextKey];
252
+ } else {
253
+ extend(to[nextKey], nextSource[nextKey]);
254
+ }
255
+ } else {
256
+ to[nextKey] = nextSource[nextKey];
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ return to;
263
+ }
264
+ function setCSSProperty(el, varName, varValue) {
265
+ el.style.setProperty(varName, varValue);
266
+ }
267
+ function animateCSSModeScroll({
268
+ swiper,
269
+ targetPosition,
270
+ side
271
+ }) {
272
+ const window = getWindow();
273
+ const startPosition = -swiper.translate;
274
+ let startTime = null;
275
+ let time;
276
+ const duration = swiper.params.speed;
277
+ swiper.wrapperEl.style.scrollSnapType = 'none';
278
+ window.cancelAnimationFrame(swiper.cssModeFrameID);
279
+ const dir = targetPosition > startPosition ? 'next' : 'prev';
280
+ const isOutOfBound = (current, target) => {
281
+ return dir === 'next' && current >= target || dir === 'prev' && current <= target;
282
+ };
283
+ const animate = () => {
284
+ time = new Date().getTime();
285
+ if (startTime === null) {
286
+ startTime = time;
287
+ }
288
+ const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
289
+ const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
290
+ let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
291
+ if (isOutOfBound(currentPosition, targetPosition)) {
292
+ currentPosition = targetPosition;
293
+ }
294
+ swiper.wrapperEl.scrollTo({
295
+ [side]: currentPosition
296
+ });
297
+ if (isOutOfBound(currentPosition, targetPosition)) {
298
+ swiper.wrapperEl.style.overflow = 'hidden';
299
+ swiper.wrapperEl.style.scrollSnapType = '';
300
+ setTimeout(() => {
301
+ swiper.wrapperEl.style.overflow = '';
302
+ swiper.wrapperEl.scrollTo({
303
+ [side]: currentPosition
304
+ });
305
+ });
306
+ window.cancelAnimationFrame(swiper.cssModeFrameID);
307
+ return;
308
+ }
309
+ swiper.cssModeFrameID = window.requestAnimationFrame(animate);
310
+ };
311
+ animate();
312
+ }
313
+ function elementChildren(element, selector = '') {
314
+ return [...element.children].filter(el => el.matches(selector));
315
+ }
316
+ function createElement(tag, classes = []) {
317
+ const el = document.createElement(tag);
318
+ el.classList.add(...(Array.isArray(classes) ? classes : [classes]));
319
+ return el;
320
+ }
321
+ function elementOffset(el) {
322
+ const window = getWindow();
323
+ const document = getDocument();
324
+ const box = el.getBoundingClientRect();
325
+ const body = document.body;
326
+ const clientTop = el.clientTop || body.clientTop || 0;
327
+ const clientLeft = el.clientLeft || body.clientLeft || 0;
328
+ const scrollTop = el === window ? window.scrollY : el.scrollTop;
329
+ const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
330
+ return {
331
+ top: box.top + scrollTop - clientTop,
332
+ left: box.left + scrollLeft - clientLeft
333
+ };
334
+ }
335
+ function elementPrevAll(el, selector) {
336
+ const prevEls = [];
337
+ while (el.previousElementSibling) {
338
+ const prev = el.previousElementSibling; // eslint-disable-line
339
+ if (selector) {
340
+ if (prev.matches(selector)) prevEls.push(prev);
341
+ } else prevEls.push(prev);
342
+ el = prev;
343
+ }
344
+ return prevEls;
345
+ }
346
+ function elementNextAll(el, selector) {
347
+ const nextEls = [];
348
+ while (el.nextElementSibling) {
349
+ const next = el.nextElementSibling; // eslint-disable-line
350
+ if (selector) {
351
+ if (next.matches(selector)) nextEls.push(next);
352
+ } else nextEls.push(next);
353
+ el = next;
354
+ }
355
+ return nextEls;
356
+ }
357
+ function elementStyle(el, prop) {
358
+ const window = getWindow();
359
+ return window.getComputedStyle(el, null).getPropertyValue(prop);
360
+ }
361
+ function elementIndex(el) {
362
+ let child = el;
363
+ let i;
364
+ if (child) {
365
+ i = 0;
366
+ // eslint-disable-next-line
367
+ while ((child = child.previousSibling) !== null) {
368
+ if (child.nodeType === 1) i += 1;
369
+ }
370
+ return i;
371
+ }
372
+ return undefined;
373
+ }
374
+ function elementParents(el, selector) {
375
+ const parents = []; // eslint-disable-line
376
+ let parent = el.parentElement; // eslint-disable-line
377
+ while (parent) {
378
+ if (selector) {
379
+ if (parent.matches(selector)) parents.push(parent);
380
+ } else {
381
+ parents.push(parent);
382
+ }
383
+ parent = parent.parentElement;
384
+ }
385
+ return parents;
386
+ }
387
+ function elementTransitionEnd(el, callback) {
388
+ function fireCallBack(e) {
389
+ if (e.target !== el) return;
390
+ callback.call(el, e);
391
+ el.removeEventListener('transitionend', fireCallBack);
392
+ }
393
+ if (callback) {
394
+ el.addEventListener('transitionend', fireCallBack);
395
+ }
396
+ }
397
+ function elementOuterSize(el, size, includeMargins) {
398
+ const window = getWindow();
399
+ if (includeMargins) {
400
+ return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));
401
+ }
402
+ return el.offsetWidth;
403
+ }
404
+
405
+ let support;
406
+ function calcSupport() {
407
+ const window = getWindow();
408
+ const document = getDocument();
409
+ return {
410
+ smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,
411
+ touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
412
+ };
413
+ }
414
+ function getSupport() {
415
+ if (!support) {
416
+ support = calcSupport();
417
+ }
418
+ return support;
419
+ }
420
+
421
+ let deviceCached;
422
+ function calcDevice({
423
+ userAgent
424
+ } = {}) {
425
+ const support = getSupport();
426
+ const window = getWindow();
427
+ const platform = window.navigator.platform;
428
+ const ua = userAgent || window.navigator.userAgent;
429
+ const device = {
430
+ ios: false,
431
+ android: false
432
+ };
433
+ const screenWidth = window.screen.width;
434
+ const screenHeight = window.screen.height;
435
+ const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
436
+ let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
437
+ const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
438
+ const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
439
+ const windows = platform === 'Win32';
440
+ let macos = platform === 'MacIntel';
441
+
442
+ // iPadOs 13 fix
443
+ const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
444
+ if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
445
+ ipad = ua.match(/(Version)\/([\d.]+)/);
446
+ if (!ipad) ipad = [0, 1, '13_0_0'];
447
+ macos = false;
448
+ }
449
+
450
+ // Android
451
+ if (android && !windows) {
452
+ device.os = 'android';
453
+ device.android = true;
454
+ }
455
+ if (ipad || iphone || ipod) {
456
+ device.os = 'ios';
457
+ device.ios = true;
458
+ }
459
+
460
+ // Export object
461
+ return device;
462
+ }
463
+ function getDevice(overrides = {}) {
464
+ if (!deviceCached) {
465
+ deviceCached = calcDevice(overrides);
466
+ }
467
+ return deviceCached;
468
+ }
469
+
470
+ let browser;
471
+ function calcBrowser() {
472
+ const window = getWindow();
473
+ let needPerspectiveFix = false;
474
+ function isSafari() {
475
+ const ua = window.navigator.userAgent.toLowerCase();
476
+ return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
477
+ }
478
+ if (isSafari()) {
479
+ const ua = String(window.navigator.userAgent);
480
+ if (ua.includes('Version/')) {
481
+ const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));
482
+ needPerspectiveFix = major < 16 || major === 16 && minor < 2;
483
+ }
484
+ }
485
+ return {
486
+ isSafari: needPerspectiveFix || isSafari(),
487
+ needPerspectiveFix,
488
+ isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
489
+ };
490
+ }
491
+ function getBrowser() {
492
+ if (!browser) {
493
+ browser = calcBrowser();
494
+ }
495
+ return browser;
496
+ }
497
+
498
+ function Resize({
499
+ swiper,
500
+ on,
501
+ emit
502
+ }) {
503
+ const window = getWindow();
504
+ let observer = null;
505
+ let animationFrame = null;
506
+ const resizeHandler = () => {
507
+ if (!swiper || swiper.destroyed || !swiper.initialized) return;
508
+ emit('beforeResize');
509
+ emit('resize');
510
+ };
511
+ const createObserver = () => {
512
+ if (!swiper || swiper.destroyed || !swiper.initialized) return;
513
+ observer = new ResizeObserver(entries => {
514
+ animationFrame = window.requestAnimationFrame(() => {
515
+ const {
516
+ width,
517
+ height
518
+ } = swiper;
519
+ let newWidth = width;
520
+ let newHeight = height;
521
+ entries.forEach(({
522
+ contentBoxSize,
523
+ contentRect,
524
+ target
525
+ }) => {
526
+ if (target && target !== swiper.el) return;
527
+ newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
528
+ newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
529
+ });
530
+ if (newWidth !== width || newHeight !== height) {
531
+ resizeHandler();
532
+ }
533
+ });
534
+ });
535
+ observer.observe(swiper.el);
536
+ };
537
+ const removeObserver = () => {
538
+ if (animationFrame) {
539
+ window.cancelAnimationFrame(animationFrame);
540
+ }
541
+ if (observer && observer.unobserve && swiper.el) {
542
+ observer.unobserve(swiper.el);
543
+ observer = null;
544
+ }
545
+ };
546
+ const orientationChangeHandler = () => {
547
+ if (!swiper || swiper.destroyed || !swiper.initialized) return;
548
+ emit('orientationchange');
549
+ };
550
+ on('init', () => {
551
+ if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
552
+ createObserver();
553
+ return;
554
+ }
555
+ window.addEventListener('resize', resizeHandler);
556
+ window.addEventListener('orientationchange', orientationChangeHandler);
557
+ });
558
+ on('destroy', () => {
559
+ removeObserver();
560
+ window.removeEventListener('resize', resizeHandler);
561
+ window.removeEventListener('orientationchange', orientationChangeHandler);
562
+ });
563
+ }
564
+
565
+ function Observer({
566
+ swiper,
567
+ extendParams,
568
+ on,
569
+ emit
570
+ }) {
571
+ const observers = [];
572
+ const window = getWindow();
573
+ const attach = (target, options = {}) => {
574
+ const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
575
+ const observer = new ObserverFunc(mutations => {
576
+ // The observerUpdate event should only be triggered
577
+ // once despite the number of mutations. Additional
578
+ // triggers are redundant and are very costly
579
+ if (swiper.__preventObserver__) return;
580
+ if (mutations.length === 1) {
581
+ emit('observerUpdate', mutations[0]);
582
+ return;
583
+ }
584
+ const observerUpdate = function observerUpdate() {
585
+ emit('observerUpdate', mutations[0]);
586
+ };
587
+ if (window.requestAnimationFrame) {
588
+ window.requestAnimationFrame(observerUpdate);
589
+ } else {
590
+ window.setTimeout(observerUpdate, 0);
591
+ }
592
+ });
593
+ observer.observe(target, {
594
+ attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
595
+ childList: typeof options.childList === 'undefined' ? true : options.childList,
596
+ characterData: typeof options.characterData === 'undefined' ? true : options.characterData
597
+ });
598
+ observers.push(observer);
599
+ };
600
+ const init = () => {
601
+ if (!swiper.params.observer) return;
602
+ if (swiper.params.observeParents) {
603
+ const containerParents = elementParents(swiper.el);
604
+ for (let i = 0; i < containerParents.length; i += 1) {
605
+ attach(containerParents[i]);
606
+ }
607
+ }
608
+ // Observe container
609
+ attach(swiper.el, {
610
+ childList: swiper.params.observeSlideChildren
611
+ });
612
+
613
+ // Observe wrapper
614
+ attach(swiper.wrapperEl, {
615
+ attributes: false
616
+ });
617
+ };
618
+ const destroy = () => {
619
+ observers.forEach(observer => {
620
+ observer.disconnect();
621
+ });
622
+ observers.splice(0, observers.length);
623
+ };
624
+ extendParams({
625
+ observer: false,
626
+ observeParents: false,
627
+ observeSlideChildren: false
628
+ });
629
+ on('init', init);
630
+ on('destroy', destroy);
631
+ }
632
+
633
+ /* eslint-disable no-underscore-dangle */
634
+
635
+ const eventsEmitter = {
636
+ on(events, handler, priority) {
637
+ const self = this;
638
+ if (!self.eventsListeners || self.destroyed) return self;
639
+ if (typeof handler !== 'function') return self;
640
+ const method = priority ? 'unshift' : 'push';
641
+ events.split(' ').forEach(event => {
642
+ if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
643
+ self.eventsListeners[event][method](handler);
644
+ });
645
+ return self;
646
+ },
647
+ once(events, handler, priority) {
648
+ const self = this;
649
+ if (!self.eventsListeners || self.destroyed) return self;
650
+ if (typeof handler !== 'function') return self;
651
+ function onceHandler(...args) {
652
+ self.off(events, onceHandler);
653
+ if (onceHandler.__emitterProxy) {
654
+ delete onceHandler.__emitterProxy;
655
+ }
656
+ handler.apply(self, args);
657
+ }
658
+ onceHandler.__emitterProxy = handler;
659
+ return self.on(events, onceHandler, priority);
660
+ },
661
+ onAny(handler, priority) {
662
+ const self = this;
663
+ if (!self.eventsListeners || self.destroyed) return self;
664
+ if (typeof handler !== 'function') return self;
665
+ const method = priority ? 'unshift' : 'push';
666
+ if (self.eventsAnyListeners.indexOf(handler) < 0) {
667
+ self.eventsAnyListeners[method](handler);
668
+ }
669
+ return self;
670
+ },
671
+ offAny(handler) {
672
+ const self = this;
673
+ if (!self.eventsListeners || self.destroyed) return self;
674
+ if (!self.eventsAnyListeners) return self;
675
+ const index = self.eventsAnyListeners.indexOf(handler);
676
+ if (index >= 0) {
677
+ self.eventsAnyListeners.splice(index, 1);
678
+ }
679
+ return self;
680
+ },
681
+ off(events, handler) {
682
+ const self = this;
683
+ if (!self.eventsListeners || self.destroyed) return self;
684
+ if (!self.eventsListeners) return self;
685
+ events.split(' ').forEach(event => {
686
+ if (typeof handler === 'undefined') {
687
+ self.eventsListeners[event] = [];
688
+ } else if (self.eventsListeners[event]) {
689
+ self.eventsListeners[event].forEach((eventHandler, index) => {
690
+ if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
691
+ self.eventsListeners[event].splice(index, 1);
692
+ }
693
+ });
694
+ }
695
+ });
696
+ return self;
697
+ },
698
+ emit(...args) {
699
+ const self = this;
700
+ if (!self.eventsListeners || self.destroyed) return self;
701
+ if (!self.eventsListeners) return self;
702
+ let events;
703
+ let data;
704
+ let context;
705
+ if (typeof args[0] === 'string' || Array.isArray(args[0])) {
706
+ events = args[0];
707
+ data = args.slice(1, args.length);
708
+ context = self;
709
+ } else {
710
+ events = args[0].events;
711
+ data = args[0].data;
712
+ context = args[0].context || self;
713
+ }
714
+ data.unshift(context);
715
+ const eventsArray = Array.isArray(events) ? events : events.split(' ');
716
+ eventsArray.forEach(event => {
717
+ if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
718
+ self.eventsAnyListeners.forEach(eventHandler => {
719
+ eventHandler.apply(context, [event, ...data]);
720
+ });
721
+ }
722
+ if (self.eventsListeners && self.eventsListeners[event]) {
723
+ self.eventsListeners[event].forEach(eventHandler => {
724
+ eventHandler.apply(context, data);
725
+ });
726
+ }
727
+ });
728
+ return self;
729
+ }
730
+ };
731
+
732
+ function updateSize() {
733
+ const swiper = this;
734
+ let width;
735
+ let height;
736
+ const el = swiper.el;
737
+ if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
738
+ width = swiper.params.width;
739
+ } else {
740
+ width = el.clientWidth;
741
+ }
742
+ if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
743
+ height = swiper.params.height;
744
+ } else {
745
+ height = el.clientHeight;
746
+ }
747
+ if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
748
+ return;
749
+ }
750
+
751
+ // Subtract paddings
752
+ width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);
753
+ height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);
754
+ if (Number.isNaN(width)) width = 0;
755
+ if (Number.isNaN(height)) height = 0;
756
+ Object.assign(swiper, {
757
+ width,
758
+ height,
759
+ size: swiper.isHorizontal() ? width : height
760
+ });
761
+ }
762
+
763
+ function updateSlides() {
764
+ const swiper = this;
765
+ function getDirectionLabel(property) {
766
+ if (swiper.isHorizontal()) {
767
+ return property;
768
+ }
769
+ // prettier-ignore
770
+ return {
771
+ 'width': 'height',
772
+ 'margin-top': 'margin-left',
773
+ 'margin-bottom ': 'margin-right',
774
+ 'margin-left': 'margin-top',
775
+ 'margin-right': 'margin-bottom',
776
+ 'padding-left': 'padding-top',
777
+ 'padding-right': 'padding-bottom',
778
+ 'marginRight': 'marginBottom'
779
+ }[property];
780
+ }
781
+ function getDirectionPropertyValue(node, label) {
782
+ return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
783
+ }
784
+ const params = swiper.params;
785
+ const {
786
+ wrapperEl,
787
+ slidesEl,
788
+ size: swiperSize,
789
+ rtlTranslate: rtl,
790
+ wrongRTL
791
+ } = swiper;
792
+ const isVirtual = swiper.virtual && params.virtual.enabled;
793
+ const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
794
+ const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
795
+ const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
796
+ let snapGrid = [];
797
+ const slidesGrid = [];
798
+ const slidesSizesGrid = [];
799
+ let offsetBefore = params.slidesOffsetBefore;
800
+ if (typeof offsetBefore === 'function') {
801
+ offsetBefore = params.slidesOffsetBefore.call(swiper);
802
+ }
803
+ let offsetAfter = params.slidesOffsetAfter;
804
+ if (typeof offsetAfter === 'function') {
805
+ offsetAfter = params.slidesOffsetAfter.call(swiper);
806
+ }
807
+ const previousSnapGridLength = swiper.snapGrid.length;
808
+ const previousSlidesGridLength = swiper.slidesGrid.length;
809
+ let spaceBetween = params.spaceBetween;
810
+ let slidePosition = -offsetBefore;
811
+ let prevSlideSize = 0;
812
+ let index = 0;
813
+ if (typeof swiperSize === 'undefined') {
814
+ return;
815
+ }
816
+ if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
817
+ spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
818
+ } else if (typeof spaceBetween === 'string') {
819
+ spaceBetween = parseFloat(spaceBetween);
820
+ }
821
+ swiper.virtualSize = -spaceBetween;
822
+
823
+ // reset margins
824
+ slides.forEach(slideEl => {
825
+ if (rtl) {
826
+ slideEl.style.marginLeft = '';
827
+ } else {
828
+ slideEl.style.marginRight = '';
829
+ }
830
+ slideEl.style.marginBottom = '';
831
+ slideEl.style.marginTop = '';
832
+ });
833
+
834
+ // reset cssMode offsets
835
+ if (params.centeredSlides && params.cssMode) {
836
+ setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');
837
+ setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');
838
+ }
839
+ const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
840
+ if (gridEnabled) {
841
+ swiper.grid.initSlides(slidesLength);
842
+ }
843
+
844
+ // Calc slides
845
+ let slideSize;
846
+ const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
847
+ return typeof params.breakpoints[key].slidesPerView !== 'undefined';
848
+ }).length > 0;
849
+ for (let i = 0; i < slidesLength; i += 1) {
850
+ slideSize = 0;
851
+ let slide;
852
+ if (slides[i]) slide = slides[i];
853
+ if (gridEnabled) {
854
+ swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
855
+ }
856
+ if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
857
+
858
+ if (params.slidesPerView === 'auto') {
859
+ if (shouldResetSlideSize) {
860
+ slides[i].style[getDirectionLabel('width')] = ``;
861
+ }
862
+ const slideStyles = getComputedStyle(slide);
863
+ const currentTransform = slide.style.transform;
864
+ const currentWebKitTransform = slide.style.webkitTransform;
865
+ if (currentTransform) {
866
+ slide.style.transform = 'none';
867
+ }
868
+ if (currentWebKitTransform) {
869
+ slide.style.webkitTransform = 'none';
870
+ }
871
+ if (params.roundLengths) {
872
+ slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);
873
+ } else {
874
+ // eslint-disable-next-line
875
+ const width = getDirectionPropertyValue(slideStyles, 'width');
876
+ const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
877
+ const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
878
+ const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
879
+ const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
880
+ const boxSizing = slideStyles.getPropertyValue('box-sizing');
881
+ if (boxSizing && boxSizing === 'border-box') {
882
+ slideSize = width + marginLeft + marginRight;
883
+ } else {
884
+ const {
885
+ clientWidth,
886
+ offsetWidth
887
+ } = slide;
888
+ slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
889
+ }
890
+ }
891
+ if (currentTransform) {
892
+ slide.style.transform = currentTransform;
893
+ }
894
+ if (currentWebKitTransform) {
895
+ slide.style.webkitTransform = currentWebKitTransform;
896
+ }
897
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
898
+ } else {
899
+ slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
900
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
901
+ if (slides[i]) {
902
+ slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;
903
+ }
904
+ }
905
+ if (slides[i]) {
906
+ slides[i].swiperSlideSize = slideSize;
907
+ }
908
+ slidesSizesGrid.push(slideSize);
909
+ if (params.centeredSlides) {
910
+ slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
911
+ if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
912
+ if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
913
+ if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
914
+ if (params.roundLengths) slidePosition = Math.floor(slidePosition);
915
+ if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
916
+ slidesGrid.push(slidePosition);
917
+ } else {
918
+ if (params.roundLengths) slidePosition = Math.floor(slidePosition);
919
+ if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
920
+ slidesGrid.push(slidePosition);
921
+ slidePosition = slidePosition + slideSize + spaceBetween;
922
+ }
923
+ swiper.virtualSize += slideSize + spaceBetween;
924
+ prevSlideSize = slideSize;
925
+ index += 1;
926
+ }
927
+ swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
928
+ if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
929
+ wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
930
+ }
931
+ if (params.setWrapperSize) {
932
+ wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
933
+ }
934
+ if (gridEnabled) {
935
+ swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
936
+ }
937
+
938
+ // Remove last grid elements depending on width
939
+ if (!params.centeredSlides) {
940
+ const newSlidesGrid = [];
941
+ for (let i = 0; i < snapGrid.length; i += 1) {
942
+ let slidesGridItem = snapGrid[i];
943
+ if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
944
+ if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
945
+ newSlidesGrid.push(slidesGridItem);
946
+ }
947
+ }
948
+ snapGrid = newSlidesGrid;
949
+ if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
950
+ snapGrid.push(swiper.virtualSize - swiperSize);
951
+ }
952
+ }
953
+ if (isVirtual && params.loop) {
954
+ const size = slidesSizesGrid[0] + spaceBetween;
955
+ if (params.slidesPerGroup > 1) {
956
+ const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
957
+ const groupSize = size * params.slidesPerGroup;
958
+ for (let i = 0; i < groups; i += 1) {
959
+ snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
960
+ }
961
+ }
962
+ for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
963
+ if (params.slidesPerGroup === 1) {
964
+ snapGrid.push(snapGrid[snapGrid.length - 1] + size);
965
+ }
966
+ slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
967
+ swiper.virtualSize += size;
968
+ }
969
+ }
970
+ if (snapGrid.length === 0) snapGrid = [0];
971
+ if (spaceBetween !== 0) {
972
+ const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
973
+ slides.filter((_, slideIndex) => {
974
+ if (!params.cssMode || params.loop) return true;
975
+ if (slideIndex === slides.length - 1) {
976
+ return false;
977
+ }
978
+ return true;
979
+ }).forEach(slideEl => {
980
+ slideEl.style[key] = `${spaceBetween}px`;
981
+ });
982
+ }
983
+ if (params.centeredSlides && params.centeredSlidesBounds) {
984
+ let allSlidesSize = 0;
985
+ slidesSizesGrid.forEach(slideSizeValue => {
986
+ allSlidesSize += slideSizeValue + (spaceBetween || 0);
987
+ });
988
+ allSlidesSize -= spaceBetween;
989
+ const maxSnap = allSlidesSize - swiperSize;
990
+ snapGrid = snapGrid.map(snap => {
991
+ if (snap <= 0) return -offsetBefore;
992
+ if (snap > maxSnap) return maxSnap + offsetAfter;
993
+ return snap;
994
+ });
995
+ }
996
+ if (params.centerInsufficientSlides) {
997
+ let allSlidesSize = 0;
998
+ slidesSizesGrid.forEach(slideSizeValue => {
999
+ allSlidesSize += slideSizeValue + (spaceBetween || 0);
1000
+ });
1001
+ allSlidesSize -= spaceBetween;
1002
+ if (allSlidesSize < swiperSize) {
1003
+ const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
1004
+ snapGrid.forEach((snap, snapIndex) => {
1005
+ snapGrid[snapIndex] = snap - allSlidesOffset;
1006
+ });
1007
+ slidesGrid.forEach((snap, snapIndex) => {
1008
+ slidesGrid[snapIndex] = snap + allSlidesOffset;
1009
+ });
1010
+ }
1011
+ }
1012
+ Object.assign(swiper, {
1013
+ slides,
1014
+ snapGrid,
1015
+ slidesGrid,
1016
+ slidesSizesGrid
1017
+ });
1018
+ if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
1019
+ setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
1020
+ setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
1021
+ const addToSnapGrid = -swiper.snapGrid[0];
1022
+ const addToSlidesGrid = -swiper.slidesGrid[0];
1023
+ swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
1024
+ swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
1025
+ }
1026
+ if (slidesLength !== previousSlidesLength) {
1027
+ swiper.emit('slidesLengthChange');
1028
+ }
1029
+ if (snapGrid.length !== previousSnapGridLength) {
1030
+ if (swiper.params.watchOverflow) swiper.checkOverflow();
1031
+ swiper.emit('snapGridLengthChange');
1032
+ }
1033
+ if (slidesGrid.length !== previousSlidesGridLength) {
1034
+ swiper.emit('slidesGridLengthChange');
1035
+ }
1036
+ if (params.watchSlidesProgress) {
1037
+ swiper.updateSlidesOffset();
1038
+ }
1039
+ if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
1040
+ const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
1041
+ const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
1042
+ if (slidesLength <= params.maxBackfaceHiddenSlides) {
1043
+ if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
1044
+ } else if (hasClassBackfaceClassAdded) {
1045
+ swiper.el.classList.remove(backFaceHiddenClass);
1046
+ }
1047
+ }
1048
+ }
1049
+
1050
+ function updateAutoHeight(speed) {
1051
+ const swiper = this;
1052
+ const activeSlides = [];
1053
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
1054
+ let newHeight = 0;
1055
+ let i;
1056
+ if (typeof speed === 'number') {
1057
+ swiper.setTransition(speed);
1058
+ } else if (speed === true) {
1059
+ swiper.setTransition(swiper.params.speed);
1060
+ }
1061
+ const getSlideByIndex = index => {
1062
+ if (isVirtual) {
1063
+ return swiper.slides[swiper.getSlideIndexByData(index)];
1064
+ }
1065
+ return swiper.slides[index];
1066
+ };
1067
+ // Find slides currently in view
1068
+ if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
1069
+ if (swiper.params.centeredSlides) {
1070
+ (swiper.visibleSlides || []).forEach(slide => {
1071
+ activeSlides.push(slide);
1072
+ });
1073
+ } else {
1074
+ for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
1075
+ const index = swiper.activeIndex + i;
1076
+ if (index > swiper.slides.length && !isVirtual) break;
1077
+ activeSlides.push(getSlideByIndex(index));
1078
+ }
1079
+ }
1080
+ } else {
1081
+ activeSlides.push(getSlideByIndex(swiper.activeIndex));
1082
+ }
1083
+
1084
+ // Find new height from highest slide in view
1085
+ for (i = 0; i < activeSlides.length; i += 1) {
1086
+ if (typeof activeSlides[i] !== 'undefined') {
1087
+ const height = activeSlides[i].offsetHeight;
1088
+ newHeight = height > newHeight ? height : newHeight;
1089
+ }
1090
+ }
1091
+
1092
+ // Update Height
1093
+ if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
1094
+ }
1095
+
1096
+ function updateSlidesOffset() {
1097
+ const swiper = this;
1098
+ const slides = swiper.slides;
1099
+ // eslint-disable-next-line
1100
+ const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
1101
+ for (let i = 0; i < slides.length; i += 1) {
1102
+ slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
1103
+ }
1104
+ }
1105
+
1106
+ function updateSlidesProgress(translate = this && this.translate || 0) {
1107
+ const swiper = this;
1108
+ const params = swiper.params;
1109
+ const {
1110
+ slides,
1111
+ rtlTranslate: rtl,
1112
+ snapGrid
1113
+ } = swiper;
1114
+ if (slides.length === 0) return;
1115
+ if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
1116
+ let offsetCenter = -translate;
1117
+ if (rtl) offsetCenter = translate;
1118
+
1119
+ // Visible Slides
1120
+ slides.forEach(slideEl => {
1121
+ slideEl.classList.remove(params.slideVisibleClass);
1122
+ });
1123
+ swiper.visibleSlidesIndexes = [];
1124
+ swiper.visibleSlides = [];
1125
+ let spaceBetween = params.spaceBetween;
1126
+ if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1127
+ spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
1128
+ } else if (typeof spaceBetween === 'string') {
1129
+ spaceBetween = parseFloat(spaceBetween);
1130
+ }
1131
+ for (let i = 0; i < slides.length; i += 1) {
1132
+ const slide = slides[i];
1133
+ let slideOffset = slide.swiperSlideOffset;
1134
+ if (params.cssMode && params.centeredSlides) {
1135
+ slideOffset -= slides[0].swiperSlideOffset;
1136
+ }
1137
+ const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
1138
+ const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
1139
+ const slideBefore = -(offsetCenter - slideOffset);
1140
+ const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
1141
+ const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
1142
+ if (isVisible) {
1143
+ swiper.visibleSlides.push(slide);
1144
+ swiper.visibleSlidesIndexes.push(i);
1145
+ slides[i].classList.add(params.slideVisibleClass);
1146
+ }
1147
+ slide.progress = rtl ? -slideProgress : slideProgress;
1148
+ slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
1149
+ }
1150
+ }
1151
+
1152
+ function updateProgress(translate) {
1153
+ const swiper = this;
1154
+ if (typeof translate === 'undefined') {
1155
+ const multiplier = swiper.rtlTranslate ? -1 : 1;
1156
+ // eslint-disable-next-line
1157
+ translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
1158
+ }
1159
+ const params = swiper.params;
1160
+ const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1161
+ let {
1162
+ progress,
1163
+ isBeginning,
1164
+ isEnd,
1165
+ progressLoop
1166
+ } = swiper;
1167
+ const wasBeginning = isBeginning;
1168
+ const wasEnd = isEnd;
1169
+ if (translatesDiff === 0) {
1170
+ progress = 0;
1171
+ isBeginning = true;
1172
+ isEnd = true;
1173
+ } else {
1174
+ progress = (translate - swiper.minTranslate()) / translatesDiff;
1175
+ const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;
1176
+ const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;
1177
+ isBeginning = isBeginningRounded || progress <= 0;
1178
+ isEnd = isEndRounded || progress >= 1;
1179
+ if (isBeginningRounded) progress = 0;
1180
+ if (isEndRounded) progress = 1;
1181
+ }
1182
+ if (params.loop) {
1183
+ const firstSlideIndex = swiper.getSlideIndexByData(0);
1184
+ const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
1185
+ const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
1186
+ const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
1187
+ const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
1188
+ const translateAbs = Math.abs(translate);
1189
+ if (translateAbs >= firstSlideTranslate) {
1190
+ progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
1191
+ } else {
1192
+ progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
1193
+ }
1194
+ if (progressLoop > 1) progressLoop -= 1;
1195
+ }
1196
+ Object.assign(swiper, {
1197
+ progress,
1198
+ progressLoop,
1199
+ isBeginning,
1200
+ isEnd
1201
+ });
1202
+ if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
1203
+ if (isBeginning && !wasBeginning) {
1204
+ swiper.emit('reachBeginning toEdge');
1205
+ }
1206
+ if (isEnd && !wasEnd) {
1207
+ swiper.emit('reachEnd toEdge');
1208
+ }
1209
+ if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
1210
+ swiper.emit('fromEdge');
1211
+ }
1212
+ swiper.emit('progress', progress);
1213
+ }
1214
+
1215
+ function updateSlidesClasses() {
1216
+ const swiper = this;
1217
+ const {
1218
+ slides,
1219
+ params,
1220
+ slidesEl,
1221
+ activeIndex
1222
+ } = swiper;
1223
+ const isVirtual = swiper.virtual && params.virtual.enabled;
1224
+ const getFilteredSlide = selector => {
1225
+ return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
1226
+ };
1227
+ slides.forEach(slideEl => {
1228
+ slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
1229
+ });
1230
+ let activeSlide;
1231
+ if (isVirtual) {
1232
+ if (params.loop) {
1233
+ let slideIndex = activeIndex - swiper.virtual.slidesBefore;
1234
+ if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
1235
+ if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
1236
+ activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
1237
+ } else {
1238
+ activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
1239
+ }
1240
+ } else {
1241
+ activeSlide = slides[activeIndex];
1242
+ }
1243
+ if (activeSlide) {
1244
+ // Active classes
1245
+ activeSlide.classList.add(params.slideActiveClass);
1246
+
1247
+ // Next Slide
1248
+ let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
1249
+ if (params.loop && !nextSlide) {
1250
+ nextSlide = slides[0];
1251
+ }
1252
+ if (nextSlide) {
1253
+ nextSlide.classList.add(params.slideNextClass);
1254
+ }
1255
+ // Prev Slide
1256
+ let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
1257
+ if (params.loop && !prevSlide === 0) {
1258
+ prevSlide = slides[slides.length - 1];
1259
+ }
1260
+ if (prevSlide) {
1261
+ prevSlide.classList.add(params.slidePrevClass);
1262
+ }
1263
+ }
1264
+ swiper.emitSlidesClasses();
1265
+ }
1266
+
1267
+ const processLazyPreloader = (swiper, imageEl) => {
1268
+ if (!swiper || swiper.destroyed || !swiper.params) return;
1269
+ const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
1270
+ const slideEl = imageEl.closest(slideSelector());
1271
+ if (slideEl) {
1272
+ const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
1273
+ if (lazyEl) lazyEl.remove();
1274
+ }
1275
+ };
1276
+ const unlazy = (swiper, index) => {
1277
+ if (!swiper.slides[index]) return;
1278
+ const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
1279
+ if (imageEl) imageEl.removeAttribute('loading');
1280
+ };
1281
+ const preload = swiper => {
1282
+ if (!swiper || swiper.destroyed || !swiper.params) return;
1283
+ let amount = swiper.params.lazyPreloadPrevNext;
1284
+ const len = swiper.slides.length;
1285
+ if (!len || !amount || amount < 0) return;
1286
+ amount = Math.min(amount, len);
1287
+ const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
1288
+ const activeIndex = swiper.activeIndex;
1289
+ if (swiper.params.grid && swiper.params.grid.rows > 1) {
1290
+ const activeColumn = activeIndex;
1291
+ const preloadColumns = [activeColumn - amount];
1292
+ preloadColumns.push(...Array.from({
1293
+ length: amount
1294
+ }).map((_, i) => {
1295
+ return activeColumn + slidesPerView + i;
1296
+ }));
1297
+ swiper.slides.forEach((slideEl, i) => {
1298
+ if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
1299
+ });
1300
+ return;
1301
+ }
1302
+ const slideIndexLastInView = activeIndex + slidesPerView - 1;
1303
+ if (swiper.params.rewind || swiper.params.loop) {
1304
+ for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
1305
+ const realIndex = (i % len + len) % len;
1306
+ if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
1307
+ }
1308
+ } else {
1309
+ for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
1310
+ if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
1311
+ unlazy(swiper, i);
1312
+ }
1313
+ }
1314
+ }
1315
+ };
1316
+
1317
+ function getActiveIndexByTranslate(swiper) {
1318
+ const {
1319
+ slidesGrid,
1320
+ params
1321
+ } = swiper;
1322
+ const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1323
+ let activeIndex;
1324
+ for (let i = 0; i < slidesGrid.length; i += 1) {
1325
+ if (typeof slidesGrid[i + 1] !== 'undefined') {
1326
+ if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
1327
+ activeIndex = i;
1328
+ } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
1329
+ activeIndex = i + 1;
1330
+ }
1331
+ } else if (translate >= slidesGrid[i]) {
1332
+ activeIndex = i;
1333
+ }
1334
+ }
1335
+ // Normalize slideIndex
1336
+ if (params.normalizeSlideIndex) {
1337
+ if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
1338
+ }
1339
+ return activeIndex;
1340
+ }
1341
+ function updateActiveIndex(newActiveIndex) {
1342
+ const swiper = this;
1343
+ const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1344
+ const {
1345
+ snapGrid,
1346
+ params,
1347
+ activeIndex: previousIndex,
1348
+ realIndex: previousRealIndex,
1349
+ snapIndex: previousSnapIndex
1350
+ } = swiper;
1351
+ let activeIndex = newActiveIndex;
1352
+ let snapIndex;
1353
+ const getVirtualRealIndex = aIndex => {
1354
+ let realIndex = aIndex - swiper.virtual.slidesBefore;
1355
+ if (realIndex < 0) {
1356
+ realIndex = swiper.virtual.slides.length + realIndex;
1357
+ }
1358
+ if (realIndex >= swiper.virtual.slides.length) {
1359
+ realIndex -= swiper.virtual.slides.length;
1360
+ }
1361
+ return realIndex;
1362
+ };
1363
+ if (typeof activeIndex === 'undefined') {
1364
+ activeIndex = getActiveIndexByTranslate(swiper);
1365
+ }
1366
+ if (snapGrid.indexOf(translate) >= 0) {
1367
+ snapIndex = snapGrid.indexOf(translate);
1368
+ } else {
1369
+ const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
1370
+ snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
1371
+ }
1372
+ if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
1373
+ if (activeIndex === previousIndex) {
1374
+ if (snapIndex !== previousSnapIndex) {
1375
+ swiper.snapIndex = snapIndex;
1376
+ swiper.emit('snapIndexChange');
1377
+ }
1378
+ if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
1379
+ swiper.realIndex = getVirtualRealIndex(activeIndex);
1380
+ }
1381
+ return;
1382
+ }
1383
+ // Get real index
1384
+ let realIndex;
1385
+ if (swiper.virtual && params.virtual.enabled && params.loop) {
1386
+ realIndex = getVirtualRealIndex(activeIndex);
1387
+ } else if (swiper.slides[activeIndex]) {
1388
+ realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);
1389
+ } else {
1390
+ realIndex = activeIndex;
1391
+ }
1392
+ Object.assign(swiper, {
1393
+ previousSnapIndex,
1394
+ snapIndex,
1395
+ previousRealIndex,
1396
+ realIndex,
1397
+ previousIndex,
1398
+ activeIndex
1399
+ });
1400
+ if (swiper.initialized) {
1401
+ preload(swiper);
1402
+ }
1403
+ swiper.emit('activeIndexChange');
1404
+ swiper.emit('snapIndexChange');
1405
+ if (previousRealIndex !== realIndex) {
1406
+ swiper.emit('realIndexChange');
1407
+ }
1408
+ if (swiper.initialized || swiper.params.runCallbacksOnInit) {
1409
+ swiper.emit('slideChange');
1410
+ }
1411
+ }
1412
+
1413
+ function updateClickedSlide(e) {
1414
+ const swiper = this;
1415
+ const params = swiper.params;
1416
+ const slide = e.closest(`.${params.slideClass}, swiper-slide`);
1417
+ let slideFound = false;
1418
+ let slideIndex;
1419
+ if (slide) {
1420
+ for (let i = 0; i < swiper.slides.length; i += 1) {
1421
+ if (swiper.slides[i] === slide) {
1422
+ slideFound = true;
1423
+ slideIndex = i;
1424
+ break;
1425
+ }
1426
+ }
1427
+ }
1428
+ if (slide && slideFound) {
1429
+ swiper.clickedSlide = slide;
1430
+ if (swiper.virtual && swiper.params.virtual.enabled) {
1431
+ swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);
1432
+ } else {
1433
+ swiper.clickedIndex = slideIndex;
1434
+ }
1435
+ } else {
1436
+ swiper.clickedSlide = undefined;
1437
+ swiper.clickedIndex = undefined;
1438
+ return;
1439
+ }
1440
+ if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
1441
+ swiper.slideToClickedSlide();
1442
+ }
1443
+ }
1444
+
1445
+ const update = {
1446
+ updateSize,
1447
+ updateSlides,
1448
+ updateAutoHeight,
1449
+ updateSlidesOffset,
1450
+ updateSlidesProgress,
1451
+ updateProgress,
1452
+ updateSlidesClasses,
1453
+ updateActiveIndex,
1454
+ updateClickedSlide
1455
+ };
1456
+
1457
+ function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
1458
+ const swiper = this;
1459
+ const {
1460
+ params,
1461
+ rtlTranslate: rtl,
1462
+ translate,
1463
+ wrapperEl
1464
+ } = swiper;
1465
+ if (params.virtualTranslate) {
1466
+ return rtl ? -translate : translate;
1467
+ }
1468
+ if (params.cssMode) {
1469
+ return translate;
1470
+ }
1471
+ let currentTranslate = getTranslate(wrapperEl, axis);
1472
+ currentTranslate += swiper.cssOverflowAdjustment();
1473
+ if (rtl) currentTranslate = -currentTranslate;
1474
+ return currentTranslate || 0;
1475
+ }
1476
+
1477
+ function setTranslate(translate, byController) {
1478
+ const swiper = this;
1479
+ const {
1480
+ rtlTranslate: rtl,
1481
+ params,
1482
+ wrapperEl,
1483
+ progress
1484
+ } = swiper;
1485
+ let x = 0;
1486
+ let y = 0;
1487
+ const z = 0;
1488
+ if (swiper.isHorizontal()) {
1489
+ x = rtl ? -translate : translate;
1490
+ } else {
1491
+ y = translate;
1492
+ }
1493
+ if (params.roundLengths) {
1494
+ x = Math.floor(x);
1495
+ y = Math.floor(y);
1496
+ }
1497
+ swiper.previousTranslate = swiper.translate;
1498
+ swiper.translate = swiper.isHorizontal() ? x : y;
1499
+ if (params.cssMode) {
1500
+ wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
1501
+ } else if (!params.virtualTranslate) {
1502
+ if (swiper.isHorizontal()) {
1503
+ x -= swiper.cssOverflowAdjustment();
1504
+ } else {
1505
+ y -= swiper.cssOverflowAdjustment();
1506
+ }
1507
+ wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
1508
+ }
1509
+
1510
+ // Check if we need to update progress
1511
+ let newProgress;
1512
+ const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1513
+ if (translatesDiff === 0) {
1514
+ newProgress = 0;
1515
+ } else {
1516
+ newProgress = (translate - swiper.minTranslate()) / translatesDiff;
1517
+ }
1518
+ if (newProgress !== progress) {
1519
+ swiper.updateProgress(translate);
1520
+ }
1521
+ swiper.emit('setTranslate', swiper.translate, byController);
1522
+ }
1523
+
1524
+ function minTranslate() {
1525
+ return -this.snapGrid[0];
1526
+ }
1527
+
1528
+ function maxTranslate() {
1529
+ return -this.snapGrid[this.snapGrid.length - 1];
1530
+ }
1531
+
1532
+ function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1533
+ const swiper = this;
1534
+ const {
1535
+ params,
1536
+ wrapperEl
1537
+ } = swiper;
1538
+ if (swiper.animating && params.preventInteractionOnTransition) {
1539
+ return false;
1540
+ }
1541
+ const minTranslate = swiper.minTranslate();
1542
+ const maxTranslate = swiper.maxTranslate();
1543
+ let newTranslate;
1544
+ if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
1545
+
1546
+ // Update progress
1547
+ swiper.updateProgress(newTranslate);
1548
+ if (params.cssMode) {
1549
+ const isH = swiper.isHorizontal();
1550
+ if (speed === 0) {
1551
+ wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1552
+ } else {
1553
+ if (!swiper.support.smoothScroll) {
1554
+ animateCSSModeScroll({
1555
+ swiper,
1556
+ targetPosition: -newTranslate,
1557
+ side: isH ? 'left' : 'top'
1558
+ });
1559
+ return true;
1560
+ }
1561
+ wrapperEl.scrollTo({
1562
+ [isH ? 'left' : 'top']: -newTranslate,
1563
+ behavior: 'smooth'
1564
+ });
1565
+ }
1566
+ return true;
1567
+ }
1568
+ if (speed === 0) {
1569
+ swiper.setTransition(0);
1570
+ swiper.setTranslate(newTranslate);
1571
+ if (runCallbacks) {
1572
+ swiper.emit('beforeTransitionStart', speed, internal);
1573
+ swiper.emit('transitionEnd');
1574
+ }
1575
+ } else {
1576
+ swiper.setTransition(speed);
1577
+ swiper.setTranslate(newTranslate);
1578
+ if (runCallbacks) {
1579
+ swiper.emit('beforeTransitionStart', speed, internal);
1580
+ swiper.emit('transitionStart');
1581
+ }
1582
+ if (!swiper.animating) {
1583
+ swiper.animating = true;
1584
+ if (!swiper.onTranslateToWrapperTransitionEnd) {
1585
+ swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
1586
+ if (!swiper || swiper.destroyed) return;
1587
+ if (e.target !== this) return;
1588
+ swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1589
+ swiper.onTranslateToWrapperTransitionEnd = null;
1590
+ delete swiper.onTranslateToWrapperTransitionEnd;
1591
+ if (runCallbacks) {
1592
+ swiper.emit('transitionEnd');
1593
+ }
1594
+ };
1595
+ }
1596
+ swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1597
+ }
1598
+ }
1599
+ return true;
1600
+ }
1601
+
1602
+ const translate = {
1603
+ getTranslate: getSwiperTranslate,
1604
+ setTranslate,
1605
+ minTranslate,
1606
+ maxTranslate,
1607
+ translateTo
1608
+ };
1609
+
1610
+ function setTransition(duration, byController) {
1611
+ const swiper = this;
1612
+ if (!swiper.params.cssMode) {
1613
+ swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
1614
+ }
1615
+ swiper.emit('setTransition', duration, byController);
1616
+ }
1617
+
1618
+ function transitionEmit({
1619
+ swiper,
1620
+ runCallbacks,
1621
+ direction,
1622
+ step
1623
+ }) {
1624
+ const {
1625
+ activeIndex,
1626
+ previousIndex
1627
+ } = swiper;
1628
+ let dir = direction;
1629
+ if (!dir) {
1630
+ if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
1631
+ }
1632
+ swiper.emit(`transition${step}`);
1633
+ if (runCallbacks && activeIndex !== previousIndex) {
1634
+ if (dir === 'reset') {
1635
+ swiper.emit(`slideResetTransition${step}`);
1636
+ return;
1637
+ }
1638
+ swiper.emit(`slideChangeTransition${step}`);
1639
+ if (dir === 'next') {
1640
+ swiper.emit(`slideNextTransition${step}`);
1641
+ } else {
1642
+ swiper.emit(`slidePrevTransition${step}`);
1643
+ }
1644
+ }
1645
+ }
1646
+
1647
+ function transitionStart(runCallbacks = true, direction) {
1648
+ const swiper = this;
1649
+ const {
1650
+ params
1651
+ } = swiper;
1652
+ if (params.cssMode) return;
1653
+ if (params.autoHeight) {
1654
+ swiper.updateAutoHeight();
1655
+ }
1656
+ transitionEmit({
1657
+ swiper,
1658
+ runCallbacks,
1659
+ direction,
1660
+ step: 'Start'
1661
+ });
1662
+ }
1663
+
1664
+ function transitionEnd(runCallbacks = true, direction) {
1665
+ const swiper = this;
1666
+ const {
1667
+ params
1668
+ } = swiper;
1669
+ swiper.animating = false;
1670
+ if (params.cssMode) return;
1671
+ swiper.setTransition(0);
1672
+ transitionEmit({
1673
+ swiper,
1674
+ runCallbacks,
1675
+ direction,
1676
+ step: 'End'
1677
+ });
1678
+ }
1679
+
1680
+ const transition = {
1681
+ setTransition,
1682
+ transitionStart,
1683
+ transitionEnd
1684
+ };
1685
+
1686
+ function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {
1687
+ if (typeof index === 'string') {
1688
+ index = parseInt(index, 10);
1689
+ }
1690
+ const swiper = this;
1691
+ let slideIndex = index;
1692
+ if (slideIndex < 0) slideIndex = 0;
1693
+ const {
1694
+ params,
1695
+ snapGrid,
1696
+ slidesGrid,
1697
+ previousIndex,
1698
+ activeIndex,
1699
+ rtlTranslate: rtl,
1700
+ wrapperEl,
1701
+ enabled
1702
+ } = swiper;
1703
+ if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
1704
+ return false;
1705
+ }
1706
+ const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
1707
+ let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
1708
+ if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
1709
+ const translate = -snapGrid[snapIndex];
1710
+ // Normalize slideIndex
1711
+ if (params.normalizeSlideIndex) {
1712
+ for (let i = 0; i < slidesGrid.length; i += 1) {
1713
+ const normalizedTranslate = -Math.floor(translate * 100);
1714
+ const normalizedGrid = Math.floor(slidesGrid[i] * 100);
1715
+ const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
1716
+ if (typeof slidesGrid[i + 1] !== 'undefined') {
1717
+ if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
1718
+ slideIndex = i;
1719
+ } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
1720
+ slideIndex = i + 1;
1721
+ }
1722
+ } else if (normalizedTranslate >= normalizedGrid) {
1723
+ slideIndex = i;
1724
+ }
1725
+ }
1726
+ }
1727
+ // Directions locks
1728
+ if (swiper.initialized && slideIndex !== activeIndex) {
1729
+ if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {
1730
+ return false;
1731
+ }
1732
+ if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
1733
+ if ((activeIndex || 0) !== slideIndex) {
1734
+ return false;
1735
+ }
1736
+ }
1737
+ }
1738
+ if (slideIndex !== (previousIndex || 0) && runCallbacks) {
1739
+ swiper.emit('beforeSlideChangeStart');
1740
+ }
1741
+
1742
+ // Update progress
1743
+ swiper.updateProgress(translate);
1744
+ let direction;
1745
+ if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
1746
+
1747
+ // Update Index
1748
+ if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
1749
+ swiper.updateActiveIndex(slideIndex);
1750
+ // Update Height
1751
+ if (params.autoHeight) {
1752
+ swiper.updateAutoHeight();
1753
+ }
1754
+ swiper.updateSlidesClasses();
1755
+ if (params.effect !== 'slide') {
1756
+ swiper.setTranslate(translate);
1757
+ }
1758
+ if (direction !== 'reset') {
1759
+ swiper.transitionStart(runCallbacks, direction);
1760
+ swiper.transitionEnd(runCallbacks, direction);
1761
+ }
1762
+ return false;
1763
+ }
1764
+ if (params.cssMode) {
1765
+ const isH = swiper.isHorizontal();
1766
+ const t = rtl ? translate : -translate;
1767
+ if (speed === 0) {
1768
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
1769
+ if (isVirtual) {
1770
+ swiper.wrapperEl.style.scrollSnapType = 'none';
1771
+ swiper._immediateVirtual = true;
1772
+ }
1773
+ if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
1774
+ swiper._cssModeVirtualInitialSet = true;
1775
+ requestAnimationFrame(() => {
1776
+ wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
1777
+ });
1778
+ } else {
1779
+ wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
1780
+ }
1781
+ if (isVirtual) {
1782
+ requestAnimationFrame(() => {
1783
+ swiper.wrapperEl.style.scrollSnapType = '';
1784
+ swiper._immediateVirtual = false;
1785
+ });
1786
+ }
1787
+ } else {
1788
+ if (!swiper.support.smoothScroll) {
1789
+ animateCSSModeScroll({
1790
+ swiper,
1791
+ targetPosition: t,
1792
+ side: isH ? 'left' : 'top'
1793
+ });
1794
+ return true;
1795
+ }
1796
+ wrapperEl.scrollTo({
1797
+ [isH ? 'left' : 'top']: t,
1798
+ behavior: 'smooth'
1799
+ });
1800
+ }
1801
+ return true;
1802
+ }
1803
+ swiper.setTransition(speed);
1804
+ swiper.setTranslate(translate);
1805
+ swiper.updateActiveIndex(slideIndex);
1806
+ swiper.updateSlidesClasses();
1807
+ swiper.emit('beforeTransitionStart', speed, internal);
1808
+ swiper.transitionStart(runCallbacks, direction);
1809
+ if (speed === 0) {
1810
+ swiper.transitionEnd(runCallbacks, direction);
1811
+ } else if (!swiper.animating) {
1812
+ swiper.animating = true;
1813
+ if (!swiper.onSlideToWrapperTransitionEnd) {
1814
+ swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
1815
+ if (!swiper || swiper.destroyed) return;
1816
+ if (e.target !== this) return;
1817
+ swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
1818
+ swiper.onSlideToWrapperTransitionEnd = null;
1819
+ delete swiper.onSlideToWrapperTransitionEnd;
1820
+ swiper.transitionEnd(runCallbacks, direction);
1821
+ };
1822
+ }
1823
+ swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
1824
+ }
1825
+ return true;
1826
+ }
1827
+
1828
+ function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {
1829
+ if (typeof index === 'string') {
1830
+ const indexAsNumber = parseInt(index, 10);
1831
+ index = indexAsNumber;
1832
+ }
1833
+ const swiper = this;
1834
+ let newIndex = index;
1835
+ if (swiper.params.loop) {
1836
+ if (swiper.virtual && swiper.params.virtual.enabled) {
1837
+ // eslint-disable-next-line
1838
+ newIndex = newIndex + swiper.virtual.slidesBefore;
1839
+ } else {
1840
+ newIndex = swiper.getSlideIndexByData(newIndex);
1841
+ }
1842
+ }
1843
+ return swiper.slideTo(newIndex, speed, runCallbacks, internal);
1844
+ }
1845
+
1846
+ /* eslint no-unused-vars: "off" */
1847
+ function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
1848
+ const swiper = this;
1849
+ const {
1850
+ enabled,
1851
+ params,
1852
+ animating
1853
+ } = swiper;
1854
+ if (!enabled) return swiper;
1855
+ let perGroup = params.slidesPerGroup;
1856
+ if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
1857
+ perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
1858
+ }
1859
+ const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
1860
+ const isVirtual = swiper.virtual && params.virtual.enabled;
1861
+ if (params.loop) {
1862
+ if (animating && !isVirtual && params.loopPreventsSliding) return false;
1863
+ swiper.loopFix({
1864
+ direction: 'next'
1865
+ });
1866
+ // eslint-disable-next-line
1867
+ swiper._clientLeft = swiper.wrapperEl.clientLeft;
1868
+ }
1869
+ if (params.rewind && swiper.isEnd) {
1870
+ return swiper.slideTo(0, speed, runCallbacks, internal);
1871
+ }
1872
+ return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
1873
+ }
1874
+
1875
+ /* eslint no-unused-vars: "off" */
1876
+ function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
1877
+ const swiper = this;
1878
+ const {
1879
+ params,
1880
+ snapGrid,
1881
+ slidesGrid,
1882
+ rtlTranslate,
1883
+ enabled,
1884
+ animating
1885
+ } = swiper;
1886
+ if (!enabled) return swiper;
1887
+ const isVirtual = swiper.virtual && params.virtual.enabled;
1888
+ if (params.loop) {
1889
+ if (animating && !isVirtual && params.loopPreventsSliding) return false;
1890
+ swiper.loopFix({
1891
+ direction: 'prev'
1892
+ });
1893
+ // eslint-disable-next-line
1894
+ swiper._clientLeft = swiper.wrapperEl.clientLeft;
1895
+ }
1896
+ const translate = rtlTranslate ? swiper.translate : -swiper.translate;
1897
+ function normalize(val) {
1898
+ if (val < 0) return -Math.floor(Math.abs(val));
1899
+ return Math.floor(val);
1900
+ }
1901
+ const normalizedTranslate = normalize(translate);
1902
+ const normalizedSnapGrid = snapGrid.map(val => normalize(val));
1903
+ let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
1904
+ if (typeof prevSnap === 'undefined' && params.cssMode) {
1905
+ let prevSnapIndex;
1906
+ snapGrid.forEach((snap, snapIndex) => {
1907
+ if (normalizedTranslate >= snap) {
1908
+ // prevSnap = snap;
1909
+ prevSnapIndex = snapIndex;
1910
+ }
1911
+ });
1912
+ if (typeof prevSnapIndex !== 'undefined') {
1913
+ prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
1914
+ }
1915
+ }
1916
+ let prevIndex = 0;
1917
+ if (typeof prevSnap !== 'undefined') {
1918
+ prevIndex = slidesGrid.indexOf(prevSnap);
1919
+ if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
1920
+ if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
1921
+ prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
1922
+ prevIndex = Math.max(prevIndex, 0);
1923
+ }
1924
+ }
1925
+ if (params.rewind && swiper.isBeginning) {
1926
+ const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
1927
+ return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
1928
+ }
1929
+ return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
1930
+ }
1931
+
1932
+ /* eslint no-unused-vars: "off" */
1933
+ function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
1934
+ const swiper = this;
1935
+ return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
1936
+ }
1937
+
1938
+ /* eslint no-unused-vars: "off" */
1939
+ function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
1940
+ const swiper = this;
1941
+ let index = swiper.activeIndex;
1942
+ const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
1943
+ const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
1944
+ const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1945
+ if (translate >= swiper.snapGrid[snapIndex]) {
1946
+ // The current translate is on or after the current snap index, so the choice
1947
+ // is between the current index and the one after it.
1948
+ const currentSnap = swiper.snapGrid[snapIndex];
1949
+ const nextSnap = swiper.snapGrid[snapIndex + 1];
1950
+ if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
1951
+ index += swiper.params.slidesPerGroup;
1952
+ }
1953
+ } else {
1954
+ // The current translate is before the current snap index, so the choice
1955
+ // is between the current index and the one before it.
1956
+ const prevSnap = swiper.snapGrid[snapIndex - 1];
1957
+ const currentSnap = swiper.snapGrid[snapIndex];
1958
+ if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
1959
+ index -= swiper.params.slidesPerGroup;
1960
+ }
1961
+ }
1962
+ index = Math.max(index, 0);
1963
+ index = Math.min(index, swiper.slidesGrid.length - 1);
1964
+ return swiper.slideTo(index, speed, runCallbacks, internal);
1965
+ }
1966
+
1967
+ function slideToClickedSlide() {
1968
+ const swiper = this;
1969
+ const {
1970
+ params,
1971
+ slidesEl
1972
+ } = swiper;
1973
+ const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
1974
+ let slideToIndex = swiper.clickedIndex;
1975
+ let realIndex;
1976
+ const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
1977
+ if (params.loop) {
1978
+ if (swiper.animating) return;
1979
+ realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
1980
+ if (params.centeredSlides) {
1981
+ if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
1982
+ swiper.loopFix();
1983
+ slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
1984
+ nextTick(() => {
1985
+ swiper.slideTo(slideToIndex);
1986
+ });
1987
+ } else {
1988
+ swiper.slideTo(slideToIndex);
1989
+ }
1990
+ } else if (slideToIndex > swiper.slides.length - slidesPerView) {
1991
+ swiper.loopFix();
1992
+ slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
1993
+ nextTick(() => {
1994
+ swiper.slideTo(slideToIndex);
1995
+ });
1996
+ } else {
1997
+ swiper.slideTo(slideToIndex);
1998
+ }
1999
+ } else {
2000
+ swiper.slideTo(slideToIndex);
2001
+ }
2002
+ }
2003
+
2004
+ const slide = {
2005
+ slideTo,
2006
+ slideToLoop,
2007
+ slideNext,
2008
+ slidePrev,
2009
+ slideReset,
2010
+ slideToClosest,
2011
+ slideToClickedSlide
2012
+ };
2013
+
2014
+ function loopCreate(slideRealIndex) {
2015
+ const swiper = this;
2016
+ const {
2017
+ params,
2018
+ slidesEl
2019
+ } = swiper;
2020
+ if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
2021
+ const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
2022
+ slides.forEach((el, index) => {
2023
+ el.setAttribute('data-swiper-slide-index', index);
2024
+ });
2025
+ swiper.loopFix({
2026
+ slideRealIndex,
2027
+ direction: params.centeredSlides ? undefined : 'next'
2028
+ });
2029
+ }
2030
+
2031
+ function loopFix({
2032
+ slideRealIndex,
2033
+ slideTo = true,
2034
+ direction,
2035
+ setTranslate,
2036
+ activeSlideIndex,
2037
+ byController,
2038
+ byMousewheel
2039
+ } = {}) {
2040
+ const swiper = this;
2041
+ if (!swiper.params.loop) return;
2042
+ swiper.emit('beforeLoopFix');
2043
+ const {
2044
+ slides,
2045
+ allowSlidePrev,
2046
+ allowSlideNext,
2047
+ slidesEl,
2048
+ params
2049
+ } = swiper;
2050
+ swiper.allowSlidePrev = true;
2051
+ swiper.allowSlideNext = true;
2052
+ if (swiper.virtual && params.virtual.enabled) {
2053
+ if (slideTo) {
2054
+ if (!params.centeredSlides && swiper.snapIndex === 0) {
2055
+ swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
2056
+ } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
2057
+ swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
2058
+ } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
2059
+ swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
2060
+ }
2061
+ }
2062
+ swiper.allowSlidePrev = allowSlidePrev;
2063
+ swiper.allowSlideNext = allowSlideNext;
2064
+ swiper.emit('loopFix');
2065
+ return;
2066
+ }
2067
+ const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));
2068
+ let loopedSlides = params.loopedSlides || slidesPerView;
2069
+ if (loopedSlides % params.slidesPerGroup !== 0) {
2070
+ loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;
2071
+ }
2072
+ swiper.loopedSlides = loopedSlides;
2073
+ const prependSlidesIndexes = [];
2074
+ const appendSlidesIndexes = [];
2075
+ let activeIndex = swiper.activeIndex;
2076
+ if (typeof activeSlideIndex === 'undefined') {
2077
+ activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
2078
+ } else {
2079
+ activeIndex = activeSlideIndex;
2080
+ }
2081
+ const isNext = direction === 'next' || !direction;
2082
+ const isPrev = direction === 'prev' || !direction;
2083
+ let slidesPrepended = 0;
2084
+ let slidesAppended = 0;
2085
+ // prepend last slides before start
2086
+ if (activeSlideIndex < loopedSlides) {
2087
+ slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);
2088
+ for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {
2089
+ const index = i - Math.floor(i / slides.length) * slides.length;
2090
+ prependSlidesIndexes.push(slides.length - index - 1);
2091
+ }
2092
+ } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {
2093
+ slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);
2094
+ for (let i = 0; i < slidesAppended; i += 1) {
2095
+ const index = i - Math.floor(i / slides.length) * slides.length;
2096
+ appendSlidesIndexes.push(index);
2097
+ }
2098
+ }
2099
+ if (isPrev) {
2100
+ prependSlidesIndexes.forEach(index => {
2101
+ swiper.slides[index].swiperLoopMoveDOM = true;
2102
+ slidesEl.prepend(swiper.slides[index]);
2103
+ swiper.slides[index].swiperLoopMoveDOM = false;
2104
+ });
2105
+ }
2106
+ if (isNext) {
2107
+ appendSlidesIndexes.forEach(index => {
2108
+ swiper.slides[index].swiperLoopMoveDOM = true;
2109
+ slidesEl.append(swiper.slides[index]);
2110
+ swiper.slides[index].swiperLoopMoveDOM = false;
2111
+ });
2112
+ }
2113
+ swiper.recalcSlides();
2114
+ if (params.slidesPerView === 'auto') {
2115
+ swiper.updateSlides();
2116
+ }
2117
+ if (params.watchSlidesProgress) {
2118
+ swiper.updateSlidesOffset();
2119
+ }
2120
+ if (slideTo) {
2121
+ if (prependSlidesIndexes.length > 0 && isPrev) {
2122
+ if (typeof slideRealIndex === 'undefined') {
2123
+ const currentSlideTranslate = swiper.slidesGrid[activeIndex];
2124
+ const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
2125
+ const diff = newSlideTranslate - currentSlideTranslate;
2126
+ if (byMousewheel) {
2127
+ swiper.setTranslate(swiper.translate - diff);
2128
+ } else {
2129
+ swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);
2130
+ if (setTranslate) {
2131
+ swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;
2132
+ }
2133
+ }
2134
+ } else {
2135
+ if (setTranslate) {
2136
+ swiper.slideToLoop(slideRealIndex, 0, false, true);
2137
+ }
2138
+ }
2139
+ } else if (appendSlidesIndexes.length > 0 && isNext) {
2140
+ if (typeof slideRealIndex === 'undefined') {
2141
+ const currentSlideTranslate = swiper.slidesGrid[activeIndex];
2142
+ const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
2143
+ const diff = newSlideTranslate - currentSlideTranslate;
2144
+ if (byMousewheel) {
2145
+ swiper.setTranslate(swiper.translate - diff);
2146
+ } else {
2147
+ swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
2148
+ if (setTranslate) {
2149
+ swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;
2150
+ }
2151
+ }
2152
+ } else {
2153
+ swiper.slideToLoop(slideRealIndex, 0, false, true);
2154
+ }
2155
+ }
2156
+ }
2157
+ swiper.allowSlidePrev = allowSlidePrev;
2158
+ swiper.allowSlideNext = allowSlideNext;
2159
+ if (swiper.controller && swiper.controller.control && !byController) {
2160
+ const loopParams = {
2161
+ slideRealIndex,
2162
+ slideTo: false,
2163
+ direction,
2164
+ setTranslate,
2165
+ activeSlideIndex,
2166
+ byController: true
2167
+ };
2168
+ if (Array.isArray(swiper.controller.control)) {
2169
+ swiper.controller.control.forEach(c => {
2170
+ if (!c.destroyed && c.params.loop) c.loopFix(loopParams);
2171
+ });
2172
+ } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
2173
+ swiper.controller.control.loopFix(loopParams);
2174
+ }
2175
+ }
2176
+ swiper.emit('loopFix');
2177
+ }
2178
+
2179
+ function loopDestroy() {
2180
+ const swiper = this;
2181
+ const {
2182
+ params,
2183
+ slidesEl
2184
+ } = swiper;
2185
+ if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
2186
+ swiper.recalcSlides();
2187
+ const newSlidesOrder = [];
2188
+ swiper.slides.forEach(slideEl => {
2189
+ const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;
2190
+ newSlidesOrder[index] = slideEl;
2191
+ });
2192
+ swiper.slides.forEach(slideEl => {
2193
+ slideEl.removeAttribute('data-swiper-slide-index');
2194
+ });
2195
+ newSlidesOrder.forEach(slideEl => {
2196
+ slidesEl.append(slideEl);
2197
+ });
2198
+ swiper.recalcSlides();
2199
+ swiper.slideTo(swiper.realIndex, 0);
2200
+ }
2201
+
2202
+ const loop = {
2203
+ loopCreate,
2204
+ loopFix,
2205
+ loopDestroy
2206
+ };
2207
+
2208
+ function setGrabCursor(moving) {
2209
+ const swiper = this;
2210
+ if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
2211
+ const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
2212
+ if (swiper.isElement) {
2213
+ swiper.__preventObserver__ = true;
2214
+ }
2215
+ el.style.cursor = 'move';
2216
+ el.style.cursor = moving ? 'grabbing' : 'grab';
2217
+ if (swiper.isElement) {
2218
+ requestAnimationFrame(() => {
2219
+ swiper.__preventObserver__ = false;
2220
+ });
2221
+ }
2222
+ }
2223
+
2224
+ function unsetGrabCursor() {
2225
+ const swiper = this;
2226
+ if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
2227
+ return;
2228
+ }
2229
+ if (swiper.isElement) {
2230
+ swiper.__preventObserver__ = true;
2231
+ }
2232
+ swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
2233
+ if (swiper.isElement) {
2234
+ requestAnimationFrame(() => {
2235
+ swiper.__preventObserver__ = false;
2236
+ });
2237
+ }
2238
+ }
2239
+
2240
+ const grabCursor = {
2241
+ setGrabCursor,
2242
+ unsetGrabCursor
2243
+ };
2244
+
2245
+ // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
2246
+ function closestElement(selector, base = this) {
2247
+ function __closestFrom(el) {
2248
+ if (!el || el === getDocument() || el === getWindow()) return null;
2249
+ if (el.assignedSlot) el = el.assignedSlot;
2250
+ const found = el.closest(selector);
2251
+ if (!found && !el.getRootNode) {
2252
+ return null;
2253
+ }
2254
+ return found || __closestFrom(el.getRootNode().host);
2255
+ }
2256
+ return __closestFrom(base);
2257
+ }
2258
+ function onTouchStart(event) {
2259
+ const swiper = this;
2260
+ const document = getDocument();
2261
+ const window = getWindow();
2262
+ const data = swiper.touchEventsData;
2263
+ data.evCache.push(event);
2264
+ const {
2265
+ params,
2266
+ touches,
2267
+ enabled
2268
+ } = swiper;
2269
+ if (!enabled) return;
2270
+ if (!params.simulateTouch && event.pointerType === 'mouse') return;
2271
+ if (swiper.animating && params.preventInteractionOnTransition) {
2272
+ return;
2273
+ }
2274
+ if (!swiper.animating && params.cssMode && params.loop) {
2275
+ swiper.loopFix();
2276
+ }
2277
+ let e = event;
2278
+ if (e.originalEvent) e = e.originalEvent;
2279
+ let targetEl = e.target;
2280
+ if (params.touchEventsTarget === 'wrapper') {
2281
+ if (!swiper.wrapperEl.contains(targetEl)) return;
2282
+ }
2283
+ if ('which' in e && e.which === 3) return;
2284
+ if ('button' in e && e.button > 0) return;
2285
+ if (data.isTouched && data.isMoved) return;
2286
+
2287
+ // change target el for shadow root component
2288
+ const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
2289
+ // eslint-disable-next-line
2290
+ const eventPath = event.composedPath ? event.composedPath() : event.path;
2291
+ if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
2292
+ targetEl = eventPath[0];
2293
+ }
2294
+ const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
2295
+ const isTargetShadow = !!(e.target && e.target.shadowRoot);
2296
+
2297
+ // use closestElement for shadow root element to get the actual closest for nested shadow root element
2298
+ if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
2299
+ swiper.allowClick = true;
2300
+ return;
2301
+ }
2302
+ if (params.swipeHandler) {
2303
+ if (!targetEl.closest(params.swipeHandler)) return;
2304
+ }
2305
+ touches.currentX = e.pageX;
2306
+ touches.currentY = e.pageY;
2307
+ const startX = touches.currentX;
2308
+ const startY = touches.currentY;
2309
+
2310
+ // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
2311
+
2312
+ const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
2313
+ const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
2314
+ if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
2315
+ if (edgeSwipeDetection === 'prevent') {
2316
+ event.preventDefault();
2317
+ } else {
2318
+ return;
2319
+ }
2320
+ }
2321
+ Object.assign(data, {
2322
+ isTouched: true,
2323
+ isMoved: false,
2324
+ allowTouchCallbacks: true,
2325
+ isScrolling: undefined,
2326
+ startMoving: undefined
2327
+ });
2328
+ touches.startX = startX;
2329
+ touches.startY = startY;
2330
+ data.touchStartTime = now();
2331
+ swiper.allowClick = true;
2332
+ swiper.updateSize();
2333
+ swiper.swipeDirection = undefined;
2334
+ if (params.threshold > 0) data.allowThresholdMove = false;
2335
+ let preventDefault = true;
2336
+ if (targetEl.matches(data.focusableElements)) {
2337
+ preventDefault = false;
2338
+ if (targetEl.nodeName === 'SELECT') {
2339
+ data.isTouched = false;
2340
+ }
2341
+ }
2342
+ if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {
2343
+ document.activeElement.blur();
2344
+ }
2345
+ const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
2346
+ if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
2347
+ e.preventDefault();
2348
+ }
2349
+ if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
2350
+ swiper.freeMode.onTouchStart();
2351
+ }
2352
+ swiper.emit('touchStart', e);
2353
+ }
2354
+
2355
+ function onTouchMove(event) {
2356
+ const document = getDocument();
2357
+ const swiper = this;
2358
+ const data = swiper.touchEventsData;
2359
+ const {
2360
+ params,
2361
+ touches,
2362
+ rtlTranslate: rtl,
2363
+ enabled
2364
+ } = swiper;
2365
+ if (!enabled) return;
2366
+ if (!params.simulateTouch && event.pointerType === 'mouse') return;
2367
+ let e = event;
2368
+ if (e.originalEvent) e = e.originalEvent;
2369
+ if (!data.isTouched) {
2370
+ if (data.startMoving && data.isScrolling) {
2371
+ swiper.emit('touchMoveOpposite', e);
2372
+ }
2373
+ return;
2374
+ }
2375
+ const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
2376
+ if (pointerIndex >= 0) data.evCache[pointerIndex] = e;
2377
+ const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;
2378
+ const pageX = targetTouch.pageX;
2379
+ const pageY = targetTouch.pageY;
2380
+ if (e.preventedByNestedSwiper) {
2381
+ touches.startX = pageX;
2382
+ touches.startY = pageY;
2383
+ return;
2384
+ }
2385
+ if (!swiper.allowTouchMove) {
2386
+ if (!e.target.matches(data.focusableElements)) {
2387
+ swiper.allowClick = false;
2388
+ }
2389
+ if (data.isTouched) {
2390
+ Object.assign(touches, {
2391
+ startX: pageX,
2392
+ startY: pageY,
2393
+ prevX: swiper.touches.currentX,
2394
+ prevY: swiper.touches.currentY,
2395
+ currentX: pageX,
2396
+ currentY: pageY
2397
+ });
2398
+ data.touchStartTime = now();
2399
+ }
2400
+ return;
2401
+ }
2402
+ if (params.touchReleaseOnEdges && !params.loop) {
2403
+ if (swiper.isVertical()) {
2404
+ // Vertical
2405
+ if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
2406
+ data.isTouched = false;
2407
+ data.isMoved = false;
2408
+ return;
2409
+ }
2410
+ } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
2411
+ return;
2412
+ }
2413
+ }
2414
+ if (document.activeElement) {
2415
+ if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
2416
+ data.isMoved = true;
2417
+ swiper.allowClick = false;
2418
+ return;
2419
+ }
2420
+ }
2421
+ if (data.allowTouchCallbacks) {
2422
+ swiper.emit('touchMove', e);
2423
+ }
2424
+ if (e.targetTouches && e.targetTouches.length > 1) return;
2425
+ touches.currentX = pageX;
2426
+ touches.currentY = pageY;
2427
+ const diffX = touches.currentX - touches.startX;
2428
+ const diffY = touches.currentY - touches.startY;
2429
+ if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
2430
+ if (typeof data.isScrolling === 'undefined') {
2431
+ let touchAngle;
2432
+ if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
2433
+ data.isScrolling = false;
2434
+ } else {
2435
+ // eslint-disable-next-line
2436
+ if (diffX * diffX + diffY * diffY >= 25) {
2437
+ touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
2438
+ data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
2439
+ }
2440
+ }
2441
+ }
2442
+ if (data.isScrolling) {
2443
+ swiper.emit('touchMoveOpposite', e);
2444
+ }
2445
+ if (typeof data.startMoving === 'undefined') {
2446
+ if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
2447
+ data.startMoving = true;
2448
+ }
2449
+ }
2450
+ if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {
2451
+ data.isTouched = false;
2452
+ return;
2453
+ }
2454
+ if (!data.startMoving) {
2455
+ return;
2456
+ }
2457
+ swiper.allowClick = false;
2458
+ if (!params.cssMode && e.cancelable) {
2459
+ e.preventDefault();
2460
+ }
2461
+ if (params.touchMoveStopPropagation && !params.nested) {
2462
+ e.stopPropagation();
2463
+ }
2464
+ let diff = swiper.isHorizontal() ? diffX : diffY;
2465
+ let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
2466
+ if (params.oneWayMovement) {
2467
+ diff = Math.abs(diff) * (rtl ? 1 : -1);
2468
+ touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
2469
+ }
2470
+ touches.diff = diff;
2471
+ diff *= params.touchRatio;
2472
+ if (rtl) {
2473
+ diff = -diff;
2474
+ touchesDiff = -touchesDiff;
2475
+ }
2476
+ const prevTouchesDirection = swiper.touchesDirection;
2477
+ swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
2478
+ swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';
2479
+ const isLoop = swiper.params.loop && !params.cssMode;
2480
+ if (!data.isMoved) {
2481
+ if (isLoop) {
2482
+ swiper.loopFix({
2483
+ direction: swiper.swipeDirection
2484
+ });
2485
+ }
2486
+ data.startTranslate = swiper.getTranslate();
2487
+ swiper.setTransition(0);
2488
+ if (swiper.animating) {
2489
+ const evt = new window.CustomEvent('transitionend', {
2490
+ bubbles: true,
2491
+ cancelable: true
2492
+ });
2493
+ swiper.wrapperEl.dispatchEvent(evt);
2494
+ }
2495
+ data.allowMomentumBounce = false;
2496
+ // Grab Cursor
2497
+ if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2498
+ swiper.setGrabCursor(true);
2499
+ }
2500
+ swiper.emit('sliderFirstMove', e);
2501
+ }
2502
+ let loopFixed;
2503
+ if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {
2504
+ // need another loop fix
2505
+ swiper.loopFix({
2506
+ direction: swiper.swipeDirection,
2507
+ setTranslate: true
2508
+ });
2509
+ loopFixed = true;
2510
+ }
2511
+ swiper.emit('sliderMove', e);
2512
+ data.isMoved = true;
2513
+ data.currentTranslate = diff + data.startTranslate;
2514
+ let disableParentSwiper = true;
2515
+ let resistanceRatio = params.resistanceRatio;
2516
+ if (params.touchReleaseOnEdges) {
2517
+ resistanceRatio = 0;
2518
+ }
2519
+ if (diff > 0) {
2520
+ if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {
2521
+ swiper.loopFix({
2522
+ direction: 'prev',
2523
+ setTranslate: true,
2524
+ activeSlideIndex: 0
2525
+ });
2526
+ }
2527
+ if (data.currentTranslate > swiper.minTranslate()) {
2528
+ disableParentSwiper = false;
2529
+ if (params.resistance) {
2530
+ data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
2531
+ }
2532
+ }
2533
+ } else if (diff < 0) {
2534
+ if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {
2535
+ swiper.loopFix({
2536
+ direction: 'next',
2537
+ setTranslate: true,
2538
+ activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
2539
+ });
2540
+ }
2541
+ if (data.currentTranslate < swiper.maxTranslate()) {
2542
+ disableParentSwiper = false;
2543
+ if (params.resistance) {
2544
+ data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
2545
+ }
2546
+ }
2547
+ }
2548
+ if (disableParentSwiper) {
2549
+ e.preventedByNestedSwiper = true;
2550
+ }
2551
+
2552
+ // Directions locks
2553
+ if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
2554
+ data.currentTranslate = data.startTranslate;
2555
+ }
2556
+ if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
2557
+ data.currentTranslate = data.startTranslate;
2558
+ }
2559
+ if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
2560
+ data.currentTranslate = data.startTranslate;
2561
+ }
2562
+
2563
+ // Threshold
2564
+ if (params.threshold > 0) {
2565
+ if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
2566
+ if (!data.allowThresholdMove) {
2567
+ data.allowThresholdMove = true;
2568
+ touches.startX = touches.currentX;
2569
+ touches.startY = touches.currentY;
2570
+ data.currentTranslate = data.startTranslate;
2571
+ touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
2572
+ return;
2573
+ }
2574
+ } else {
2575
+ data.currentTranslate = data.startTranslate;
2576
+ return;
2577
+ }
2578
+ }
2579
+ if (!params.followFinger || params.cssMode) return;
2580
+
2581
+ // Update active index in free mode
2582
+ if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
2583
+ swiper.updateActiveIndex();
2584
+ swiper.updateSlidesClasses();
2585
+ }
2586
+ if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
2587
+ swiper.freeMode.onTouchMove();
2588
+ }
2589
+ // Update progress
2590
+ swiper.updateProgress(data.currentTranslate);
2591
+ // Update translate
2592
+ swiper.setTranslate(data.currentTranslate);
2593
+ }
2594
+
2595
+ function onTouchEnd(event) {
2596
+ const swiper = this;
2597
+ const data = swiper.touchEventsData;
2598
+ const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);
2599
+ if (pointerIndex >= 0) {
2600
+ data.evCache.splice(pointerIndex, 1);
2601
+ }
2602
+ if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {
2603
+ const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);
2604
+ if (!proceed) {
2605
+ return;
2606
+ }
2607
+ }
2608
+ const {
2609
+ params,
2610
+ touches,
2611
+ rtlTranslate: rtl,
2612
+ slidesGrid,
2613
+ enabled
2614
+ } = swiper;
2615
+ if (!enabled) return;
2616
+ if (!params.simulateTouch && event.pointerType === 'mouse') return;
2617
+ let e = event;
2618
+ if (e.originalEvent) e = e.originalEvent;
2619
+ if (data.allowTouchCallbacks) {
2620
+ swiper.emit('touchEnd', e);
2621
+ }
2622
+ data.allowTouchCallbacks = false;
2623
+ if (!data.isTouched) {
2624
+ if (data.isMoved && params.grabCursor) {
2625
+ swiper.setGrabCursor(false);
2626
+ }
2627
+ data.isMoved = false;
2628
+ data.startMoving = false;
2629
+ return;
2630
+ }
2631
+ // Return Grab Cursor
2632
+ if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2633
+ swiper.setGrabCursor(false);
2634
+ }
2635
+
2636
+ // Time diff
2637
+ const touchEndTime = now();
2638
+ const timeDiff = touchEndTime - data.touchStartTime;
2639
+
2640
+ // Tap, doubleTap, Click
2641
+ if (swiper.allowClick) {
2642
+ const pathTree = e.path || e.composedPath && e.composedPath();
2643
+ swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
2644
+ swiper.emit('tap click', e);
2645
+ if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
2646
+ swiper.emit('doubleTap doubleClick', e);
2647
+ }
2648
+ }
2649
+ data.lastClickTime = now();
2650
+ nextTick(() => {
2651
+ if (!swiper.destroyed) swiper.allowClick = true;
2652
+ });
2653
+ if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
2654
+ data.isTouched = false;
2655
+ data.isMoved = false;
2656
+ data.startMoving = false;
2657
+ return;
2658
+ }
2659
+ data.isTouched = false;
2660
+ data.isMoved = false;
2661
+ data.startMoving = false;
2662
+ let currentPos;
2663
+ if (params.followFinger) {
2664
+ currentPos = rtl ? swiper.translate : -swiper.translate;
2665
+ } else {
2666
+ currentPos = -data.currentTranslate;
2667
+ }
2668
+ if (params.cssMode) {
2669
+ return;
2670
+ }
2671
+ if (params.freeMode && params.freeMode.enabled) {
2672
+ swiper.freeMode.onTouchEnd({
2673
+ currentPos
2674
+ });
2675
+ return;
2676
+ }
2677
+
2678
+ // Find current slide
2679
+ let stopIndex = 0;
2680
+ let groupSize = swiper.slidesSizesGrid[0];
2681
+ for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
2682
+ const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
2683
+ if (typeof slidesGrid[i + increment] !== 'undefined') {
2684
+ if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
2685
+ stopIndex = i;
2686
+ groupSize = slidesGrid[i + increment] - slidesGrid[i];
2687
+ }
2688
+ } else if (currentPos >= slidesGrid[i]) {
2689
+ stopIndex = i;
2690
+ groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
2691
+ }
2692
+ }
2693
+ let rewindFirstIndex = null;
2694
+ let rewindLastIndex = null;
2695
+ if (params.rewind) {
2696
+ if (swiper.isBeginning) {
2697
+ rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
2698
+ } else if (swiper.isEnd) {
2699
+ rewindFirstIndex = 0;
2700
+ }
2701
+ }
2702
+ // Find current slide size
2703
+ const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
2704
+ const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
2705
+ if (timeDiff > params.longSwipesMs) {
2706
+ // Long touches
2707
+ if (!params.longSwipes) {
2708
+ swiper.slideTo(swiper.activeIndex);
2709
+ return;
2710
+ }
2711
+ if (swiper.swipeDirection === 'next') {
2712
+ if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
2713
+ }
2714
+ if (swiper.swipeDirection === 'prev') {
2715
+ if (ratio > 1 - params.longSwipesRatio) {
2716
+ swiper.slideTo(stopIndex + increment);
2717
+ } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
2718
+ swiper.slideTo(rewindLastIndex);
2719
+ } else {
2720
+ swiper.slideTo(stopIndex);
2721
+ }
2722
+ }
2723
+ } else {
2724
+ // Short swipes
2725
+ if (!params.shortSwipes) {
2726
+ swiper.slideTo(swiper.activeIndex);
2727
+ return;
2728
+ }
2729
+ const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
2730
+ if (!isNavButtonTarget) {
2731
+ if (swiper.swipeDirection === 'next') {
2732
+ swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
2733
+ }
2734
+ if (swiper.swipeDirection === 'prev') {
2735
+ swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
2736
+ }
2737
+ } else if (e.target === swiper.navigation.nextEl) {
2738
+ swiper.slideTo(stopIndex + increment);
2739
+ } else {
2740
+ swiper.slideTo(stopIndex);
2741
+ }
2742
+ }
2743
+ }
2744
+
2745
+ function onResize() {
2746
+ const swiper = this;
2747
+ const {
2748
+ params,
2749
+ el
2750
+ } = swiper;
2751
+ if (el && el.offsetWidth === 0) return;
2752
+
2753
+ // Breakpoints
2754
+ if (params.breakpoints) {
2755
+ swiper.setBreakpoint();
2756
+ }
2757
+
2758
+ // Save locks
2759
+ const {
2760
+ allowSlideNext,
2761
+ allowSlidePrev,
2762
+ snapGrid
2763
+ } = swiper;
2764
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
2765
+
2766
+ // Disable locks on resize
2767
+ swiper.allowSlideNext = true;
2768
+ swiper.allowSlidePrev = true;
2769
+ swiper.updateSize();
2770
+ swiper.updateSlides();
2771
+ swiper.updateSlidesClasses();
2772
+ const isVirtualLoop = isVirtual && params.loop;
2773
+ if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
2774
+ swiper.slideTo(swiper.slides.length - 1, 0, false, true);
2775
+ } else {
2776
+ if (swiper.params.loop && !isVirtual) {
2777
+ swiper.slideToLoop(swiper.realIndex, 0, false, true);
2778
+ } else {
2779
+ swiper.slideTo(swiper.activeIndex, 0, false, true);
2780
+ }
2781
+ }
2782
+ if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
2783
+ clearTimeout(swiper.autoplay.resizeTimeout);
2784
+ swiper.autoplay.resizeTimeout = setTimeout(() => {
2785
+ if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
2786
+ swiper.autoplay.resume();
2787
+ }
2788
+ }, 500);
2789
+ }
2790
+ // Return locks after resize
2791
+ swiper.allowSlidePrev = allowSlidePrev;
2792
+ swiper.allowSlideNext = allowSlideNext;
2793
+ if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
2794
+ swiper.checkOverflow();
2795
+ }
2796
+ }
2797
+
2798
+ function onClick(e) {
2799
+ const swiper = this;
2800
+ if (!swiper.enabled) return;
2801
+ if (!swiper.allowClick) {
2802
+ if (swiper.params.preventClicks) e.preventDefault();
2803
+ if (swiper.params.preventClicksPropagation && swiper.animating) {
2804
+ e.stopPropagation();
2805
+ e.stopImmediatePropagation();
2806
+ }
2807
+ }
2808
+ }
2809
+
2810
+ function onScroll() {
2811
+ const swiper = this;
2812
+ const {
2813
+ wrapperEl,
2814
+ rtlTranslate,
2815
+ enabled
2816
+ } = swiper;
2817
+ if (!enabled) return;
2818
+ swiper.previousTranslate = swiper.translate;
2819
+ if (swiper.isHorizontal()) {
2820
+ swiper.translate = -wrapperEl.scrollLeft;
2821
+ } else {
2822
+ swiper.translate = -wrapperEl.scrollTop;
2823
+ }
2824
+ // eslint-disable-next-line
2825
+ if (swiper.translate === 0) swiper.translate = 0;
2826
+ swiper.updateActiveIndex();
2827
+ swiper.updateSlidesClasses();
2828
+ let newProgress;
2829
+ const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2830
+ if (translatesDiff === 0) {
2831
+ newProgress = 0;
2832
+ } else {
2833
+ newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
2834
+ }
2835
+ if (newProgress !== swiper.progress) {
2836
+ swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
2837
+ }
2838
+ swiper.emit('setTranslate', swiper.translate, false);
2839
+ }
2840
+
2841
+ function onLoad(e) {
2842
+ const swiper = this;
2843
+ processLazyPreloader(swiper, e.target);
2844
+ if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {
2845
+ return;
2846
+ }
2847
+ swiper.update();
2848
+ }
2849
+
2850
+ let dummyEventAttached = false;
2851
+ function dummyEventListener() {}
2852
+ const events = (swiper, method) => {
2853
+ const document = getDocument();
2854
+ const {
2855
+ params,
2856
+ el,
2857
+ wrapperEl,
2858
+ device
2859
+ } = swiper;
2860
+ const capture = !!params.nested;
2861
+ const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
2862
+ const swiperMethod = method;
2863
+
2864
+ // Touch Events
2865
+ el[domMethod]('pointerdown', swiper.onTouchStart, {
2866
+ passive: false
2867
+ });
2868
+ document[domMethod]('pointermove', swiper.onTouchMove, {
2869
+ passive: false,
2870
+ capture
2871
+ });
2872
+ document[domMethod]('pointerup', swiper.onTouchEnd, {
2873
+ passive: true
2874
+ });
2875
+ document[domMethod]('pointercancel', swiper.onTouchEnd, {
2876
+ passive: true
2877
+ });
2878
+ document[domMethod]('pointerout', swiper.onTouchEnd, {
2879
+ passive: true
2880
+ });
2881
+ document[domMethod]('pointerleave', swiper.onTouchEnd, {
2882
+ passive: true
2883
+ });
2884
+
2885
+ // Prevent Links Clicks
2886
+ if (params.preventClicks || params.preventClicksPropagation) {
2887
+ el[domMethod]('click', swiper.onClick, true);
2888
+ }
2889
+ if (params.cssMode) {
2890
+ wrapperEl[domMethod]('scroll', swiper.onScroll);
2891
+ }
2892
+
2893
+ // Resize handler
2894
+ if (params.updateOnWindowResize) {
2895
+ swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
2896
+ } else {
2897
+ swiper[swiperMethod]('observerUpdate', onResize, true);
2898
+ }
2899
+
2900
+ // Images loader
2901
+ el[domMethod]('load', swiper.onLoad, {
2902
+ capture: true
2903
+ });
2904
+ };
2905
+ function attachEvents() {
2906
+ const swiper = this;
2907
+ const document = getDocument();
2908
+ const {
2909
+ params
2910
+ } = swiper;
2911
+ swiper.onTouchStart = onTouchStart.bind(swiper);
2912
+ swiper.onTouchMove = onTouchMove.bind(swiper);
2913
+ swiper.onTouchEnd = onTouchEnd.bind(swiper);
2914
+ if (params.cssMode) {
2915
+ swiper.onScroll = onScroll.bind(swiper);
2916
+ }
2917
+ swiper.onClick = onClick.bind(swiper);
2918
+ swiper.onLoad = onLoad.bind(swiper);
2919
+ if (!dummyEventAttached) {
2920
+ document.addEventListener('touchstart', dummyEventListener);
2921
+ dummyEventAttached = true;
2922
+ }
2923
+ events(swiper, 'on');
2924
+ }
2925
+ function detachEvents() {
2926
+ const swiper = this;
2927
+ events(swiper, 'off');
2928
+ }
2929
+ const events$1 = {
2930
+ attachEvents,
2931
+ detachEvents
2932
+ };
2933
+
2934
+ const isGridEnabled = (swiper, params) => {
2935
+ return swiper.grid && params.grid && params.grid.rows > 1;
2936
+ };
2937
+ function setBreakpoint() {
2938
+ const swiper = this;
2939
+ const {
2940
+ realIndex,
2941
+ initialized,
2942
+ params,
2943
+ el
2944
+ } = swiper;
2945
+ const breakpoints = params.breakpoints;
2946
+ if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
2947
+
2948
+ // Get breakpoint for window width and update parameters
2949
+ const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
2950
+ if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
2951
+ const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
2952
+ const breakpointParams = breakpointOnlyParams || swiper.originalParams;
2953
+ const wasMultiRow = isGridEnabled(swiper, params);
2954
+ const isMultiRow = isGridEnabled(swiper, breakpointParams);
2955
+ const wasEnabled = params.enabled;
2956
+ if (wasMultiRow && !isMultiRow) {
2957
+ el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
2958
+ swiper.emitContainerClasses();
2959
+ } else if (!wasMultiRow && isMultiRow) {
2960
+ el.classList.add(`${params.containerModifierClass}grid`);
2961
+ if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
2962
+ el.classList.add(`${params.containerModifierClass}grid-column`);
2963
+ }
2964
+ swiper.emitContainerClasses();
2965
+ }
2966
+
2967
+ // Toggle navigation, pagination, scrollbar
2968
+ ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
2969
+ if (typeof breakpointParams[prop] === 'undefined') return;
2970
+ const wasModuleEnabled = params[prop] && params[prop].enabled;
2971
+ const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
2972
+ if (wasModuleEnabled && !isModuleEnabled) {
2973
+ swiper[prop].disable();
2974
+ }
2975
+ if (!wasModuleEnabled && isModuleEnabled) {
2976
+ swiper[prop].enable();
2977
+ }
2978
+ });
2979
+ const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
2980
+ const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
2981
+ if (directionChanged && initialized) {
2982
+ swiper.changeDirection();
2983
+ }
2984
+ extend(swiper.params, breakpointParams);
2985
+ const isEnabled = swiper.params.enabled;
2986
+ Object.assign(swiper, {
2987
+ allowTouchMove: swiper.params.allowTouchMove,
2988
+ allowSlideNext: swiper.params.allowSlideNext,
2989
+ allowSlidePrev: swiper.params.allowSlidePrev
2990
+ });
2991
+ if (wasEnabled && !isEnabled) {
2992
+ swiper.disable();
2993
+ } else if (!wasEnabled && isEnabled) {
2994
+ swiper.enable();
2995
+ }
2996
+ swiper.currentBreakpoint = breakpoint;
2997
+ swiper.emit('_beforeBreakpoint', breakpointParams);
2998
+ if (needsReLoop && initialized) {
2999
+ swiper.loopDestroy();
3000
+ swiper.loopCreate(realIndex);
3001
+ swiper.updateSlides();
3002
+ }
3003
+ swiper.emit('breakpoint', breakpointParams);
3004
+ }
3005
+
3006
+ function getBreakpoint(breakpoints, base = 'window', containerEl) {
3007
+ if (!breakpoints || base === 'container' && !containerEl) return undefined;
3008
+ let breakpoint = false;
3009
+ const window = getWindow();
3010
+ const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
3011
+ const points = Object.keys(breakpoints).map(point => {
3012
+ if (typeof point === 'string' && point.indexOf('@') === 0) {
3013
+ const minRatio = parseFloat(point.substr(1));
3014
+ const value = currentHeight * minRatio;
3015
+ return {
3016
+ value,
3017
+ point
3018
+ };
3019
+ }
3020
+ return {
3021
+ value: point,
3022
+ point
3023
+ };
3024
+ });
3025
+ points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
3026
+ for (let i = 0; i < points.length; i += 1) {
3027
+ const {
3028
+ point,
3029
+ value
3030
+ } = points[i];
3031
+ if (base === 'window') {
3032
+ if (window.matchMedia(`(min-width: ${value}px)`).matches) {
3033
+ breakpoint = point;
3034
+ }
3035
+ } else if (value <= containerEl.clientWidth) {
3036
+ breakpoint = point;
3037
+ }
3038
+ }
3039
+ return breakpoint || 'max';
3040
+ }
3041
+
3042
+ const breakpoints = {
3043
+ setBreakpoint,
3044
+ getBreakpoint
3045
+ };
3046
+
3047
+ function prepareClasses(entries, prefix) {
3048
+ const resultClasses = [];
3049
+ entries.forEach(item => {
3050
+ if (typeof item === 'object') {
3051
+ Object.keys(item).forEach(classNames => {
3052
+ if (item[classNames]) {
3053
+ resultClasses.push(prefix + classNames);
3054
+ }
3055
+ });
3056
+ } else if (typeof item === 'string') {
3057
+ resultClasses.push(prefix + item);
3058
+ }
3059
+ });
3060
+ return resultClasses;
3061
+ }
3062
+ function addClasses() {
3063
+ const swiper = this;
3064
+ const {
3065
+ classNames,
3066
+ params,
3067
+ rtl,
3068
+ el,
3069
+ device
3070
+ } = swiper;
3071
+ // prettier-ignore
3072
+ const suffixes = prepareClasses(['initialized', params.direction, {
3073
+ 'free-mode': swiper.params.freeMode && params.freeMode.enabled
3074
+ }, {
3075
+ 'autoheight': params.autoHeight
3076
+ }, {
3077
+ 'rtl': rtl
3078
+ }, {
3079
+ 'grid': params.grid && params.grid.rows > 1
3080
+ }, {
3081
+ 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
3082
+ }, {
3083
+ 'android': device.android
3084
+ }, {
3085
+ 'ios': device.ios
3086
+ }, {
3087
+ 'css-mode': params.cssMode
3088
+ }, {
3089
+ 'centered': params.cssMode && params.centeredSlides
3090
+ }, {
3091
+ 'watch-progress': params.watchSlidesProgress
3092
+ }], params.containerModifierClass);
3093
+ classNames.push(...suffixes);
3094
+ el.classList.add(...classNames);
3095
+ swiper.emitContainerClasses();
3096
+ }
3097
+
3098
+ function removeClasses() {
3099
+ const swiper = this;
3100
+ const {
3101
+ el,
3102
+ classNames
3103
+ } = swiper;
3104
+ el.classList.remove(...classNames);
3105
+ swiper.emitContainerClasses();
3106
+ }
3107
+
3108
+ const classes = {
3109
+ addClasses,
3110
+ removeClasses
3111
+ };
3112
+
3113
+ function checkOverflow() {
3114
+ const swiper = this;
3115
+ const {
3116
+ isLocked: wasLocked,
3117
+ params
3118
+ } = swiper;
3119
+ const {
3120
+ slidesOffsetBefore
3121
+ } = params;
3122
+ if (slidesOffsetBefore) {
3123
+ const lastSlideIndex = swiper.slides.length - 1;
3124
+ const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
3125
+ swiper.isLocked = swiper.size > lastSlideRightEdge;
3126
+ } else {
3127
+ swiper.isLocked = swiper.snapGrid.length === 1;
3128
+ }
3129
+ if (params.allowSlideNext === true) {
3130
+ swiper.allowSlideNext = !swiper.isLocked;
3131
+ }
3132
+ if (params.allowSlidePrev === true) {
3133
+ swiper.allowSlidePrev = !swiper.isLocked;
3134
+ }
3135
+ if (wasLocked && wasLocked !== swiper.isLocked) {
3136
+ swiper.isEnd = false;
3137
+ }
3138
+ if (wasLocked !== swiper.isLocked) {
3139
+ swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
3140
+ }
3141
+ }
3142
+ const checkOverflow$1 = {
3143
+ checkOverflow
3144
+ };
3145
+
3146
+ const defaults = {
3147
+ init: true,
3148
+ direction: 'horizontal',
3149
+ oneWayMovement: false,
3150
+ touchEventsTarget: 'wrapper',
3151
+ initialSlide: 0,
3152
+ speed: 300,
3153
+ cssMode: false,
3154
+ updateOnWindowResize: true,
3155
+ resizeObserver: true,
3156
+ nested: false,
3157
+ createElements: false,
3158
+ enabled: true,
3159
+ focusableElements: 'input, select, option, textarea, button, video, label',
3160
+ // Overrides
3161
+ width: null,
3162
+ height: null,
3163
+ //
3164
+ preventInteractionOnTransition: false,
3165
+ // ssr
3166
+ userAgent: null,
3167
+ url: null,
3168
+ // To support iOS's swipe-to-go-back gesture (when being used in-app).
3169
+ edgeSwipeDetection: false,
3170
+ edgeSwipeThreshold: 20,
3171
+ // Autoheight
3172
+ autoHeight: false,
3173
+ // Set wrapper width
3174
+ setWrapperSize: false,
3175
+ // Virtual Translate
3176
+ virtualTranslate: false,
3177
+ // Effects
3178
+ effect: 'slide',
3179
+ // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
3180
+
3181
+ // Breakpoints
3182
+ breakpoints: undefined,
3183
+ breakpointsBase: 'window',
3184
+ // Slides grid
3185
+ spaceBetween: 0,
3186
+ slidesPerView: 1,
3187
+ slidesPerGroup: 1,
3188
+ slidesPerGroupSkip: 0,
3189
+ slidesPerGroupAuto: false,
3190
+ centeredSlides: false,
3191
+ centeredSlidesBounds: false,
3192
+ slidesOffsetBefore: 0,
3193
+ // in px
3194
+ slidesOffsetAfter: 0,
3195
+ // in px
3196
+ normalizeSlideIndex: true,
3197
+ centerInsufficientSlides: false,
3198
+ // Disable swiper and hide navigation when container not overflow
3199
+ watchOverflow: true,
3200
+ // Round length
3201
+ roundLengths: false,
3202
+ // Touches
3203
+ touchRatio: 1,
3204
+ touchAngle: 45,
3205
+ simulateTouch: true,
3206
+ shortSwipes: true,
3207
+ longSwipes: true,
3208
+ longSwipesRatio: 0.5,
3209
+ longSwipesMs: 300,
3210
+ followFinger: true,
3211
+ allowTouchMove: true,
3212
+ threshold: 5,
3213
+ touchMoveStopPropagation: false,
3214
+ touchStartPreventDefault: true,
3215
+ touchStartForcePreventDefault: false,
3216
+ touchReleaseOnEdges: false,
3217
+ // Unique Navigation Elements
3218
+ uniqueNavElements: true,
3219
+ // Resistance
3220
+ resistance: true,
3221
+ resistanceRatio: 0.85,
3222
+ // Progress
3223
+ watchSlidesProgress: false,
3224
+ // Cursor
3225
+ grabCursor: false,
3226
+ // Clicks
3227
+ preventClicks: true,
3228
+ preventClicksPropagation: true,
3229
+ slideToClickedSlide: false,
3230
+ // loop
3231
+ loop: false,
3232
+ loopedSlides: null,
3233
+ loopPreventsSliding: true,
3234
+ // rewind
3235
+ rewind: false,
3236
+ // Swiping/no swiping
3237
+ allowSlidePrev: true,
3238
+ allowSlideNext: true,
3239
+ swipeHandler: null,
3240
+ // '.swipe-handler',
3241
+ noSwiping: true,
3242
+ noSwipingClass: 'swiper-no-swiping',
3243
+ noSwipingSelector: null,
3244
+ // Passive Listeners
3245
+ passiveListeners: true,
3246
+ maxBackfaceHiddenSlides: 10,
3247
+ // NS
3248
+ containerModifierClass: 'swiper-',
3249
+ // NEW
3250
+ slideClass: 'swiper-slide',
3251
+ slideActiveClass: 'swiper-slide-active',
3252
+ slideVisibleClass: 'swiper-slide-visible',
3253
+ slideNextClass: 'swiper-slide-next',
3254
+ slidePrevClass: 'swiper-slide-prev',
3255
+ wrapperClass: 'swiper-wrapper',
3256
+ lazyPreloaderClass: 'swiper-lazy-preloader',
3257
+ lazyPreloadPrevNext: 0,
3258
+ // Callbacks
3259
+ runCallbacksOnInit: true,
3260
+ // Internals
3261
+ _emitClasses: false
3262
+ };
3263
+
3264
+ function moduleExtendParams(params, allModulesParams) {
3265
+ return function extendParams(obj = {}) {
3266
+ const moduleParamName = Object.keys(obj)[0];
3267
+ const moduleParams = obj[moduleParamName];
3268
+ if (typeof moduleParams !== 'object' || moduleParams === null) {
3269
+ extend(allModulesParams, obj);
3270
+ return;
3271
+ }
3272
+ if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
3273
+ params[moduleParamName] = {
3274
+ auto: true
3275
+ };
3276
+ }
3277
+ if (!(moduleParamName in params && 'enabled' in moduleParams)) {
3278
+ extend(allModulesParams, obj);
3279
+ return;
3280
+ }
3281
+ if (params[moduleParamName] === true) {
3282
+ params[moduleParamName] = {
3283
+ enabled: true
3284
+ };
3285
+ }
3286
+ if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
3287
+ params[moduleParamName].enabled = true;
3288
+ }
3289
+ if (!params[moduleParamName]) params[moduleParamName] = {
3290
+ enabled: false
3291
+ };
3292
+ extend(allModulesParams, obj);
3293
+ };
3294
+ }
3295
+
3296
+ /* eslint no-param-reassign: "off" */
3297
+ const prototypes = {
3298
+ eventsEmitter,
3299
+ update,
3300
+ translate,
3301
+ transition,
3302
+ slide,
3303
+ loop,
3304
+ grabCursor,
3305
+ events: events$1,
3306
+ breakpoints,
3307
+ checkOverflow: checkOverflow$1,
3308
+ classes
3309
+ };
3310
+ const extendedDefaults = {};
3311
+ class Swiper {
3312
+ constructor(...args) {
3313
+ let el;
3314
+ let params;
3315
+ if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
3316
+ params = args[0];
3317
+ } else {
3318
+ [el, params] = args;
3319
+ }
3320
+ if (!params) params = {};
3321
+ params = extend({}, params);
3322
+ if (el && !params.el) params.el = el;
3323
+ const document = getDocument();
3324
+ if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {
3325
+ const swipers = [];
3326
+ document.querySelectorAll(params.el).forEach(containerEl => {
3327
+ const newParams = extend({}, params, {
3328
+ el: containerEl
3329
+ });
3330
+ swipers.push(new Swiper(newParams));
3331
+ });
3332
+ // eslint-disable-next-line no-constructor-return
3333
+ return swipers;
3334
+ }
3335
+
3336
+ // Swiper Instance
3337
+ const swiper = this;
3338
+ swiper.__swiper__ = true;
3339
+ swiper.support = getSupport();
3340
+ swiper.device = getDevice({
3341
+ userAgent: params.userAgent
3342
+ });
3343
+ swiper.browser = getBrowser();
3344
+ swiper.eventsListeners = {};
3345
+ swiper.eventsAnyListeners = [];
3346
+ swiper.modules = [...swiper.__modules__];
3347
+ if (params.modules && Array.isArray(params.modules)) {
3348
+ swiper.modules.push(...params.modules);
3349
+ }
3350
+ const allModulesParams = {};
3351
+ swiper.modules.forEach(mod => {
3352
+ mod({
3353
+ params,
3354
+ swiper,
3355
+ extendParams: moduleExtendParams(params, allModulesParams),
3356
+ on: swiper.on.bind(swiper),
3357
+ once: swiper.once.bind(swiper),
3358
+ off: swiper.off.bind(swiper),
3359
+ emit: swiper.emit.bind(swiper)
3360
+ });
3361
+ });
3362
+
3363
+ // Extend defaults with modules params
3364
+ const swiperParams = extend({}, defaults, allModulesParams);
3365
+
3366
+ // Extend defaults with passed params
3367
+ swiper.params = extend({}, swiperParams, extendedDefaults, params);
3368
+ swiper.originalParams = extend({}, swiper.params);
3369
+ swiper.passedParams = extend({}, params);
3370
+
3371
+ // add event listeners
3372
+ if (swiper.params && swiper.params.on) {
3373
+ Object.keys(swiper.params.on).forEach(eventName => {
3374
+ swiper.on(eventName, swiper.params.on[eventName]);
3375
+ });
3376
+ }
3377
+ if (swiper.params && swiper.params.onAny) {
3378
+ swiper.onAny(swiper.params.onAny);
3379
+ }
3380
+
3381
+ // Extend Swiper
3382
+ Object.assign(swiper, {
3383
+ enabled: swiper.params.enabled,
3384
+ el,
3385
+ // Classes
3386
+ classNames: [],
3387
+ // Slides
3388
+ slides: [],
3389
+ slidesGrid: [],
3390
+ snapGrid: [],
3391
+ slidesSizesGrid: [],
3392
+ // isDirection
3393
+ isHorizontal() {
3394
+ return swiper.params.direction === 'horizontal';
3395
+ },
3396
+ isVertical() {
3397
+ return swiper.params.direction === 'vertical';
3398
+ },
3399
+ // Indexes
3400
+ activeIndex: 0,
3401
+ realIndex: 0,
3402
+ //
3403
+ isBeginning: true,
3404
+ isEnd: false,
3405
+ // Props
3406
+ translate: 0,
3407
+ previousTranslate: 0,
3408
+ progress: 0,
3409
+ velocity: 0,
3410
+ animating: false,
3411
+ cssOverflowAdjustment() {
3412
+ // Returns 0 unless `translate` is > 2**23
3413
+ // Should be subtracted from css values to prevent overflow
3414
+ return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
3415
+ },
3416
+ // Locks
3417
+ allowSlideNext: swiper.params.allowSlideNext,
3418
+ allowSlidePrev: swiper.params.allowSlidePrev,
3419
+ // Touch Events
3420
+ touchEventsData: {
3421
+ isTouched: undefined,
3422
+ isMoved: undefined,
3423
+ allowTouchCallbacks: undefined,
3424
+ touchStartTime: undefined,
3425
+ isScrolling: undefined,
3426
+ currentTranslate: undefined,
3427
+ startTranslate: undefined,
3428
+ allowThresholdMove: undefined,
3429
+ // Form elements to match
3430
+ focusableElements: swiper.params.focusableElements,
3431
+ // Last click time
3432
+ lastClickTime: 0,
3433
+ clickTimeout: undefined,
3434
+ // Velocities
3435
+ velocities: [],
3436
+ allowMomentumBounce: undefined,
3437
+ startMoving: undefined,
3438
+ evCache: []
3439
+ },
3440
+ // Clicks
3441
+ allowClick: true,
3442
+ // Touches
3443
+ allowTouchMove: swiper.params.allowTouchMove,
3444
+ touches: {
3445
+ startX: 0,
3446
+ startY: 0,
3447
+ currentX: 0,
3448
+ currentY: 0,
3449
+ diff: 0
3450
+ },
3451
+ // Images
3452
+ imagesToLoad: [],
3453
+ imagesLoaded: 0
3454
+ });
3455
+ swiper.emit('_swiper');
3456
+
3457
+ // Init
3458
+ if (swiper.params.init) {
3459
+ swiper.init();
3460
+ }
3461
+
3462
+ // Return app instance
3463
+ // eslint-disable-next-line no-constructor-return
3464
+ return swiper;
3465
+ }
3466
+ getSlideIndex(slideEl) {
3467
+ const {
3468
+ slidesEl,
3469
+ params
3470
+ } = this;
3471
+ const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
3472
+ const firstSlideIndex = elementIndex(slides[0]);
3473
+ return elementIndex(slideEl) - firstSlideIndex;
3474
+ }
3475
+ getSlideIndexByData(index) {
3476
+ return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
3477
+ }
3478
+ recalcSlides() {
3479
+ const swiper = this;
3480
+ const {
3481
+ slidesEl,
3482
+ params
3483
+ } = swiper;
3484
+ swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
3485
+ }
3486
+ enable() {
3487
+ const swiper = this;
3488
+ if (swiper.enabled) return;
3489
+ swiper.enabled = true;
3490
+ if (swiper.params.grabCursor) {
3491
+ swiper.setGrabCursor();
3492
+ }
3493
+ swiper.emit('enable');
3494
+ }
3495
+ disable() {
3496
+ const swiper = this;
3497
+ if (!swiper.enabled) return;
3498
+ swiper.enabled = false;
3499
+ if (swiper.params.grabCursor) {
3500
+ swiper.unsetGrabCursor();
3501
+ }
3502
+ swiper.emit('disable');
3503
+ }
3504
+ setProgress(progress, speed) {
3505
+ const swiper = this;
3506
+ progress = Math.min(Math.max(progress, 0), 1);
3507
+ const min = swiper.minTranslate();
3508
+ const max = swiper.maxTranslate();
3509
+ const current = (max - min) * progress + min;
3510
+ swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
3511
+ swiper.updateActiveIndex();
3512
+ swiper.updateSlidesClasses();
3513
+ }
3514
+ emitContainerClasses() {
3515
+ const swiper = this;
3516
+ if (!swiper.params._emitClasses || !swiper.el) return;
3517
+ const cls = swiper.el.className.split(' ').filter(className => {
3518
+ return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
3519
+ });
3520
+ swiper.emit('_containerClasses', cls.join(' '));
3521
+ }
3522
+ getSlideClasses(slideEl) {
3523
+ const swiper = this;
3524
+ if (swiper.destroyed) return '';
3525
+ return slideEl.className.split(' ').filter(className => {
3526
+ return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
3527
+ }).join(' ');
3528
+ }
3529
+ emitSlidesClasses() {
3530
+ const swiper = this;
3531
+ if (!swiper.params._emitClasses || !swiper.el) return;
3532
+ const updates = [];
3533
+ swiper.slides.forEach(slideEl => {
3534
+ const classNames = swiper.getSlideClasses(slideEl);
3535
+ updates.push({
3536
+ slideEl,
3537
+ classNames
3538
+ });
3539
+ swiper.emit('_slideClass', slideEl, classNames);
3540
+ });
3541
+ swiper.emit('_slideClasses', updates);
3542
+ }
3543
+ slidesPerViewDynamic(view = 'current', exact = false) {
3544
+ const swiper = this;
3545
+ const {
3546
+ params,
3547
+ slides,
3548
+ slidesGrid,
3549
+ slidesSizesGrid,
3550
+ size: swiperSize,
3551
+ activeIndex
3552
+ } = swiper;
3553
+ let spv = 1;
3554
+ if (params.centeredSlides) {
3555
+ let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;
3556
+ let breakLoop;
3557
+ for (let i = activeIndex + 1; i < slides.length; i += 1) {
3558
+ if (slides[i] && !breakLoop) {
3559
+ slideSize += slides[i].swiperSlideSize;
3560
+ spv += 1;
3561
+ if (slideSize > swiperSize) breakLoop = true;
3562
+ }
3563
+ }
3564
+ for (let i = activeIndex - 1; i >= 0; i -= 1) {
3565
+ if (slides[i] && !breakLoop) {
3566
+ slideSize += slides[i].swiperSlideSize;
3567
+ spv += 1;
3568
+ if (slideSize > swiperSize) breakLoop = true;
3569
+ }
3570
+ }
3571
+ } else {
3572
+ // eslint-disable-next-line
3573
+ if (view === 'current') {
3574
+ for (let i = activeIndex + 1; i < slides.length; i += 1) {
3575
+ const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
3576
+ if (slideInView) {
3577
+ spv += 1;
3578
+ }
3579
+ }
3580
+ } else {
3581
+ // previous
3582
+ for (let i = activeIndex - 1; i >= 0; i -= 1) {
3583
+ const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
3584
+ if (slideInView) {
3585
+ spv += 1;
3586
+ }
3587
+ }
3588
+ }
3589
+ }
3590
+ return spv;
3591
+ }
3592
+ update() {
3593
+ const swiper = this;
3594
+ if (!swiper || swiper.destroyed) return;
3595
+ const {
3596
+ snapGrid,
3597
+ params
3598
+ } = swiper;
3599
+ // Breakpoints
3600
+ if (params.breakpoints) {
3601
+ swiper.setBreakpoint();
3602
+ }
3603
+ [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
3604
+ if (imageEl.complete) {
3605
+ processLazyPreloader(swiper, imageEl);
3606
+ }
3607
+ });
3608
+ swiper.updateSize();
3609
+ swiper.updateSlides();
3610
+ swiper.updateProgress();
3611
+ swiper.updateSlidesClasses();
3612
+ function setTranslate() {
3613
+ const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
3614
+ const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
3615
+ swiper.setTranslate(newTranslate);
3616
+ swiper.updateActiveIndex();
3617
+ swiper.updateSlidesClasses();
3618
+ }
3619
+ let translated;
3620
+ if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
3621
+ setTranslate();
3622
+ if (params.autoHeight) {
3623
+ swiper.updateAutoHeight();
3624
+ }
3625
+ } else {
3626
+ if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
3627
+ const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
3628
+ translated = swiper.slideTo(slides.length - 1, 0, false, true);
3629
+ } else {
3630
+ translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
3631
+ }
3632
+ if (!translated) {
3633
+ setTranslate();
3634
+ }
3635
+ }
3636
+ if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
3637
+ swiper.checkOverflow();
3638
+ }
3639
+ swiper.emit('update');
3640
+ }
3641
+ changeDirection(newDirection, needUpdate = true) {
3642
+ const swiper = this;
3643
+ const currentDirection = swiper.params.direction;
3644
+ if (!newDirection) {
3645
+ // eslint-disable-next-line
3646
+ newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
3647
+ }
3648
+ if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
3649
+ return swiper;
3650
+ }
3651
+ swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
3652
+ swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
3653
+ swiper.emitContainerClasses();
3654
+ swiper.params.direction = newDirection;
3655
+ swiper.slides.forEach(slideEl => {
3656
+ if (newDirection === 'vertical') {
3657
+ slideEl.style.width = '';
3658
+ } else {
3659
+ slideEl.style.height = '';
3660
+ }
3661
+ });
3662
+ swiper.emit('changeDirection');
3663
+ if (needUpdate) swiper.update();
3664
+ return swiper;
3665
+ }
3666
+ changeLanguageDirection(direction) {
3667
+ const swiper = this;
3668
+ if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
3669
+ swiper.rtl = direction === 'rtl';
3670
+ swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
3671
+ if (swiper.rtl) {
3672
+ swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
3673
+ swiper.el.dir = 'rtl';
3674
+ } else {
3675
+ swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
3676
+ swiper.el.dir = 'ltr';
3677
+ }
3678
+ swiper.update();
3679
+ }
3680
+ mount(element) {
3681
+ const swiper = this;
3682
+ if (swiper.mounted) return true;
3683
+
3684
+ // Find el
3685
+ let el = element || swiper.params.el;
3686
+ if (typeof el === 'string') {
3687
+ el = document.querySelector(el);
3688
+ }
3689
+ if (!el) {
3690
+ return false;
3691
+ }
3692
+ el.swiper = swiper;
3693
+ if (el.shadowEl) {
3694
+ swiper.isElement = true;
3695
+ }
3696
+ const getWrapperSelector = () => {
3697
+ return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
3698
+ };
3699
+ const getWrapper = () => {
3700
+ if (el && el.shadowRoot && el.shadowRoot.querySelector) {
3701
+ const res = el.shadowRoot.querySelector(getWrapperSelector());
3702
+ // Children needs to return slot items
3703
+ return res;
3704
+ }
3705
+ return elementChildren(el, getWrapperSelector())[0];
3706
+ };
3707
+ // Find Wrapper
3708
+ let wrapperEl = getWrapper();
3709
+ if (!wrapperEl && swiper.params.createElements) {
3710
+ wrapperEl = createElement('div', swiper.params.wrapperClass);
3711
+ el.append(wrapperEl);
3712
+ elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {
3713
+ wrapperEl.append(slideEl);
3714
+ });
3715
+ }
3716
+ Object.assign(swiper, {
3717
+ el,
3718
+ wrapperEl,
3719
+ slidesEl: swiper.isElement ? el : wrapperEl,
3720
+ mounted: true,
3721
+ // RTL
3722
+ rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',
3723
+ rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),
3724
+ wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'
3725
+ });
3726
+ return true;
3727
+ }
3728
+ init(el) {
3729
+ const swiper = this;
3730
+ if (swiper.initialized) return swiper;
3731
+ const mounted = swiper.mount(el);
3732
+ if (mounted === false) return swiper;
3733
+ swiper.emit('beforeInit');
3734
+
3735
+ // Set breakpoint
3736
+ if (swiper.params.breakpoints) {
3737
+ swiper.setBreakpoint();
3738
+ }
3739
+
3740
+ // Add Classes
3741
+ swiper.addClasses();
3742
+
3743
+ // Update size
3744
+ swiper.updateSize();
3745
+
3746
+ // Update slides
3747
+ swiper.updateSlides();
3748
+ if (swiper.params.watchOverflow) {
3749
+ swiper.checkOverflow();
3750
+ }
3751
+
3752
+ // Set Grab Cursor
3753
+ if (swiper.params.grabCursor && swiper.enabled) {
3754
+ swiper.setGrabCursor();
3755
+ }
3756
+
3757
+ // Slide To Initial Slide
3758
+ if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
3759
+ swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
3760
+ } else {
3761
+ swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
3762
+ }
3763
+
3764
+ // Create loop
3765
+ if (swiper.params.loop) {
3766
+ swiper.loopCreate();
3767
+ }
3768
+
3769
+ // Attach events
3770
+ swiper.attachEvents();
3771
+ [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
3772
+ if (imageEl.complete) {
3773
+ processLazyPreloader(swiper, imageEl);
3774
+ } else {
3775
+ imageEl.addEventListener('load', e => {
3776
+ processLazyPreloader(swiper, e.target);
3777
+ });
3778
+ }
3779
+ });
3780
+ preload(swiper);
3781
+
3782
+ // Init Flag
3783
+ swiper.initialized = true;
3784
+ preload(swiper);
3785
+
3786
+ // Emit
3787
+ swiper.emit('init');
3788
+ swiper.emit('afterInit');
3789
+ return swiper;
3790
+ }
3791
+ destroy(deleteInstance = true, cleanStyles = true) {
3792
+ const swiper = this;
3793
+ const {
3794
+ params,
3795
+ el,
3796
+ wrapperEl,
3797
+ slides
3798
+ } = swiper;
3799
+ if (typeof swiper.params === 'undefined' || swiper.destroyed) {
3800
+ return null;
3801
+ }
3802
+ swiper.emit('beforeDestroy');
3803
+
3804
+ // Init Flag
3805
+ swiper.initialized = false;
3806
+
3807
+ // Detach events
3808
+ swiper.detachEvents();
3809
+
3810
+ // Destroy loop
3811
+ if (params.loop) {
3812
+ swiper.loopDestroy();
3813
+ }
3814
+
3815
+ // Cleanup styles
3816
+ if (cleanStyles) {
3817
+ swiper.removeClasses();
3818
+ el.removeAttribute('style');
3819
+ wrapperEl.removeAttribute('style');
3820
+ if (slides && slides.length) {
3821
+ slides.forEach(slideEl => {
3822
+ slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
3823
+ slideEl.removeAttribute('style');
3824
+ slideEl.removeAttribute('data-swiper-slide-index');
3825
+ });
3826
+ }
3827
+ }
3828
+ swiper.emit('destroy');
3829
+
3830
+ // Detach emitter events
3831
+ Object.keys(swiper.eventsListeners).forEach(eventName => {
3832
+ swiper.off(eventName);
3833
+ });
3834
+ if (deleteInstance !== false) {
3835
+ swiper.el.swiper = null;
3836
+ deleteProps(swiper);
3837
+ }
3838
+ swiper.destroyed = true;
3839
+ return null;
3840
+ }
3841
+ static extendDefaults(newDefaults) {
3842
+ extend(extendedDefaults, newDefaults);
3843
+ }
3844
+ static get extendedDefaults() {
3845
+ return extendedDefaults;
3846
+ }
3847
+ static get defaults() {
3848
+ return defaults;
3849
+ }
3850
+ static installModule(mod) {
3851
+ if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
3852
+ const modules = Swiper.prototype.__modules__;
3853
+ if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
3854
+ modules.push(mod);
3855
+ }
3856
+ }
3857
+ static use(module) {
3858
+ if (Array.isArray(module)) {
3859
+ module.forEach(m => Swiper.installModule(m));
3860
+ return Swiper;
3861
+ }
3862
+ Swiper.installModule(module);
3863
+ return Swiper;
3864
+ }
3865
+ }
3866
+ Object.keys(prototypes).forEach(prototypeGroup => {
3867
+ Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
3868
+ Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3869
+ });
3870
+ });
3871
+ Swiper.use([Resize, Observer]);
3872
+
3873
+ /* eslint-disable consistent-return */
3874
+ function Keyboard({
3875
+ swiper,
3876
+ extendParams,
3877
+ on,
3878
+ emit
3879
+ }) {
3880
+ const document = getDocument();
3881
+ const window = getWindow();
3882
+ swiper.keyboard = {
3883
+ enabled: false
3884
+ };
3885
+ extendParams({
3886
+ keyboard: {
3887
+ enabled: false,
3888
+ onlyInViewport: true,
3889
+ pageUpDown: true
3890
+ }
3891
+ });
3892
+ function handle(event) {
3893
+ if (!swiper.enabled) return;
3894
+ const {
3895
+ rtlTranslate: rtl
3896
+ } = swiper;
3897
+ let e = event;
3898
+ if (e.originalEvent) e = e.originalEvent; // jquery fix
3899
+ const kc = e.keyCode || e.charCode;
3900
+ const pageUpDown = swiper.params.keyboard.pageUpDown;
3901
+ const isPageUp = pageUpDown && kc === 33;
3902
+ const isPageDown = pageUpDown && kc === 34;
3903
+ const isArrowLeft = kc === 37;
3904
+ const isArrowRight = kc === 39;
3905
+ const isArrowUp = kc === 38;
3906
+ const isArrowDown = kc === 40;
3907
+ // Directions locks
3908
+ if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
3909
+ return false;
3910
+ }
3911
+ if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
3912
+ return false;
3913
+ }
3914
+ if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
3915
+ return undefined;
3916
+ }
3917
+ if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
3918
+ return undefined;
3919
+ }
3920
+ if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
3921
+ let inView = false;
3922
+ // Check that swiper should be inside of visible area of window
3923
+ if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
3924
+ return undefined;
3925
+ }
3926
+ const el = swiper.el;
3927
+ const swiperWidth = el.clientWidth;
3928
+ const swiperHeight = el.clientHeight;
3929
+ const windowWidth = window.innerWidth;
3930
+ const windowHeight = window.innerHeight;
3931
+ const swiperOffset = elementOffset(el);
3932
+ if (rtl) swiperOffset.left -= el.scrollLeft;
3933
+ const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
3934
+ for (let i = 0; i < swiperCoord.length; i += 1) {
3935
+ const point = swiperCoord[i];
3936
+ if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
3937
+ if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
3938
+ inView = true;
3939
+ }
3940
+ }
3941
+ if (!inView) return undefined;
3942
+ }
3943
+ if (swiper.isHorizontal()) {
3944
+ if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
3945
+ if (e.preventDefault) e.preventDefault();else e.returnValue = false;
3946
+ }
3947
+ if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
3948
+ if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
3949
+ } else {
3950
+ if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
3951
+ if (e.preventDefault) e.preventDefault();else e.returnValue = false;
3952
+ }
3953
+ if (isPageDown || isArrowDown) swiper.slideNext();
3954
+ if (isPageUp || isArrowUp) swiper.slidePrev();
3955
+ }
3956
+ emit('keyPress', kc);
3957
+ return undefined;
3958
+ }
3959
+ function enable() {
3960
+ if (swiper.keyboard.enabled) return;
3961
+ document.addEventListener('keydown', handle);
3962
+ swiper.keyboard.enabled = true;
3963
+ }
3964
+ function disable() {
3965
+ if (!swiper.keyboard.enabled) return;
3966
+ document.removeEventListener('keydown', handle);
3967
+ swiper.keyboard.enabled = false;
3968
+ }
3969
+ on('init', () => {
3970
+ if (swiper.params.keyboard.enabled) {
3971
+ enable();
3972
+ }
3973
+ });
3974
+ on('destroy', () => {
3975
+ if (swiper.keyboard.enabled) {
3976
+ disable();
3977
+ }
3978
+ });
3979
+ Object.assign(swiper.keyboard, {
3980
+ enable,
3981
+ disable
3982
+ });
3983
+ }
3984
+
3985
+ function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
3986
+ if (swiper.params.createElements) {
3987
+ Object.keys(checkProps).forEach(key => {
3988
+ if (!params[key] && params.auto === true) {
3989
+ let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];
3990
+ if (!element) {
3991
+ element = createElement('div', checkProps[key]);
3992
+ element.className = checkProps[key];
3993
+ swiper.el.append(element);
3994
+ }
3995
+ params[key] = element;
3996
+ originalParams[key] = element;
3997
+ }
3998
+ });
3999
+ }
4000
+ return params;
4001
+ }
4002
+
4003
+ function Navigation({
4004
+ swiper,
4005
+ extendParams,
4006
+ on,
4007
+ emit
4008
+ }) {
4009
+ extendParams({
4010
+ navigation: {
4011
+ nextEl: null,
4012
+ prevEl: null,
4013
+ hideOnClick: false,
4014
+ disabledClass: 'swiper-button-disabled',
4015
+ hiddenClass: 'swiper-button-hidden',
4016
+ lockClass: 'swiper-button-lock',
4017
+ navigationDisabledClass: 'swiper-navigation-disabled'
4018
+ }
4019
+ });
4020
+ swiper.navigation = {
4021
+ nextEl: null,
4022
+ prevEl: null
4023
+ };
4024
+ const makeElementsArray = el => {
4025
+ if (!Array.isArray(el)) el = [el].filter(e => !!e);
4026
+ return el;
4027
+ };
4028
+ function getEl(el) {
4029
+ let res;
4030
+ if (el && typeof el === 'string' && swiper.isElement) {
4031
+ res = swiper.el.shadowRoot.querySelector(el);
4032
+ if (res) return res;
4033
+ }
4034
+ if (el) {
4035
+ if (typeof el === 'string') res = [...document.querySelectorAll(el)];
4036
+ if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
4037
+ res = swiper.el.querySelector(el);
4038
+ }
4039
+ }
4040
+ if (el && !res) return el;
4041
+ // if (Array.isArray(res) && res.length === 1) res = res[0];
4042
+ return res;
4043
+ }
4044
+ function toggleEl(el, disabled) {
4045
+ const params = swiper.params.navigation;
4046
+ el = makeElementsArray(el);
4047
+ el.forEach(subEl => {
4048
+ if (subEl) {
4049
+ subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));
4050
+ if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;
4051
+ if (swiper.params.watchOverflow && swiper.enabled) {
4052
+ subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
4053
+ }
4054
+ }
4055
+ });
4056
+ }
4057
+ function update() {
4058
+ // Update Navigation Buttons
4059
+ const {
4060
+ nextEl,
4061
+ prevEl
4062
+ } = swiper.navigation;
4063
+ if (swiper.params.loop) {
4064
+ toggleEl(prevEl, false);
4065
+ toggleEl(nextEl, false);
4066
+ return;
4067
+ }
4068
+ toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
4069
+ toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
4070
+ }
4071
+ function onPrevClick(e) {
4072
+ e.preventDefault();
4073
+ if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
4074
+ swiper.slidePrev();
4075
+ emit('navigationPrev');
4076
+ }
4077
+ function onNextClick(e) {
4078
+ e.preventDefault();
4079
+ if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
4080
+ swiper.slideNext();
4081
+ emit('navigationNext');
4082
+ }
4083
+ function init() {
4084
+ const params = swiper.params.navigation;
4085
+ swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
4086
+ nextEl: 'swiper-button-next',
4087
+ prevEl: 'swiper-button-prev'
4088
+ });
4089
+ if (!(params.nextEl || params.prevEl)) return;
4090
+ let nextEl = getEl(params.nextEl);
4091
+ let prevEl = getEl(params.prevEl);
4092
+ Object.assign(swiper.navigation, {
4093
+ nextEl,
4094
+ prevEl
4095
+ });
4096
+ nextEl = makeElementsArray(nextEl);
4097
+ prevEl = makeElementsArray(prevEl);
4098
+ const initButton = (el, dir) => {
4099
+ if (el) {
4100
+ el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
4101
+ }
4102
+ if (!swiper.enabled && el) {
4103
+ el.classList.add(...params.lockClass.split(' '));
4104
+ }
4105
+ };
4106
+ nextEl.forEach(el => initButton(el, 'next'));
4107
+ prevEl.forEach(el => initButton(el, 'prev'));
4108
+ }
4109
+ function destroy() {
4110
+ let {
4111
+ nextEl,
4112
+ prevEl
4113
+ } = swiper.navigation;
4114
+ nextEl = makeElementsArray(nextEl);
4115
+ prevEl = makeElementsArray(prevEl);
4116
+ const destroyButton = (el, dir) => {
4117
+ el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
4118
+ el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));
4119
+ };
4120
+ nextEl.forEach(el => destroyButton(el, 'next'));
4121
+ prevEl.forEach(el => destroyButton(el, 'prev'));
4122
+ }
4123
+ on('init', () => {
4124
+ if (swiper.params.navigation.enabled === false) {
4125
+ // eslint-disable-next-line
4126
+ disable();
4127
+ } else {
4128
+ init();
4129
+ update();
4130
+ }
4131
+ });
4132
+ on('toEdge fromEdge lock unlock', () => {
4133
+ update();
4134
+ });
4135
+ on('destroy', () => {
4136
+ destroy();
4137
+ });
4138
+ on('enable disable', () => {
4139
+ let {
4140
+ nextEl,
4141
+ prevEl
4142
+ } = swiper.navigation;
4143
+ nextEl = makeElementsArray(nextEl);
4144
+ prevEl = makeElementsArray(prevEl);
4145
+ [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));
4146
+ });
4147
+ on('click', (_s, e) => {
4148
+ let {
4149
+ nextEl,
4150
+ prevEl
4151
+ } = swiper.navigation;
4152
+ nextEl = makeElementsArray(nextEl);
4153
+ prevEl = makeElementsArray(prevEl);
4154
+ const targetEl = e.target;
4155
+ if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {
4156
+ if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
4157
+ let isHidden;
4158
+ if (nextEl.length) {
4159
+ isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
4160
+ } else if (prevEl.length) {
4161
+ isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
4162
+ }
4163
+ if (isHidden === true) {
4164
+ emit('navigationShow');
4165
+ } else {
4166
+ emit('navigationHide');
4167
+ }
4168
+ [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));
4169
+ }
4170
+ });
4171
+ const enable = () => {
4172
+ swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));
4173
+ init();
4174
+ update();
4175
+ };
4176
+ const disable = () => {
4177
+ swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));
4178
+ destroy();
4179
+ };
4180
+ Object.assign(swiper.navigation, {
4181
+ enable,
4182
+ disable,
4183
+ update,
4184
+ init,
4185
+ destroy
4186
+ });
4187
+ }
4188
+
4189
+ function classesToSelector(classes = '') {
4190
+ return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
4191
+ .replace(/ /g, '.')}`;
4192
+ }
4193
+
4194
+ function Pagination({
4195
+ swiper,
4196
+ extendParams,
4197
+ on,
4198
+ emit
4199
+ }) {
4200
+ const pfx = 'swiper-pagination';
4201
+ extendParams({
4202
+ pagination: {
4203
+ el: null,
4204
+ bulletElement: 'span',
4205
+ clickable: false,
4206
+ hideOnClick: false,
4207
+ renderBullet: null,
4208
+ renderProgressbar: null,
4209
+ renderFraction: null,
4210
+ renderCustom: null,
4211
+ progressbarOpposite: false,
4212
+ type: 'bullets',
4213
+ // 'bullets' or 'progressbar' or 'fraction' or 'custom'
4214
+ dynamicBullets: false,
4215
+ dynamicMainBullets: 1,
4216
+ formatFractionCurrent: number => number,
4217
+ formatFractionTotal: number => number,
4218
+ bulletClass: `${pfx}-bullet`,
4219
+ bulletActiveClass: `${pfx}-bullet-active`,
4220
+ modifierClass: `${pfx}-`,
4221
+ currentClass: `${pfx}-current`,
4222
+ totalClass: `${pfx}-total`,
4223
+ hiddenClass: `${pfx}-hidden`,
4224
+ progressbarFillClass: `${pfx}-progressbar-fill`,
4225
+ progressbarOppositeClass: `${pfx}-progressbar-opposite`,
4226
+ clickableClass: `${pfx}-clickable`,
4227
+ lockClass: `${pfx}-lock`,
4228
+ horizontalClass: `${pfx}-horizontal`,
4229
+ verticalClass: `${pfx}-vertical`,
4230
+ paginationDisabledClass: `${pfx}-disabled`
4231
+ }
4232
+ });
4233
+ swiper.pagination = {
4234
+ el: null,
4235
+ bullets: []
4236
+ };
4237
+ let bulletSize;
4238
+ let dynamicBulletIndex = 0;
4239
+ const makeElementsArray = el => {
4240
+ if (!Array.isArray(el)) el = [el].filter(e => !!e);
4241
+ return el;
4242
+ };
4243
+ function isPaginationDisabled() {
4244
+ return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
4245
+ }
4246
+ function setSideBullets(bulletEl, position) {
4247
+ const {
4248
+ bulletActiveClass
4249
+ } = swiper.params.pagination;
4250
+ if (!bulletEl) return;
4251
+ bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
4252
+ if (bulletEl) {
4253
+ bulletEl.classList.add(`${bulletActiveClass}-${position}`);
4254
+ bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
4255
+ if (bulletEl) {
4256
+ bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
4257
+ }
4258
+ }
4259
+ }
4260
+ function onBulletClick(e) {
4261
+ const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));
4262
+ if (!bulletEl) {
4263
+ return;
4264
+ }
4265
+ e.preventDefault();
4266
+ const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;
4267
+ if (swiper.params.loop) {
4268
+ if (swiper.realIndex === index) return;
4269
+ const newSlideIndex = swiper.getSlideIndexByData(index);
4270
+ const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);
4271
+ if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {
4272
+ swiper.loopFix({
4273
+ direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',
4274
+ activeSlideIndex: newSlideIndex,
4275
+ slideTo: false
4276
+ });
4277
+ }
4278
+ swiper.slideToLoop(index);
4279
+ } else {
4280
+ swiper.slideTo(index);
4281
+ }
4282
+ }
4283
+ function update() {
4284
+ // Render || Update Pagination bullets/items
4285
+ const rtl = swiper.rtl;
4286
+ const params = swiper.params.pagination;
4287
+ if (isPaginationDisabled()) return;
4288
+ let el = swiper.pagination.el;
4289
+ el = makeElementsArray(el);
4290
+ // Current/Total
4291
+ let current;
4292
+ let previousIndex;
4293
+ const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4294
+ const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4295
+ if (swiper.params.loop) {
4296
+ previousIndex = swiper.previousRealIndex || 0;
4297
+ current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
4298
+ } else if (typeof swiper.snapIndex !== 'undefined') {
4299
+ current = swiper.snapIndex;
4300
+ previousIndex = swiper.previousSnapIndex;
4301
+ } else {
4302
+ previousIndex = swiper.previousIndex || 0;
4303
+ current = swiper.activeIndex || 0;
4304
+ }
4305
+ // Types
4306
+ if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
4307
+ const bullets = swiper.pagination.bullets;
4308
+ let firstIndex;
4309
+ let lastIndex;
4310
+ let midIndex;
4311
+ if (params.dynamicBullets) {
4312
+ bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
4313
+ el.forEach(subEl => {
4314
+ subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
4315
+ });
4316
+ if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
4317
+ dynamicBulletIndex += current - (previousIndex || 0);
4318
+ if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
4319
+ dynamicBulletIndex = params.dynamicMainBullets - 1;
4320
+ } else if (dynamicBulletIndex < 0) {
4321
+ dynamicBulletIndex = 0;
4322
+ }
4323
+ }
4324
+ firstIndex = Math.max(current - dynamicBulletIndex, 0);
4325
+ lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
4326
+ midIndex = (lastIndex + firstIndex) / 2;
4327
+ }
4328
+ bullets.forEach(bulletEl => {
4329
+ const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();
4330
+ bulletEl.classList.remove(...classesToRemove);
4331
+ });
4332
+ if (el.length > 1) {
4333
+ bullets.forEach(bullet => {
4334
+ const bulletIndex = elementIndex(bullet);
4335
+ if (bulletIndex === current) {
4336
+ bullet.classList.add(...params.bulletActiveClass.split(' '));
4337
+ } else if (swiper.isElement) {
4338
+ bullet.setAttribute('part', 'bullet');
4339
+ }
4340
+ if (params.dynamicBullets) {
4341
+ if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
4342
+ bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));
4343
+ }
4344
+ if (bulletIndex === firstIndex) {
4345
+ setSideBullets(bullet, 'prev');
4346
+ }
4347
+ if (bulletIndex === lastIndex) {
4348
+ setSideBullets(bullet, 'next');
4349
+ }
4350
+ }
4351
+ });
4352
+ } else {
4353
+ const bullet = bullets[current];
4354
+ if (bullet) {
4355
+ bullet.classList.add(...params.bulletActiveClass.split(' '));
4356
+ }
4357
+ if (swiper.isElement) {
4358
+ bullets.forEach((bulletEl, bulletIndex) => {
4359
+ bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');
4360
+ });
4361
+ }
4362
+ if (params.dynamicBullets) {
4363
+ const firstDisplayedBullet = bullets[firstIndex];
4364
+ const lastDisplayedBullet = bullets[lastIndex];
4365
+ for (let i = firstIndex; i <= lastIndex; i += 1) {
4366
+ if (bullets[i]) {
4367
+ bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));
4368
+ }
4369
+ }
4370
+ setSideBullets(firstDisplayedBullet, 'prev');
4371
+ setSideBullets(lastDisplayedBullet, 'next');
4372
+ }
4373
+ }
4374
+ if (params.dynamicBullets) {
4375
+ const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
4376
+ const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
4377
+ const offsetProp = rtl ? 'right' : 'left';
4378
+ bullets.forEach(bullet => {
4379
+ bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;
4380
+ });
4381
+ }
4382
+ }
4383
+ el.forEach((subEl, subElIndex) => {
4384
+ if (params.type === 'fraction') {
4385
+ subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {
4386
+ fractionEl.textContent = params.formatFractionCurrent(current + 1);
4387
+ });
4388
+ subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {
4389
+ totalEl.textContent = params.formatFractionTotal(total);
4390
+ });
4391
+ }
4392
+ if (params.type === 'progressbar') {
4393
+ let progressbarDirection;
4394
+ if (params.progressbarOpposite) {
4395
+ progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
4396
+ } else {
4397
+ progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
4398
+ }
4399
+ const scale = (current + 1) / total;
4400
+ let scaleX = 1;
4401
+ let scaleY = 1;
4402
+ if (progressbarDirection === 'horizontal') {
4403
+ scaleX = scale;
4404
+ } else {
4405
+ scaleY = scale;
4406
+ }
4407
+ subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {
4408
+ progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
4409
+ progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
4410
+ });
4411
+ }
4412
+ if (params.type === 'custom' && params.renderCustom) {
4413
+ subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
4414
+ if (subElIndex === 0) emit('paginationRender', subEl);
4415
+ } else {
4416
+ if (subElIndex === 0) emit('paginationRender', subEl);
4417
+ emit('paginationUpdate', subEl);
4418
+ }
4419
+ if (swiper.params.watchOverflow && swiper.enabled) {
4420
+ subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
4421
+ }
4422
+ });
4423
+ }
4424
+ function render() {
4425
+ // Render Container
4426
+ const params = swiper.params.pagination;
4427
+ if (isPaginationDisabled()) return;
4428
+ const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4429
+ let el = swiper.pagination.el;
4430
+ el = makeElementsArray(el);
4431
+ let paginationHTML = '';
4432
+ if (params.type === 'bullets') {
4433
+ let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4434
+ if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
4435
+ numberOfBullets = slidesLength;
4436
+ }
4437
+ for (let i = 0; i < numberOfBullets; i += 1) {
4438
+ if (params.renderBullet) {
4439
+ paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
4440
+ } else {
4441
+ // prettier-ignore
4442
+ paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`;
4443
+ }
4444
+ }
4445
+ }
4446
+ if (params.type === 'fraction') {
4447
+ if (params.renderFraction) {
4448
+ paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
4449
+ } else {
4450
+ paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
4451
+ }
4452
+ }
4453
+ if (params.type === 'progressbar') {
4454
+ if (params.renderProgressbar) {
4455
+ paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
4456
+ } else {
4457
+ paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
4458
+ }
4459
+ }
4460
+ swiper.pagination.bullets = [];
4461
+ el.forEach(subEl => {
4462
+ if (params.type !== 'custom') {
4463
+ subEl.innerHTML = paginationHTML || '';
4464
+ }
4465
+ if (params.type === 'bullets') {
4466
+ swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
4467
+ }
4468
+ });
4469
+ if (params.type !== 'custom') {
4470
+ emit('paginationRender', el[0]);
4471
+ }
4472
+ }
4473
+ function init() {
4474
+ swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
4475
+ el: 'swiper-pagination'
4476
+ });
4477
+ const params = swiper.params.pagination;
4478
+ if (!params.el) return;
4479
+ let el;
4480
+ if (typeof params.el === 'string' && swiper.isElement) {
4481
+ el = swiper.el.shadowRoot.querySelector(params.el);
4482
+ }
4483
+ if (!el && typeof params.el === 'string') {
4484
+ el = [...document.querySelectorAll(params.el)];
4485
+ }
4486
+ if (!el) {
4487
+ el = params.el;
4488
+ }
4489
+ if (!el || el.length === 0) return;
4490
+ if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
4491
+ el = [...swiper.el.querySelectorAll(params.el)];
4492
+ // check if it belongs to another nested Swiper
4493
+ if (el.length > 1) {
4494
+ el = el.filter(subEl => {
4495
+ if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;
4496
+ return true;
4497
+ })[0];
4498
+ }
4499
+ }
4500
+ if (Array.isArray(el) && el.length === 1) el = el[0];
4501
+ Object.assign(swiper.pagination, {
4502
+ el
4503
+ });
4504
+ el = makeElementsArray(el);
4505
+ el.forEach(subEl => {
4506
+ if (params.type === 'bullets' && params.clickable) {
4507
+ subEl.classList.add(params.clickableClass);
4508
+ }
4509
+ subEl.classList.add(params.modifierClass + params.type);
4510
+ subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4511
+ if (params.type === 'bullets' && params.dynamicBullets) {
4512
+ subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
4513
+ dynamicBulletIndex = 0;
4514
+ if (params.dynamicMainBullets < 1) {
4515
+ params.dynamicMainBullets = 1;
4516
+ }
4517
+ }
4518
+ if (params.type === 'progressbar' && params.progressbarOpposite) {
4519
+ subEl.classList.add(params.progressbarOppositeClass);
4520
+ }
4521
+ if (params.clickable) {
4522
+ subEl.addEventListener('click', onBulletClick);
4523
+ }
4524
+ if (!swiper.enabled) {
4525
+ subEl.classList.add(params.lockClass);
4526
+ }
4527
+ });
4528
+ }
4529
+ function destroy() {
4530
+ const params = swiper.params.pagination;
4531
+ if (isPaginationDisabled()) return;
4532
+ let el = swiper.pagination.el;
4533
+ if (el) {
4534
+ el = makeElementsArray(el);
4535
+ el.forEach(subEl => {
4536
+ subEl.classList.remove(params.hiddenClass);
4537
+ subEl.classList.remove(params.modifierClass + params.type);
4538
+ subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4539
+ if (params.clickable) {
4540
+ subEl.removeEventListener('click', onBulletClick);
4541
+ }
4542
+ });
4543
+ }
4544
+ if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
4545
+ }
4546
+ on('changeDirection', () => {
4547
+ if (!swiper.pagination || !swiper.pagination.el) return;
4548
+ const params = swiper.params.pagination;
4549
+ let {
4550
+ el
4551
+ } = swiper.pagination;
4552
+ el = makeElementsArray(el);
4553
+ el.forEach(subEl => {
4554
+ subEl.classList.remove(params.horizontalClass, params.verticalClass);
4555
+ subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4556
+ });
4557
+ });
4558
+ on('init', () => {
4559
+ if (swiper.params.pagination.enabled === false) {
4560
+ // eslint-disable-next-line
4561
+ disable();
4562
+ } else {
4563
+ init();
4564
+ render();
4565
+ update();
4566
+ }
4567
+ });
4568
+ on('activeIndexChange', () => {
4569
+ if (typeof swiper.snapIndex === 'undefined') {
4570
+ update();
4571
+ }
4572
+ });
4573
+ on('snapIndexChange', () => {
4574
+ update();
4575
+ });
4576
+ on('snapGridLengthChange', () => {
4577
+ render();
4578
+ update();
4579
+ });
4580
+ on('destroy', () => {
4581
+ destroy();
4582
+ });
4583
+ on('enable disable', () => {
4584
+ let {
4585
+ el
4586
+ } = swiper.pagination;
4587
+ if (el) {
4588
+ el = makeElementsArray(el);
4589
+ el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
4590
+ }
4591
+ });
4592
+ on('lock unlock', () => {
4593
+ update();
4594
+ });
4595
+ on('click', (_s, e) => {
4596
+ const targetEl = e.target;
4597
+ let {
4598
+ el
4599
+ } = swiper.pagination;
4600
+ if (!Array.isArray(el)) el = [el].filter(element => !!element);
4601
+ if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
4602
+ if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
4603
+ const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
4604
+ if (isHidden === true) {
4605
+ emit('paginationShow');
4606
+ } else {
4607
+ emit('paginationHide');
4608
+ }
4609
+ el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
4610
+ }
4611
+ });
4612
+ const enable = () => {
4613
+ swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
4614
+ let {
4615
+ el
4616
+ } = swiper.pagination;
4617
+ if (el) {
4618
+ el = makeElementsArray(el);
4619
+ el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
4620
+ }
4621
+ init();
4622
+ render();
4623
+ update();
4624
+ };
4625
+ const disable = () => {
4626
+ swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
4627
+ let {
4628
+ el
4629
+ } = swiper.pagination;
4630
+ if (el) {
4631
+ el = makeElementsArray(el);
4632
+ el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
4633
+ }
4634
+ destroy();
4635
+ };
4636
+ Object.assign(swiper.pagination, {
4637
+ enable,
4638
+ disable,
4639
+ render,
4640
+ update,
4641
+ init,
4642
+ destroy
4643
+ });
4644
+ }
4645
+
4646
+ exports.Keyboard = Keyboard;
4647
+ exports.Navigation = Navigation;
4648
+ exports.Pagination = Pagination;
4649
+ exports.Swiper = Swiper;
4650
+ exports.elementTransitionEnd = elementTransitionEnd;
4651
+ exports.getWindow = getWindow;
4652
+ exports.nextTick = nextTick;
4653
+ exports.now = now;
4654
+
4655
+ //# sourceMappingURL=pagination-149c2052.js.map