lightgallery 2.9.0 → 3.0.0-beta.3

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 (619) hide show
  1. package/LICENSE +690 -0
  2. package/README.md +31 -21
  3. package/dist/README.md +229 -0
  4. package/{css → dist/css}/lg-autoplay.css +7 -4
  5. package/{css → dist/css}/lg-autoplay.css.map +1 -1
  6. package/{css → dist/css}/lg-comments.css +0 -6
  7. package/{css → dist/css}/lg-comments.css.map +1 -1
  8. package/dist/css/lg-fullscreen.css +11 -0
  9. package/dist/css/lg-fullscreen.css.map +1 -0
  10. package/dist/css/lg-justified.css +37 -0
  11. package/dist/css/lg-justified.css.map +1 -0
  12. package/{css → dist/css}/lg-pager.css.map +1 -1
  13. package/{css → dist/css}/lg-rotate.css +0 -16
  14. package/{css → dist/css}/lg-rotate.css.map +1 -1
  15. package/dist/css/lg-rtl.css +94 -0
  16. package/dist/css/lg-rtl.css.map +1 -0
  17. package/{css → dist/css}/lg-share.css +4 -32
  18. package/dist/css/lg-share.css.map +1 -0
  19. package/{css → dist/css}/lg-thumbnail.css +7 -3
  20. package/dist/css/lg-thumbnail.css.map +1 -0
  21. package/{css → dist/css}/lg-transitions.css +10 -0
  22. package/dist/css/lg-transitions.css.map +1 -0
  23. package/{css → dist/css}/lg-zoom.css +20 -9
  24. package/dist/css/lg-zoom.css.map +1 -0
  25. package/{css → dist/css}/lightgallery-bundle.css +150 -118
  26. package/dist/css/lightgallery-bundle.css.map +1 -0
  27. package/dist/css/lightgallery-bundle.min.css +1 -0
  28. package/{css → dist/css}/lightgallery-core.css +49 -7
  29. package/dist/css/lightgallery-core.css.map +1 -0
  30. package/{css → dist/css}/lightgallery.css +105 -44
  31. package/dist/css/lightgallery.css.map +1 -0
  32. package/dist/lightgallery.es5.js +3797 -0
  33. package/dist/lightgallery.es5.js.map +1 -0
  34. package/dist/lightgallery.min.js +1 -0
  35. package/dist/lightgallery.umd.js +3800 -0
  36. package/dist/lightgallery.umd.js.map +1 -0
  37. package/dist/package.json +33 -0
  38. package/dist/plugins/autoplay/lg-autoplay.es5.js +193 -0
  39. package/dist/plugins/autoplay/lg-autoplay.es5.js.map +1 -0
  40. package/dist/plugins/autoplay/lg-autoplay.min.js +1 -0
  41. package/dist/plugins/autoplay/lg-autoplay.umd.js +196 -0
  42. package/dist/plugins/autoplay/lg-autoplay.umd.js.map +1 -0
  43. package/dist/plugins/autoplay/package.json +7 -0
  44. package/dist/plugins/comment/lg-comment.es5.js +136 -0
  45. package/dist/plugins/comment/lg-comment.es5.js.map +1 -0
  46. package/dist/plugins/comment/lg-comment.min.js +1 -0
  47. package/dist/plugins/comment/lg-comment.umd.js +139 -0
  48. package/dist/plugins/comment/lg-comment.umd.js.map +1 -0
  49. package/dist/plugins/comment/package.json +7 -0
  50. package/dist/plugins/fullscreen/lg-fullscreen.es5.js +114 -0
  51. package/dist/plugins/fullscreen/lg-fullscreen.es5.js.map +1 -0
  52. package/dist/plugins/fullscreen/lg-fullscreen.min.js +1 -0
  53. package/dist/plugins/fullscreen/lg-fullscreen.umd.js +117 -0
  54. package/dist/plugins/fullscreen/lg-fullscreen.umd.js.map +1 -0
  55. package/dist/plugins/fullscreen/package.json +7 -0
  56. package/dist/plugins/hash/lg-hash.es5.js +207 -0
  57. package/dist/plugins/hash/lg-hash.es5.js.map +1 -0
  58. package/dist/plugins/hash/lg-hash.min.js +1 -0
  59. package/dist/plugins/hash/lg-hash.umd.js +210 -0
  60. package/dist/plugins/hash/lg-hash.umd.js.map +1 -0
  61. package/dist/plugins/hash/package.json +7 -0
  62. package/dist/plugins/justified/lg-justified.es5.js +415 -0
  63. package/dist/plugins/justified/lg-justified.es5.js.map +1 -0
  64. package/dist/plugins/justified/lg-justified.min.js +1 -0
  65. package/dist/plugins/justified/lg-justified.umd.js +418 -0
  66. package/dist/plugins/justified/lg-justified.umd.js.map +1 -0
  67. package/dist/plugins/justified/package.json +7 -0
  68. package/dist/plugins/mediumZoom/lg-medium-zoom.es5.js +95 -0
  69. package/dist/plugins/mediumZoom/lg-medium-zoom.es5.js.map +1 -0
  70. package/dist/plugins/mediumZoom/lg-medium-zoom.min.js +1 -0
  71. package/dist/plugins/mediumZoom/lg-medium-zoom.umd.js +98 -0
  72. package/dist/plugins/mediumZoom/lg-medium-zoom.umd.js.map +1 -0
  73. package/dist/plugins/mediumZoom/package.json +7 -0
  74. package/dist/plugins/originCrop/lg-origin-crop.es5.js +622 -0
  75. package/dist/plugins/originCrop/lg-origin-crop.es5.js.map +1 -0
  76. package/dist/plugins/originCrop/lg-origin-crop.min.js +1 -0
  77. package/dist/plugins/originCrop/lg-origin-crop.umd.js +625 -0
  78. package/dist/plugins/originCrop/lg-origin-crop.umd.js.map +1 -0
  79. package/dist/plugins/pager/lg-pager.es5.js +96 -0
  80. package/dist/plugins/pager/lg-pager.es5.js.map +1 -0
  81. package/dist/plugins/pager/lg-pager.min.js +1 -0
  82. package/dist/plugins/pager/lg-pager.umd.js +99 -0
  83. package/dist/plugins/pager/lg-pager.umd.js.map +1 -0
  84. package/dist/plugins/pager/package.json +7 -0
  85. package/dist/plugins/relativeCaption/lg-relative-caption.es5.js +98 -0
  86. package/dist/plugins/relativeCaption/lg-relative-caption.es5.js.map +1 -0
  87. package/dist/plugins/relativeCaption/lg-relative-caption.min.js +1 -0
  88. package/dist/plugins/relativeCaption/lg-relative-caption.umd.js +101 -0
  89. package/dist/plugins/relativeCaption/lg-relative-caption.umd.js.map +1 -0
  90. package/dist/plugins/relativeCaption/package.json +7 -0
  91. package/dist/plugins/rotate/lg-rotate.es5.js +226 -0
  92. package/dist/plugins/rotate/lg-rotate.es5.js.map +1 -0
  93. package/dist/plugins/rotate/lg-rotate.min.js +1 -0
  94. package/dist/plugins/rotate/lg-rotate.umd.js +229 -0
  95. package/dist/plugins/rotate/lg-rotate.umd.js.map +1 -0
  96. package/dist/plugins/rotate/package.json +7 -0
  97. package/dist/plugins/share/lg-share.es5.js +309 -0
  98. package/dist/plugins/share/lg-share.es5.js.map +1 -0
  99. package/dist/plugins/share/lg-share.min.js +1 -0
  100. package/dist/plugins/share/lg-share.umd.js +312 -0
  101. package/dist/plugins/share/lg-share.umd.js.map +1 -0
  102. package/dist/plugins/share/package.json +7 -0
  103. package/dist/plugins/thumbnail/lg-thumbnail.es5.js +792 -0
  104. package/dist/plugins/thumbnail/lg-thumbnail.es5.js.map +1 -0
  105. package/dist/plugins/thumbnail/lg-thumbnail.min.js +1 -0
  106. package/dist/plugins/thumbnail/lg-thumbnail.umd.js +795 -0
  107. package/dist/plugins/thumbnail/lg-thumbnail.umd.js.map +1 -0
  108. package/dist/plugins/thumbnail/package.json +7 -0
  109. package/dist/plugins/video/lg-video.es5.js +518 -0
  110. package/dist/plugins/video/lg-video.es5.js.map +1 -0
  111. package/dist/plugins/video/lg-video.min.js +1 -0
  112. package/dist/plugins/video/lg-video.umd.js +521 -0
  113. package/dist/plugins/video/lg-video.umd.js.map +1 -0
  114. package/dist/plugins/video/package.json +7 -0
  115. package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +72 -0
  116. package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js.map +1 -0
  117. package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +1 -0
  118. package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +75 -0
  119. package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js.map +1 -0
  120. package/dist/plugins/vimeoThumbnail/package.json +7 -0
  121. package/dist/plugins/zoom/lg-zoom.es5.js +1412 -0
  122. package/dist/plugins/zoom/lg-zoom.es5.js.map +1 -0
  123. package/dist/plugins/zoom/lg-zoom.min.js +1 -0
  124. package/dist/plugins/zoom/lg-zoom.umd.js +1415 -0
  125. package/dist/plugins/zoom/lg-zoom.umd.js.map +1 -0
  126. package/dist/plugins/zoom/package.json +7 -0
  127. package/{scss → dist/scss}/_lg-theme-default.scss +68 -18
  128. package/{scss → dist/scss}/_lg-variables.scss +0 -1
  129. package/{scss → dist/scss}/lg-autoplay.scss +10 -4
  130. package/{scss → dist/scss}/lg-comments.scss +0 -8
  131. package/dist/scss/lg-fullscreen.scss +15 -0
  132. package/dist/scss/lg-justified.scss +63 -0
  133. package/{scss → dist/scss}/lg-rotate.scss +0 -24
  134. package/dist/scss/lg-rtl.scss +145 -0
  135. package/{scss → dist/scss}/lg-share.scss +6 -33
  136. package/{scss → dist/scss}/lg-thumbnail.scss +16 -5
  137. package/{scss → dist/scss}/lg-zoom.scss +46 -9
  138. package/{scss → dist/scss}/lightgallery-bundle.scss +0 -1
  139. package/{scss → dist/scss}/lightgallery-core.scss +73 -6
  140. package/{scss → dist/scss}/lightgallery.scss +0 -1
  141. package/{scss → dist/scss}/transitions/_lg-scale-up.scss +6 -0
  142. package/{scss → dist/scss}/transitions/_lg-slide-circular-vertical.scss +6 -0
  143. package/{scss → dist/scss}/transitions/_lg-slide-circular.scss +6 -0
  144. package/{scss → dist/scss}/transitions/_lg-soft-zoom.scss +6 -0
  145. package/{scss → dist/scss}/transitions/_lg-zoom-in-big.scss +6 -0
  146. package/{scss → dist/scss}/transitions/_lg-zoom-in-out.scss +6 -0
  147. package/{scss → dist/scss}/transitions/_lg-zoom-in.scss +6 -0
  148. package/{scss → dist/scss}/transitions/_lg-zoom-out-big.scss +6 -0
  149. package/{scss → dist/scss}/transitions/_lg-zoom-out-in.scss +6 -0
  150. package/{scss → dist/scss}/transitions/_lg-zoom-out.scss +6 -0
  151. package/dist/types/headless/announce.d.ts +22 -0
  152. package/dist/types/headless/emitter.d.ts +14 -0
  153. package/dist/types/headless/gestures.d.ts +128 -0
  154. package/dist/types/headless/hash-driver.d.ts +77 -0
  155. package/dist/types/headless/icons.d.ts +56 -0
  156. package/dist/types/headless/index.d.ts +34 -0
  157. package/dist/types/headless/items.d.ts +92 -0
  158. package/dist/types/headless/justified-layout.d.ts +71 -0
  159. package/dist/types/headless/license.d.ts +35 -0
  160. package/dist/types/headless/origin-crop.d.ts +135 -0
  161. package/dist/types/headless/origin.d.ts +65 -0
  162. package/dist/types/headless/plugin-slices.d.ts +64 -0
  163. package/dist/types/headless/preload.d.ts +36 -0
  164. package/dist/types/headless/responsive.d.ts +90 -0
  165. package/dist/types/headless/settings.d.ts +268 -0
  166. package/dist/types/headless/share-urls.d.ts +60 -0
  167. package/dist/types/headless/spring.d.ts +42 -0
  168. package/dist/types/headless/state.d.ts +63 -0
  169. package/dist/types/headless/thumb-math.d.ts +85 -0
  170. package/dist/types/headless/toolbar-overflow.d.ts +61 -0
  171. package/dist/types/headless/transition.d.ts +33 -0
  172. package/dist/types/headless/velocity.d.ts +31 -0
  173. package/dist/types/headless/video-urls.d.ts +64 -0
  174. package/dist/types/headless/zoom-math.d.ts +89 -0
  175. package/{index.d.ts → dist/types/index.d.ts} +9 -4
  176. package/{lg-events.d.ts → dist/types/lg-events.d.ts} +300 -300
  177. package/dist/types/lg-icons.d.ts +27 -0
  178. package/{lg-plugin.d.ts → dist/types/lg-plugin.d.ts} +7 -7
  179. package/{lg-settings.d.ts → dist/types/lg-settings.d.ts} +549 -425
  180. package/dist/types/lg-spring-runner.d.ts +14 -0
  181. package/dist/types/lg-toolbar-overflow.d.ts +36 -0
  182. package/{lg-utils.d.ts → dist/types/lg-utils.d.ts} +236 -228
  183. package/{lgQuery.d.ts → dist/types/lgQuery.d.ts} +56 -56
  184. package/{lightgallery.d.ts → dist/types/lightgallery.d.ts} +384 -305
  185. package/{plugins → dist/types/plugins}/autoplay/lg-autoplay-settings.d.ts +41 -38
  186. package/{plugins → dist/types/plugins}/autoplay/lg-autoplay.d.ts +22 -22
  187. package/{plugins → dist/types/plugins}/comment/lg-comment-settings.d.ts +36 -33
  188. package/{plugins → dist/types/plugins}/comment/lg-comment.d.ts +25 -25
  189. package/{plugins → dist/types/plugins}/fullscreen/lg-fullscreen-settings.d.ts +17 -14
  190. package/{plugins → dist/types/plugins}/fullscreen/lg-fullscreen.d.ts +16 -16
  191. package/dist/types/plugins/hash/lg-hash-settings.d.ts +28 -0
  192. package/{plugins → dist/types/plugins}/hash/lg-hash.d.ts +25 -23
  193. package/dist/types/plugins/justified/lg-justified-settings.d.ts +42 -0
  194. package/dist/types/plugins/justified/lg-justified.d.ts +55 -0
  195. package/{plugins → dist/types/plugins}/mediumZoom/lg-medium-zoom-settings.d.ts +16 -16
  196. package/{plugins → dist/types/plugins}/mediumZoom/lg-medium-zoom.d.ts +12 -12
  197. package/dist/types/plugins/originCrop/lg-origin-crop-settings.d.ts +12 -0
  198. package/dist/types/plugins/originCrop/lg-origin-crop.d.ts +79 -0
  199. package/{plugins → dist/types/plugins}/pager/lg-pager-settings.d.ts +7 -7
  200. package/{plugins → dist/types/plugins}/pager/lg-pager.d.ts +13 -13
  201. package/{plugins → dist/types/plugins}/relativeCaption/lg-relative-caption-settings.d.ts +7 -7
  202. package/{plugins → dist/types/plugins}/relativeCaption/lg-relative-caption.d.ts +14 -14
  203. package/{plugins → dist/types/plugins}/rotate/lg-rotate-settings.d.ts +47 -45
  204. package/{plugins → dist/types/plugins}/rotate/lg-rotate.d.ts +25 -24
  205. package/{plugins → dist/types/plugins}/share/lg-fb-share-utils.d.ts +2 -2
  206. package/{plugins → dist/types/plugins}/share/lg-pinterest-share-utils.d.ts +2 -2
  207. package/{plugins → dist/types/plugins}/share/lg-share-settings.d.ts +71 -56
  208. package/dist/types/plugins/share/lg-share.d.ts +33 -0
  209. package/dist/types/plugins/share/lg-twitter-share-utils.d.ts +4 -0
  210. package/{plugins → dist/types/plugins}/share/types.d.ts +6 -6
  211. package/{plugins → dist/types/plugins}/thumbnail/lg-thumbnail-settings.d.ts +85 -70
  212. package/dist/types/plugins/thumbnail/lg-thumbnail.d.ts +88 -0
  213. package/{plugins → dist/types/plugins}/video/lg-video-settings.d.ts +94 -71
  214. package/{plugins → dist/types/plugins}/video/lg-video.d.ts +116 -104
  215. package/{plugins → dist/types/plugins}/video/types.d.ts +8 -8
  216. package/{plugins → dist/types/plugins}/vimeoThumbnail/lg-vimeo-thumbnail-settings.d.ts +11 -11
  217. package/{plugins → dist/types/plugins}/vimeoThumbnail/lg-vimeo-thumbnail.d.ts +14 -14
  218. package/{plugins → dist/types/plugins}/zoom/lg-zoom-settings.d.ts +54 -51
  219. package/{plugins → dist/types/plugins}/zoom/lg-zoom.d.ts +145 -108
  220. package/{types.d.ts → dist/types/types.d.ts} +40 -40
  221. package/package.json +222 -8
  222. package/angular/10/README.md +0 -24
  223. package/angular/10/bundles/lightgallery-angular-10.umd.js +0 -289
  224. package/angular/10/bundles/lightgallery-angular-10.umd.js.map +0 -1
  225. package/angular/10/bundles/lightgallery-angular-10.umd.min.js +0 -2
  226. package/angular/10/bundles/lightgallery-angular-10.umd.min.js.map +0 -1
  227. package/angular/10/esm2015/lib/lightgallery-angular.component.js +0 -225
  228. package/angular/10/esm2015/lib/lightgallery-angular.module.js +0 -17
  229. package/angular/10/esm2015/lib/lightgallery-angular.service.js +0 -14
  230. package/angular/10/esm2015/lightgallery-angular-10.js +0 -5
  231. package/angular/10/esm2015/public-api.js +0 -7
  232. package/angular/10/fesm2015/lightgallery-angular-10.js +0 -261
  233. package/angular/10/fesm2015/lightgallery-angular-10.js.map +0 -1
  234. package/angular/10/lib/lightgallery-angular.component.d.ts +0 -39
  235. package/angular/10/lib/lightgallery-angular.component.d.ts.map +0 -1
  236. package/angular/10/lib/lightgallery-angular.module.d.ts +0 -7
  237. package/angular/10/lib/lightgallery-angular.module.d.ts.map +0 -1
  238. package/angular/10/lib/lightgallery-angular.service.d.ts +0 -7
  239. package/angular/10/lib/lightgallery-angular.service.d.ts.map +0 -1
  240. package/angular/10/lightgallery-angular-10.d.ts +0 -6
  241. package/angular/10/lightgallery-angular-10.d.ts.map +0 -1
  242. package/angular/10/package.json +0 -21
  243. package/angular/10/public-api.d.ts +0 -4
  244. package/angular/10/public-api.d.ts.map +0 -1
  245. package/angular/11/README.md +0 -24
  246. package/angular/11/bundles/lightgallery-angular-11.umd.js +0 -290
  247. package/angular/11/bundles/lightgallery-angular-11.umd.js.map +0 -1
  248. package/angular/11/bundles/lightgallery-angular-11.umd.min.js +0 -2
  249. package/angular/11/bundles/lightgallery-angular-11.umd.min.js.map +0 -1
  250. package/angular/11/esm2015/lib/lightgallery-angular.component.js +0 -225
  251. package/angular/11/esm2015/lib/lightgallery-angular.module.js +0 -18
  252. package/angular/11/esm2015/lib/lightgallery-angular.service.js +0 -14
  253. package/angular/11/esm2015/lightgallery-angular-11.js +0 -5
  254. package/angular/11/esm2015/public-api.js +0 -7
  255. package/angular/11/fesm2015/lightgallery-angular-11.js +0 -262
  256. package/angular/11/fesm2015/lightgallery-angular-11.js.map +0 -1
  257. package/angular/11/lib/lightgallery-angular.component.d.ts +0 -39
  258. package/angular/11/lib/lightgallery-angular.component.d.ts.map +0 -1
  259. package/angular/11/lib/lightgallery-angular.module.d.ts +0 -8
  260. package/angular/11/lib/lightgallery-angular.module.d.ts.map +0 -1
  261. package/angular/11/lib/lightgallery-angular.service.d.ts +0 -7
  262. package/angular/11/lib/lightgallery-angular.service.d.ts.map +0 -1
  263. package/angular/11/lightgallery-angular-11.d.ts +0 -6
  264. package/angular/11/lightgallery-angular-11.d.ts.map +0 -1
  265. package/angular/11/package.json +0 -21
  266. package/angular/11/public-api.d.ts +0 -4
  267. package/angular/11/public-api.d.ts.map +0 -1
  268. package/angular/12/README.md +0 -24
  269. package/angular/12/bundles/lightgallery-angular-12.umd.js +0 -296
  270. package/angular/12/bundles/lightgallery-angular-12.umd.js.map +0 -1
  271. package/angular/12/esm2015/lib/lightgallery-angular.component.js +0 -221
  272. package/angular/12/esm2015/lib/lightgallery-angular.module.js +0 -17
  273. package/angular/12/esm2015/lib/lightgallery-angular.service.js +0 -14
  274. package/angular/12/esm2015/lightgallery-angular-12.js +0 -5
  275. package/angular/12/esm2015/public-api.js +0 -7
  276. package/angular/12/fesm2015/lightgallery-angular-12.js +0 -258
  277. package/angular/12/fesm2015/lightgallery-angular-12.js.map +0 -1
  278. package/angular/12/lib/lightgallery-angular.component.d.ts +0 -38
  279. package/angular/12/lib/lightgallery-angular.module.d.ts +0 -7
  280. package/angular/12/lib/lightgallery-angular.service.d.ts +0 -6
  281. package/angular/12/lightgallery-angular-12.d.ts +0 -5
  282. package/angular/12/package.json +0 -18
  283. package/angular/12/public-api.d.ts +0 -3
  284. package/angular/13/README.md +0 -24
  285. package/angular/13/esm2020/lib/lightgallery-angular.component.mjs +0 -221
  286. package/angular/13/esm2020/lib/lightgallery-angular.module.mjs +0 -17
  287. package/angular/13/esm2020/lib/lightgallery-angular.service.mjs +0 -14
  288. package/angular/13/esm2020/lightgallery-angular-13.mjs +0 -5
  289. package/angular/13/esm2020/public-api.mjs +0 -7
  290. package/angular/13/fesm2015/lightgallery-angular-13.mjs +0 -258
  291. package/angular/13/fesm2015/lightgallery-angular-13.mjs.map +0 -1
  292. package/angular/13/fesm2020/lightgallery-angular-13.mjs +0 -258
  293. package/angular/13/fesm2020/lightgallery-angular-13.mjs.map +0 -1
  294. package/angular/13/lib/lightgallery-angular.component.d.ts +0 -38
  295. package/angular/13/lib/lightgallery-angular.module.d.ts +0 -7
  296. package/angular/13/lib/lightgallery-angular.service.d.ts +0 -6
  297. package/angular/13/lightgallery-angular-13.d.ts +0 -5
  298. package/angular/13/package.json +0 -31
  299. package/angular/13/public-api.d.ts +0 -3
  300. package/angular/14/README.md +0 -24
  301. package/angular/14/esm2020/lib/lightgallery-angular.component.mjs +0 -217
  302. package/angular/14/esm2020/lib/lightgallery-angular.module.mjs +0 -17
  303. package/angular/14/esm2020/lib/lightgallery-angular.service.mjs +0 -14
  304. package/angular/14/esm2020/lightgallery-angular-14.mjs +0 -5
  305. package/angular/14/esm2020/public-api.mjs +0 -7
  306. package/angular/14/fesm2015/lightgallery-angular-14.mjs +0 -254
  307. package/angular/14/fesm2015/lightgallery-angular-14.mjs.map +0 -1
  308. package/angular/14/fesm2020/lightgallery-angular-14.mjs +0 -254
  309. package/angular/14/fesm2020/lightgallery-angular-14.mjs.map +0 -1
  310. package/angular/14/index.d.ts +0 -5
  311. package/angular/14/lib/lightgallery-angular.component.d.ts +0 -38
  312. package/angular/14/lib/lightgallery-angular.module.d.ts +0 -7
  313. package/angular/14/lib/lightgallery-angular.service.d.ts +0 -6
  314. package/angular/14/package.json +0 -31
  315. package/angular/14/public-api.d.ts +0 -3
  316. package/angular/15/README.md +0 -24
  317. package/angular/15/esm2022/lib/lightgallery-angular.component.mjs +0 -218
  318. package/angular/15/esm2022/lib/lightgallery-angular.module.mjs +0 -18
  319. package/angular/15/esm2022/lib/lightgallery-angular.service.mjs +0 -15
  320. package/angular/15/esm2022/lightgallery-angular-15.mjs +0 -5
  321. package/angular/15/esm2022/public-api.mjs +0 -7
  322. package/angular/15/fesm2022/lightgallery-angular-15.mjs +0 -254
  323. package/angular/15/fesm2022/lightgallery-angular-15.mjs.map +0 -1
  324. package/angular/15/index.d.ts +0 -5
  325. package/angular/15/lib/lightgallery-angular.component.d.ts +0 -38
  326. package/angular/15/lib/lightgallery-angular.module.d.ts +0 -7
  327. package/angular/15/lib/lightgallery-angular.service.d.ts +0 -6
  328. package/angular/15/package.json +0 -25
  329. package/angular/15/public-api.d.ts +0 -3
  330. package/angular/16/README.md +0 -24
  331. package/angular/16/esm2022/lib/lightgallery-angular.component.mjs +0 -218
  332. package/angular/16/esm2022/lib/lightgallery-angular.module.mjs +0 -18
  333. package/angular/16/esm2022/lib/lightgallery-angular.service.mjs +0 -15
  334. package/angular/16/esm2022/lightgallery-angular-16.mjs +0 -5
  335. package/angular/16/esm2022/public-api.mjs +0 -7
  336. package/angular/16/fesm2022/lightgallery-angular-16.mjs +0 -254
  337. package/angular/16/fesm2022/lightgallery-angular-16.mjs.map +0 -1
  338. package/angular/16/index.d.ts +0 -5
  339. package/angular/16/lib/lightgallery-angular.component.d.ts +0 -38
  340. package/angular/16/lib/lightgallery-angular.module.d.ts +0 -7
  341. package/angular/16/lib/lightgallery-angular.service.d.ts +0 -6
  342. package/angular/16/package.json +0 -25
  343. package/angular/16/public-api.d.ts +0 -3
  344. package/angular/9/README.md +0 -24
  345. package/angular/9/bundles/lightgallery-angular-9.umd.js +0 -271
  346. package/angular/9/bundles/lightgallery-angular-9.umd.js.map +0 -1
  347. package/angular/9/bundles/lightgallery-angular-9.umd.min.js +0 -2
  348. package/angular/9/bundles/lightgallery-angular-9.umd.min.js.map +0 -1
  349. package/angular/9/esm2015/lib/lightgallery-angular.component.js +0 -225
  350. package/angular/9/esm2015/lib/lightgallery-angular.module.js +0 -17
  351. package/angular/9/esm2015/lib/lightgallery-angular.service.js +0 -14
  352. package/angular/9/esm2015/lightgallery-angular-9.js +0 -5
  353. package/angular/9/esm2015/public-api.js +0 -7
  354. package/angular/9/esm5/lib/lightgallery-angular.component.js +0 -228
  355. package/angular/9/esm5/lib/lightgallery-angular.module.js +0 -21
  356. package/angular/9/esm5/lib/lightgallery-angular.service.js +0 -17
  357. package/angular/9/esm5/lightgallery-angular-9.js +0 -5
  358. package/angular/9/esm5/public-api.js +0 -7
  359. package/angular/9/fesm2015/lightgallery-angular-9.js +0 -261
  360. package/angular/9/fesm2015/lightgallery-angular-9.js.map +0 -1
  361. package/angular/9/fesm5/lightgallery-angular-9.js +0 -268
  362. package/angular/9/fesm5/lightgallery-angular-9.js.map +0 -1
  363. package/angular/9/lib/lightgallery-angular.component.d.ts +0 -38
  364. package/angular/9/lib/lightgallery-angular.module.d.ts +0 -6
  365. package/angular/9/lib/lightgallery-angular.service.d.ts +0 -6
  366. package/angular/9/lightgallery-angular-9.d.ts +0 -5
  367. package/angular/9/package.json +0 -23
  368. package/angular/9/public-api.d.ts +0 -3
  369. package/angular/README.md +0 -24
  370. package/angular/esm2022/lib/lightgallery-angular.component.mjs +0 -218
  371. package/angular/esm2022/lib/lightgallery-angular.module.mjs +0 -18
  372. package/angular/esm2022/lib/lightgallery-angular.service.mjs +0 -15
  373. package/angular/esm2022/lightgallery-angular.mjs +0 -5
  374. package/angular/esm2022/public-api.mjs +0 -7
  375. package/angular/fesm2022/lightgallery-angular.mjs +0 -254
  376. package/angular/fesm2022/lightgallery-angular.mjs.map +0 -1
  377. package/angular/index.d.ts +0 -5
  378. package/angular/lib/lightgallery-angular.component.d.ts +0 -38
  379. package/angular/lib/lightgallery-angular.module.d.ts +0 -7
  380. package/angular/lib/lightgallery-angular.service.d.ts +0 -6
  381. package/angular/package.json +0 -25
  382. package/angular/public-api.d.ts +0 -3
  383. package/css/lg-fullscreen.css +0 -8
  384. package/css/lg-fullscreen.css.map +0 -1
  385. package/css/lg-share.css.map +0 -1
  386. package/css/lg-thumbnail.css.map +0 -1
  387. package/css/lg-transitions.css.map +0 -1
  388. package/css/lg-zoom.css.map +0 -1
  389. package/css/lightgallery-bundle.css.map +0 -1
  390. package/css/lightgallery-bundle.min.css +0 -1
  391. package/css/lightgallery-core.css.map +0 -1
  392. package/css/lightgallery.css.map +0 -1
  393. package/fonts/lg.svg +0 -54
  394. package/fonts/lg.ttf +0 -0
  395. package/fonts/lg.woff +0 -0
  396. package/fonts/lg.woff2 +0 -0
  397. package/lib/index.js +0 -8
  398. package/lib/index.js.map +0 -1
  399. package/lib/lg-events.js +0 -37
  400. package/lib/lg-events.js.map +0 -1
  401. package/lib/lg-plugin.js +0 -13
  402. package/lib/lg-plugin.js.map +0 -1
  403. package/lib/lg-settings.js +0 -83
  404. package/lib/lg-settings.js.map +0 -1
  405. package/lib/lg-utils.js +0 -328
  406. package/lib/lg-utils.js.map +0 -1
  407. package/lib/lgQuery.js +0 -385
  408. package/lib/lgQuery.js.map +0 -1
  409. package/lib/lightgallery.js +0 -1949
  410. package/lib/lightgallery.js.map +0 -1
  411. package/lib/plugins/autoplay/lg-autoplay-settings.js +0 -16
  412. package/lib/plugins/autoplay/lg-autoplay-settings.js.map +0 -1
  413. package/lib/plugins/autoplay/lg-autoplay.js +0 -184
  414. package/lib/plugins/autoplay/lg-autoplay.js.map +0 -1
  415. package/lib/plugins/comment/lg-comment-settings.js +0 -17
  416. package/lib/plugins/comment/lg-comment-settings.js.map +0 -1
  417. package/lib/plugins/comment/lg-comment.js +0 -140
  418. package/lib/plugins/comment/lg-comment.js.map +0 -1
  419. package/lib/plugins/fullscreen/lg-fullscreen-settings.js +0 -10
  420. package/lib/plugins/fullscreen/lg-fullscreen-settings.js.map +0 -1
  421. package/lib/plugins/fullscreen/lg-fullscreen.js +0 -108
  422. package/lib/plugins/fullscreen/lg-fullscreen.js.map +0 -1
  423. package/lib/plugins/hash/lg-hash-settings.js +0 -9
  424. package/lib/plugins/hash/lg-hash-settings.js.map +0 -1
  425. package/lib/plugins/hash/lg-hash.js +0 -139
  426. package/lib/plugins/hash/lg-hash.js.map +0 -1
  427. package/lib/plugins/mediumZoom/lg-medium-zoom-settings.js +0 -9
  428. package/lib/plugins/mediumZoom/lg-medium-zoom-settings.js.map +0 -1
  429. package/lib/plugins/mediumZoom/lg-medium-zoom.js +0 -73
  430. package/lib/plugins/mediumZoom/lg-medium-zoom.js.map +0 -1
  431. package/lib/plugins/pager/lg-pager-settings.js +0 -7
  432. package/lib/plugins/pager/lg-pager-settings.js.map +0 -1
  433. package/lib/plugins/pager/lg-pager.js +0 -82
  434. package/lib/plugins/pager/lg-pager.js.map +0 -1
  435. package/lib/plugins/relativeCaption/lg-relative-caption-settings.js +0 -7
  436. package/lib/plugins/relativeCaption/lg-relative-caption-settings.js.map +0 -1
  437. package/lib/plugins/relativeCaption/lg-relative-caption.js +0 -97
  438. package/lib/plugins/relativeCaption/lg-relative-caption.js.map +0 -1
  439. package/lib/plugins/rotate/lg-rotate-settings.js +0 -18
  440. package/lib/plugins/rotate/lg-rotate-settings.js.map +0 -1
  441. package/lib/plugins/rotate/lg-rotate.js +0 -206
  442. package/lib/plugins/rotate/lg-rotate.js.map +0 -1
  443. package/lib/plugins/share/lg-fb-share-utils.js +0 -10
  444. package/lib/plugins/share/lg-fb-share-utils.js.map +0 -1
  445. package/lib/plugins/share/lg-pinterest-share-utils.js +0 -17
  446. package/lib/plugins/share/lg-pinterest-share-utils.js.map +0 -1
  447. package/lib/plugins/share/lg-share-settings.js +0 -15
  448. package/lib/plugins/share/lg-share-settings.js.map +0 -1
  449. package/lib/plugins/share/lg-share.js +0 -130
  450. package/lib/plugins/share/lg-share.js.map +0 -1
  451. package/lib/plugins/share/lg-twitter-share-utils.js +0 -11
  452. package/lib/plugins/share/lg-twitter-share-utils.js.map +0 -1
  453. package/lib/plugins/share/types.js +0 -3
  454. package/lib/plugins/share/types.js.map +0 -1
  455. package/lib/plugins/thumbnail/lg-thumbnail-settings.js +0 -23
  456. package/lib/plugins/thumbnail/lg-thumbnail-settings.js.map +0 -1
  457. package/lib/plugins/thumbnail/lg-thumbnail.js +0 -414
  458. package/lib/plugins/thumbnail/lg-thumbnail.js.map +0 -1
  459. package/lib/plugins/video/lg-video-settings.js +0 -15
  460. package/lib/plugins/video/lg-video-settings.js.map +0 -1
  461. package/lib/plugins/video/lg-video-utils.js +0 -84
  462. package/lib/plugins/video/lg-video-utils.js.map +0 -1
  463. package/lib/plugins/video/lg-video.js +0 -411
  464. package/lib/plugins/video/lg-video.js.map +0 -1
  465. package/lib/plugins/video/types.js +0 -3
  466. package/lib/plugins/video/types.js.map +0 -1
  467. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.js +0 -8
  468. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.js.map +0 -1
  469. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail.js +0 -122
  470. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail.js.map +0 -1
  471. package/lib/plugins/zoom/lg-zoom-settings.js +0 -21
  472. package/lib/plugins/zoom/lg-zoom-settings.js.map +0 -1
  473. package/lib/plugins/zoom/lg-zoom.js +0 -909
  474. package/lib/plugins/zoom/lg-zoom.js.map +0 -1
  475. package/lib/types.js +0 -3
  476. package/lib/types.js.map +0 -1
  477. package/lightgallery-2.9.0.tgz +0 -0
  478. package/lightgallery.es5.js +0 -2786
  479. package/lightgallery.es5.js.map +0 -1
  480. package/lightgallery.min.js +0 -8
  481. package/lightgallery.umd.js +0 -2794
  482. package/lightgallery.umd.js.map +0 -1
  483. package/lit/custom-elements.json +0 -82
  484. package/lit/lightgallery.esm.js +0 -59
  485. package/lit/lightgallery.umd.js +0 -37
  486. package/lit/package.json +0 -8
  487. package/plugins/autoplay/lg-autoplay.es5.js +0 -250
  488. package/plugins/autoplay/lg-autoplay.es5.js.map +0 -1
  489. package/plugins/autoplay/lg-autoplay.min.js +0 -8
  490. package/plugins/autoplay/lg-autoplay.umd.js +0 -258
  491. package/plugins/autoplay/lg-autoplay.umd.js.map +0 -1
  492. package/plugins/autoplay/package.json +0 -7
  493. package/plugins/comment/lg-comment.es5.js +0 -205
  494. package/plugins/comment/lg-comment.es5.js.map +0 -1
  495. package/plugins/comment/lg-comment.min.js +0 -8
  496. package/plugins/comment/lg-comment.umd.js +0 -213
  497. package/plugins/comment/lg-comment.umd.js.map +0 -1
  498. package/plugins/comment/package.json +0 -7
  499. package/plugins/fullscreen/lg-fullscreen.es5.js +0 -135
  500. package/plugins/fullscreen/lg-fullscreen.es5.js.map +0 -1
  501. package/plugins/fullscreen/lg-fullscreen.min.js +0 -8
  502. package/plugins/fullscreen/lg-fullscreen.umd.js +0 -143
  503. package/plugins/fullscreen/lg-fullscreen.umd.js.map +0 -1
  504. package/plugins/fullscreen/package.json +0 -7
  505. package/plugins/hash/lg-hash-settings.d.ts +0 -16
  506. package/plugins/hash/lg-hash.es5.js +0 -198
  507. package/plugins/hash/lg-hash.es5.js.map +0 -1
  508. package/plugins/hash/lg-hash.min.js +0 -8
  509. package/plugins/hash/lg-hash.umd.js +0 -206
  510. package/plugins/hash/lg-hash.umd.js.map +0 -1
  511. package/plugins/hash/package.json +0 -7
  512. package/plugins/mediumZoom/lg-medium-zoom.es5.js +0 -132
  513. package/plugins/mediumZoom/lg-medium-zoom.es5.js.map +0 -1
  514. package/plugins/mediumZoom/lg-medium-zoom.min.js +0 -8
  515. package/plugins/mediumZoom/lg-medium-zoom.umd.js +0 -140
  516. package/plugins/mediumZoom/lg-medium-zoom.umd.js.map +0 -1
  517. package/plugins/mediumZoom/package.json +0 -7
  518. package/plugins/pager/lg-pager.es5.js +0 -139
  519. package/plugins/pager/lg-pager.es5.js.map +0 -1
  520. package/plugins/pager/lg-pager.min.js +0 -8
  521. package/plugins/pager/lg-pager.umd.js +0 -147
  522. package/plugins/pager/lg-pager.umd.js.map +0 -1
  523. package/plugins/pager/package.json +0 -7
  524. package/plugins/relativeCaption/lg-relative-caption.es5.js +0 -154
  525. package/plugins/relativeCaption/lg-relative-caption.es5.js.map +0 -1
  526. package/plugins/relativeCaption/lg-relative-caption.min.js +0 -8
  527. package/plugins/relativeCaption/lg-relative-caption.umd.js +0 -162
  528. package/plugins/relativeCaption/lg-relative-caption.umd.js.map +0 -1
  529. package/plugins/relativeCaption/package.json +0 -7
  530. package/plugins/rotate/lg-rotate.es5.js +0 -274
  531. package/plugins/rotate/lg-rotate.es5.js.map +0 -1
  532. package/plugins/rotate/lg-rotate.min.js +0 -8
  533. package/plugins/rotate/lg-rotate.umd.js +0 -282
  534. package/plugins/rotate/lg-rotate.umd.js.map +0 -1
  535. package/plugins/rotate/package.json +0 -7
  536. package/plugins/share/lg-share.d.ts +0 -15
  537. package/plugins/share/lg-share.es5.js +0 -219
  538. package/plugins/share/lg-share.es5.js.map +0 -1
  539. package/plugins/share/lg-share.min.js +0 -8
  540. package/plugins/share/lg-share.umd.js +0 -227
  541. package/plugins/share/lg-share.umd.js.map +0 -1
  542. package/plugins/share/lg-twitter-share-utils.d.ts +0 -2
  543. package/plugins/share/package.json +0 -7
  544. package/plugins/thumbnail/lg-thumbnail.d.ts +0 -48
  545. package/plugins/thumbnail/lg-thumbnail.es5.js +0 -487
  546. package/plugins/thumbnail/lg-thumbnail.es5.js.map +0 -1
  547. package/plugins/thumbnail/lg-thumbnail.min.js +0 -8
  548. package/plugins/thumbnail/lg-thumbnail.umd.js +0 -495
  549. package/plugins/thumbnail/lg-thumbnail.umd.js.map +0 -1
  550. package/plugins/thumbnail/package.json +0 -7
  551. package/plugins/video/lg-video-utils.d.ts +0 -10
  552. package/plugins/video/lg-video.es5.js +0 -545
  553. package/plugins/video/lg-video.es5.js.map +0 -1
  554. package/plugins/video/lg-video.min.js +0 -8
  555. package/plugins/video/lg-video.umd.js +0 -553
  556. package/plugins/video/lg-video.umd.js.map +0 -1
  557. package/plugins/video/package.json +0 -7
  558. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +0 -182
  559. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js.map +0 -1
  560. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +0 -8
  561. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +0 -190
  562. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js.map +0 -1
  563. package/plugins/vimeoThumbnail/package.json +0 -7
  564. package/plugins/zoom/lg-zoom.es5.js +0 -980
  565. package/plugins/zoom/lg-zoom.es5.js.map +0 -1
  566. package/plugins/zoom/lg-zoom.min.js +0 -8
  567. package/plugins/zoom/lg-zoom.umd.js +0 -988
  568. package/plugins/zoom/lg-zoom.umd.js.map +0 -1
  569. package/plugins/zoom/package.json +0 -7
  570. package/react/Lightgallery.d.ts +0 -33
  571. package/react/Lightgallery.es5.js +0 -2988
  572. package/react/Lightgallery.es5.js.map +0 -1
  573. package/react/Lightgallery.umd.js +0 -2994
  574. package/react/Lightgallery.umd.js.map +0 -1
  575. package/react/package.json +0 -7
  576. package/scss/_lg-fonts.scss +0 -27
  577. package/scss/lg-fullscreen.scss +0 -9
  578. package/vue/LightGallery.vue.d.ts +0 -37
  579. package/vue/LightGalleryVue.common.js +0 -9343
  580. package/vue/LightGalleryVue.common.js.map +0 -1
  581. package/vue/LightGalleryVue.umd.js +0 -9353
  582. package/vue/LightGalleryVue.umd.js.map +0 -1
  583. package/vue/LightGalleryVue.umd.min.js +0 -8
  584. package/vue/LightGalleryVue.umd.min.js.map +0 -1
  585. package/vue/package.json +0 -7
  586. /package/{css → dist/css}/lg-medium-zoom.css +0 -0
  587. /package/{css → dist/css}/lg-medium-zoom.css.map +0 -0
  588. /package/{css → dist/css}/lg-pager.css +0 -0
  589. /package/{css → dist/css}/lg-relative-caption.css +0 -0
  590. /package/{css → dist/css}/lg-relative-caption.css.map +0 -0
  591. /package/{css → dist/css}/lg-video.css +0 -0
  592. /package/{css → dist/css}/lg-video.css.map +0 -0
  593. /package/{images → dist/images}/loading.gif +0 -0
  594. /package/{scss → dist/scss}/_lg-mixins.scss +0 -0
  595. /package/{scss → dist/scss}/lg-medium-zoom.scss +0 -0
  596. /package/{scss → dist/scss}/lg-pager.scss +0 -0
  597. /package/{scss → dist/scss}/lg-relative-caption.scss +0 -0
  598. /package/{scss → dist/scss}/lg-transitions.scss +0 -0
  599. /package/{scss → dist/scss}/lg-video.scss +0 -0
  600. /package/{scss → dist/scss}/transitions/_index.scss +0 -0
  601. /package/{scss → dist/scss}/transitions/_lg-lollipop-rev.scss +0 -0
  602. /package/{scss → dist/scss}/transitions/_lg-lollipop.scss +0 -0
  603. /package/{scss → dist/scss}/transitions/_lg-rotate-rev.scss +0 -0
  604. /package/{scss → dist/scss}/transitions/_lg-rotate.scss +0 -0
  605. /package/{scss → dist/scss}/transitions/_lg-slide-skew-cross-rev.scss +0 -0
  606. /package/{scss → dist/scss}/transitions/_lg-slide-skew-cross.scss +0 -0
  607. /package/{scss → dist/scss}/transitions/_lg-slide-skew-only-rev.scss +0 -0
  608. /package/{scss → dist/scss}/transitions/_lg-slide-skew-only-y-rev.scss +0 -0
  609. /package/{scss → dist/scss}/transitions/_lg-slide-skew-only-y.scss +0 -0
  610. /package/{scss → dist/scss}/transitions/_lg-slide-skew-only.scss +0 -0
  611. /package/{scss → dist/scss}/transitions/_lg-slide-skew-rev.scss +0 -0
  612. /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver-cross-rev.scss +0 -0
  613. /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver-cross.scss +0 -0
  614. /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver-rev.scss +0 -0
  615. /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver.scss +0 -0
  616. /package/{scss → dist/scss}/transitions/_lg-slide-skew.scss +0 -0
  617. /package/{scss → dist/scss}/transitions/_lg-slide-vertical-growth.scss +0 -0
  618. /package/{scss → dist/scss}/transitions/_lg-slide-vertical.scss +0 -0
  619. /package/{scss → dist/scss}/transitions/_lg-tube.scss +0 -0
@@ -1,2994 +0,0 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react')) :
3
- typeof define === 'function' && define.amd ? define(['react'], factory) :
4
- (global = global || self, global.Lightgallery = factory(global.React));
5
- }(this, (function (React) { 'use strict';
6
-
7
- /*! *****************************************************************************
8
- Copyright (c) Microsoft Corporation.
9
-
10
- Permission to use, copy, modify, and/or distribute this software for any
11
- purpose with or without fee is hereby granted.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
- PERFORMANCE OF THIS SOFTWARE.
20
- ***************************************************************************** */
21
-
22
- function __rest(s, e) {
23
- var t = {};
24
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
25
- t[p] = s[p];
26
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
27
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
28
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
29
- t[p[i]] = s[p[i]];
30
- }
31
- return t;
32
- }
33
-
34
- /*!
35
- * lightgallery | 2.9.0 | October 1st 2025
36
- * http://www.lightgalleryjs.com/
37
- * Copyright (c) 2020 Sachin Neravath;
38
- * @license GPLv3
39
- */
40
-
41
- /*! *****************************************************************************
42
- Copyright (c) Microsoft Corporation.
43
-
44
- Permission to use, copy, modify, and/or distribute this software for any
45
- purpose with or without fee is hereby granted.
46
-
47
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
48
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
49
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
50
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
51
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
52
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
53
- PERFORMANCE OF THIS SOFTWARE.
54
- ***************************************************************************** */
55
-
56
- var __assign = function() {
57
- __assign = Object.assign || function __assign(t) {
58
- for (var s, i = 1, n = arguments.length; i < n; i++) {
59
- s = arguments[i];
60
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
61
- }
62
- return t;
63
- };
64
- return __assign.apply(this, arguments);
65
- };
66
-
67
- function __spreadArrays() {
68
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
69
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
70
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
71
- r[k] = a[j];
72
- return r;
73
- }
74
-
75
- /**
76
- * List of lightGallery events
77
- * All events should be documented here
78
- * Below interfaces are used to build the website documentations
79
- * */
80
- var lGEvents = {
81
- afterAppendSlide: 'lgAfterAppendSlide',
82
- init: 'lgInit',
83
- hasVideo: 'lgHasVideo',
84
- containerResize: 'lgContainerResize',
85
- updateSlides: 'lgUpdateSlides',
86
- afterAppendSubHtml: 'lgAfterAppendSubHtml',
87
- beforeOpen: 'lgBeforeOpen',
88
- afterOpen: 'lgAfterOpen',
89
- slideItemLoad: 'lgSlideItemLoad',
90
- beforeSlide: 'lgBeforeSlide',
91
- afterSlide: 'lgAfterSlide',
92
- posterClick: 'lgPosterClick',
93
- dragStart: 'lgDragStart',
94
- dragMove: 'lgDragMove',
95
- dragEnd: 'lgDragEnd',
96
- beforeNextSlide: 'lgBeforeNextSlide',
97
- beforePrevSlide: 'lgBeforePrevSlide',
98
- beforeClose: 'lgBeforeClose',
99
- afterClose: 'lgAfterClose',
100
- rotateLeft: 'lgRotateLeft',
101
- rotateRight: 'lgRotateRight',
102
- flipHorizontal: 'lgFlipHorizontal',
103
- flipVertical: 'lgFlipVertical',
104
- autoplay: 'lgAutoplay',
105
- autoplayStart: 'lgAutoplayStart',
106
- autoplayStop: 'lgAutoplayStop',
107
- };
108
-
109
- var lightGalleryCoreSettings = {
110
- mode: 'lg-slide',
111
- easing: 'ease',
112
- speed: 400,
113
- licenseKey: '0000-0000-000-0000',
114
- height: '100%',
115
- width: '100%',
116
- addClass: '',
117
- startClass: 'lg-start-zoom',
118
- backdropDuration: 300,
119
- container: '',
120
- startAnimationDuration: 400,
121
- zoomFromOrigin: true,
122
- hideBarsDelay: 0,
123
- showBarsAfter: 10000,
124
- slideDelay: 0,
125
- supportLegacyBrowser: true,
126
- allowMediaOverlap: false,
127
- videoMaxSize: '1280-720',
128
- loadYouTubePoster: true,
129
- defaultCaptionHeight: 0,
130
- ariaLabelledby: '',
131
- ariaDescribedby: '',
132
- resetScrollPosition: true,
133
- hideScrollbar: false,
134
- closable: true,
135
- swipeToClose: true,
136
- closeOnTap: true,
137
- showCloseIcon: true,
138
- showMaximizeIcon: false,
139
- loop: true,
140
- escKey: true,
141
- keyPress: true,
142
- trapFocus: true,
143
- controls: true,
144
- slideEndAnimation: true,
145
- hideControlOnEnd: false,
146
- mousewheel: false,
147
- getCaptionFromTitleOrAlt: true,
148
- appendSubHtmlTo: '.lg-sub-html',
149
- subHtmlSelectorRelative: false,
150
- preload: 2,
151
- numberOfSlideItemsInDom: 10,
152
- selector: '',
153
- selectWithin: '',
154
- nextHtml: '',
155
- prevHtml: '',
156
- index: 0,
157
- iframeWidth: '100%',
158
- iframeHeight: '100%',
159
- iframeMaxWidth: '100%',
160
- iframeMaxHeight: '100%',
161
- download: true,
162
- counter: true,
163
- appendCounterTo: '.lg-toolbar',
164
- swipeThreshold: 50,
165
- enableSwipe: true,
166
- enableDrag: true,
167
- dynamic: false,
168
- dynamicEl: [],
169
- extraProps: [],
170
- exThumbImage: '',
171
- isMobile: undefined,
172
- mobileSettings: {
173
- controls: false,
174
- showCloseIcon: false,
175
- download: false,
176
- },
177
- plugins: [],
178
- strings: {
179
- closeGallery: 'Close gallery',
180
- toggleMaximize: 'Toggle maximize',
181
- previousSlide: 'Previous slide',
182
- nextSlide: 'Next slide',
183
- download: 'Download',
184
- playVideo: 'Play video',
185
- mediaLoadingFailed: 'Oops... Failed to load content...',
186
- },
187
- };
188
-
189
- function initLgPolyfills() {
190
- (function () {
191
- if (typeof window.CustomEvent === 'function')
192
- return false;
193
- function CustomEvent(event, params) {
194
- params = params || {
195
- bubbles: false,
196
- cancelable: false,
197
- detail: null,
198
- };
199
- var evt = document.createEvent('CustomEvent');
200
- evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
201
- return evt;
202
- }
203
- window.CustomEvent = CustomEvent;
204
- })();
205
- (function () {
206
- if (!Element.prototype.matches) {
207
- Element.prototype.matches =
208
- Element.prototype.msMatchesSelector ||
209
- Element.prototype.webkitMatchesSelector;
210
- }
211
- })();
212
- }
213
- var lgQuery = /** @class */ (function () {
214
- function lgQuery(selector) {
215
- this.cssVenderPrefixes = [
216
- 'TransitionDuration',
217
- 'TransitionTimingFunction',
218
- 'Transform',
219
- 'Transition',
220
- ];
221
- this.selector = this._getSelector(selector);
222
- this.firstElement = this._getFirstEl();
223
- return this;
224
- }
225
- lgQuery.generateUUID = function () {
226
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
227
- var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
228
- return v.toString(16);
229
- });
230
- };
231
- lgQuery.prototype._getSelector = function (selector, context) {
232
- if (context === void 0) { context = document; }
233
- if (typeof selector !== 'string') {
234
- return selector;
235
- }
236
- context = context || document;
237
- var fl = selector.substring(0, 1);
238
- if (fl === '#') {
239
- return context.querySelector(selector);
240
- }
241
- else {
242
- return context.querySelectorAll(selector);
243
- }
244
- };
245
- lgQuery.prototype._each = function (func) {
246
- if (!this.selector) {
247
- return this;
248
- }
249
- if (this.selector.length !== undefined) {
250
- [].forEach.call(this.selector, func);
251
- }
252
- else {
253
- func(this.selector, 0);
254
- }
255
- return this;
256
- };
257
- lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {
258
- // prettier-ignore
259
- var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {
260
- return group1.toUpperCase();
261
- });
262
- if (this.cssVenderPrefixes.indexOf(property) !== -1) {
263
- el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;
264
- el.style['webkit' + property] = value;
265
- el.style['moz' + property] = value;
266
- el.style['ms' + property] = value;
267
- el.style['o' + property] = value;
268
- }
269
- else {
270
- el.style[property] = value;
271
- }
272
- };
273
- lgQuery.prototype._getFirstEl = function () {
274
- if (this.selector && this.selector.length !== undefined) {
275
- return this.selector[0];
276
- }
277
- else {
278
- return this.selector;
279
- }
280
- };
281
- lgQuery.prototype.isEventMatched = function (event, eventName) {
282
- var eventNamespace = eventName.split('.');
283
- return event
284
- .split('.')
285
- .filter(function (e) { return e; })
286
- .every(function (e) {
287
- return eventNamespace.indexOf(e) !== -1;
288
- });
289
- };
290
- lgQuery.prototype.attr = function (attr, value) {
291
- if (value === undefined) {
292
- if (!this.firstElement) {
293
- return '';
294
- }
295
- return this.firstElement.getAttribute(attr);
296
- }
297
- this._each(function (el) {
298
- el.setAttribute(attr, value);
299
- });
300
- return this;
301
- };
302
- lgQuery.prototype.find = function (selector) {
303
- return $LG(this._getSelector(selector, this.selector));
304
- };
305
- lgQuery.prototype.first = function () {
306
- if (this.selector && this.selector.length !== undefined) {
307
- return $LG(this.selector[0]);
308
- }
309
- else {
310
- return $LG(this.selector);
311
- }
312
- };
313
- lgQuery.prototype.eq = function (index) {
314
- return $LG(this.selector[index]);
315
- };
316
- lgQuery.prototype.parent = function () {
317
- return $LG(this.selector.parentElement);
318
- };
319
- lgQuery.prototype.get = function () {
320
- return this._getFirstEl();
321
- };
322
- lgQuery.prototype.removeAttr = function (attributes) {
323
- var attrs = attributes.split(' ');
324
- this._each(function (el) {
325
- attrs.forEach(function (attr) { return el.removeAttribute(attr); });
326
- });
327
- return this;
328
- };
329
- lgQuery.prototype.wrap = function (className) {
330
- if (!this.firstElement) {
331
- return this;
332
- }
333
- var wrapper = document.createElement('div');
334
- wrapper.className = className;
335
- this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);
336
- this.firstElement.parentNode.removeChild(this.firstElement);
337
- wrapper.appendChild(this.firstElement);
338
- return this;
339
- };
340
- lgQuery.prototype.addClass = function (classNames) {
341
- if (classNames === void 0) { classNames = ''; }
342
- this._each(function (el) {
343
- // IE doesn't support multiple arguments
344
- classNames.split(' ').forEach(function (className) {
345
- if (className) {
346
- el.classList.add(className);
347
- }
348
- });
349
- });
350
- return this;
351
- };
352
- lgQuery.prototype.removeClass = function (classNames) {
353
- this._each(function (el) {
354
- // IE doesn't support multiple arguments
355
- classNames.split(' ').forEach(function (className) {
356
- if (className) {
357
- el.classList.remove(className);
358
- }
359
- });
360
- });
361
- return this;
362
- };
363
- lgQuery.prototype.hasClass = function (className) {
364
- if (!this.firstElement) {
365
- return false;
366
- }
367
- return this.firstElement.classList.contains(className);
368
- };
369
- lgQuery.prototype.hasAttribute = function (attribute) {
370
- if (!this.firstElement) {
371
- return false;
372
- }
373
- return this.firstElement.hasAttribute(attribute);
374
- };
375
- lgQuery.prototype.toggleClass = function (className) {
376
- if (!this.firstElement) {
377
- return this;
378
- }
379
- if (this.hasClass(className)) {
380
- this.removeClass(className);
381
- }
382
- else {
383
- this.addClass(className);
384
- }
385
- return this;
386
- };
387
- lgQuery.prototype.css = function (property, value) {
388
- var _this = this;
389
- this._each(function (el) {
390
- _this._setCssVendorPrefix(el, property, value);
391
- });
392
- return this;
393
- };
394
- // Need to pass separate namespaces for separate elements
395
- lgQuery.prototype.on = function (events, listener) {
396
- var _this = this;
397
- if (!this.selector) {
398
- return this;
399
- }
400
- events.split(' ').forEach(function (event) {
401
- if (!Array.isArray(lgQuery.eventListeners[event])) {
402
- lgQuery.eventListeners[event] = [];
403
- }
404
- lgQuery.eventListeners[event].push(listener);
405
- _this.selector.addEventListener(event.split('.')[0], listener);
406
- });
407
- return this;
408
- };
409
- // @todo - test this
410
- lgQuery.prototype.once = function (event, listener) {
411
- var _this = this;
412
- this.on(event, function () {
413
- _this.off(event);
414
- listener(event);
415
- });
416
- return this;
417
- };
418
- lgQuery.prototype.off = function (event) {
419
- var _this = this;
420
- if (!this.selector) {
421
- return this;
422
- }
423
- Object.keys(lgQuery.eventListeners).forEach(function (eventName) {
424
- if (_this.isEventMatched(event, eventName)) {
425
- lgQuery.eventListeners[eventName].forEach(function (listener) {
426
- _this.selector.removeEventListener(eventName.split('.')[0], listener);
427
- });
428
- lgQuery.eventListeners[eventName] = [];
429
- }
430
- });
431
- return this;
432
- };
433
- lgQuery.prototype.trigger = function (event, detail) {
434
- if (!this.firstElement) {
435
- return this;
436
- }
437
- var customEvent = new CustomEvent(event.split('.')[0], {
438
- detail: detail || null,
439
- });
440
- this.firstElement.dispatchEvent(customEvent);
441
- return this;
442
- };
443
- // Does not support IE
444
- lgQuery.prototype.load = function (url) {
445
- var _this = this;
446
- fetch(url)
447
- .then(function (res) { return res.text(); })
448
- .then(function (html) {
449
- _this.selector.innerHTML = html;
450
- });
451
- return this;
452
- };
453
- lgQuery.prototype.html = function (html) {
454
- if (html === undefined) {
455
- if (!this.firstElement) {
456
- return '';
457
- }
458
- return this.firstElement.innerHTML;
459
- }
460
- this._each(function (el) {
461
- el.innerHTML = html;
462
- });
463
- return this;
464
- };
465
- lgQuery.prototype.append = function (html) {
466
- this._each(function (el) {
467
- if (typeof html === 'string') {
468
- el.insertAdjacentHTML('beforeend', html);
469
- }
470
- else {
471
- el.appendChild(html);
472
- }
473
- });
474
- return this;
475
- };
476
- lgQuery.prototype.prepend = function (html) {
477
- this._each(function (el) {
478
- if (typeof html === 'string') {
479
- el.insertAdjacentHTML('afterbegin', html);
480
- }
481
- else if (html instanceof HTMLElement) {
482
- el.insertBefore(html.cloneNode(true), el.firstChild);
483
- }
484
- });
485
- return this;
486
- };
487
- lgQuery.prototype.remove = function () {
488
- this._each(function (el) {
489
- el.parentNode.removeChild(el);
490
- });
491
- return this;
492
- };
493
- lgQuery.prototype.empty = function () {
494
- this._each(function (el) {
495
- el.innerHTML = '';
496
- });
497
- return this;
498
- };
499
- lgQuery.prototype.scrollTop = function (scrollTop) {
500
- if (scrollTop !== undefined) {
501
- document.body.scrollTop = scrollTop;
502
- document.documentElement.scrollTop = scrollTop;
503
- return this;
504
- }
505
- else {
506
- return (window.pageYOffset ||
507
- document.documentElement.scrollTop ||
508
- document.body.scrollTop ||
509
- 0);
510
- }
511
- };
512
- lgQuery.prototype.scrollLeft = function (scrollLeft) {
513
- if (scrollLeft !== undefined) {
514
- document.body.scrollLeft = scrollLeft;
515
- document.documentElement.scrollLeft = scrollLeft;
516
- return this;
517
- }
518
- else {
519
- return (window.pageXOffset ||
520
- document.documentElement.scrollLeft ||
521
- document.body.scrollLeft ||
522
- 0);
523
- }
524
- };
525
- lgQuery.prototype.offset = function () {
526
- if (!this.firstElement) {
527
- return {
528
- left: 0,
529
- top: 0,
530
- };
531
- }
532
- var rect = this.firstElement.getBoundingClientRect();
533
- var bodyMarginLeft = $LG('body').style().marginLeft;
534
- // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value
535
- return {
536
- left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),
537
- top: rect.top + this.scrollTop(),
538
- };
539
- };
540
- lgQuery.prototype.style = function () {
541
- if (!this.firstElement) {
542
- return {};
543
- }
544
- return (this.firstElement.currentStyle ||
545
- window.getComputedStyle(this.firstElement));
546
- };
547
- // Width without padding and border even if box-sizing is used.
548
- lgQuery.prototype.width = function () {
549
- var style = this.style();
550
- return (this.firstElement.clientWidth -
551
- parseFloat(style.paddingLeft) -
552
- parseFloat(style.paddingRight));
553
- };
554
- // Height without padding and border even if box-sizing is used.
555
- lgQuery.prototype.height = function () {
556
- var style = this.style();
557
- return (this.firstElement.clientHeight -
558
- parseFloat(style.paddingTop) -
559
- parseFloat(style.paddingBottom));
560
- };
561
- lgQuery.eventListeners = {};
562
- return lgQuery;
563
- }());
564
- function $LG(selector) {
565
- initLgPolyfills();
566
- return new lgQuery(selector);
567
- }
568
-
569
- var defaultDynamicOptions = [
570
- 'src',
571
- 'sources',
572
- 'subHtml',
573
- 'subHtmlUrl',
574
- 'html',
575
- 'video',
576
- 'poster',
577
- 'slideName',
578
- 'responsive',
579
- 'srcset',
580
- 'sizes',
581
- 'iframe',
582
- 'downloadUrl',
583
- 'download',
584
- 'width',
585
- 'facebookShareUrl',
586
- 'tweetText',
587
- 'iframeTitle',
588
- 'twitterShareUrl',
589
- 'pinterestShareUrl',
590
- 'pinterestText',
591
- 'fbHtml',
592
- 'disqusIdentifier',
593
- 'disqusUrl',
594
- ];
595
- // Convert html data-attribute to camalcase
596
- function convertToData(attr) {
597
- // FInd a way for lgsize
598
- if (attr === 'href') {
599
- return 'src';
600
- }
601
- attr = attr.replace('data-', '');
602
- attr = attr.charAt(0).toLowerCase() + attr.slice(1);
603
- attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
604
- return attr;
605
- }
606
- var utils = {
607
- /**
608
- * Fetches HTML content from a given URL and inserts it into a specified element.
609
- *
610
- * @param url - The URL to fetch the HTML content from.
611
- * @param element - The DOM element (jQuery object) to insert the HTML content into.
612
- * @param insertMethod - The method to insert the HTML ('append' or 'replace').
613
- */
614
- fetchCaptionFromUrl: function (url, element, insertMethod) {
615
- // Fetch content from the URL
616
- fetch(url)
617
- .then(function (response) { return response.text(); })
618
- .then(function (htmlContent) {
619
- if (insertMethod === 'append') {
620
- var contentDiv = "<div class=\"lg-sub-html\">" + htmlContent + "</div>";
621
- element.append(contentDiv);
622
- }
623
- else {
624
- element.html(htmlContent);
625
- }
626
- });
627
- },
628
- /**
629
- * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option
630
- */
631
- getSize: function (el, container, spacing, defaultLgSize) {
632
- if (spacing === void 0) { spacing = 0; }
633
- var LGel = $LG(el);
634
- var lgSize = LGel.attr('data-lg-size') || defaultLgSize;
635
- if (!lgSize) {
636
- return;
637
- }
638
- var isResponsiveSizes = lgSize.split(',');
639
- // if at-least two viewport sizes are available
640
- if (isResponsiveSizes[1]) {
641
- var wWidth = window.innerWidth;
642
- for (var i = 0; i < isResponsiveSizes.length; i++) {
643
- var size_1 = isResponsiveSizes[i];
644
- var responsiveWidth = parseInt(size_1.split('-')[2], 10);
645
- if (responsiveWidth > wWidth) {
646
- lgSize = size_1;
647
- break;
648
- }
649
- // take last item as last option
650
- if (i === isResponsiveSizes.length - 1) {
651
- lgSize = size_1;
652
- }
653
- }
654
- }
655
- var size = lgSize.split('-');
656
- var width = parseInt(size[0], 10);
657
- var height = parseInt(size[1], 10);
658
- var cWidth = container.width();
659
- var cHeight = container.height() - spacing;
660
- var maxWidth = Math.min(cWidth, width);
661
- var maxHeight = Math.min(cHeight, height);
662
- var ratio = Math.min(maxWidth / width, maxHeight / height);
663
- return { width: width * ratio, height: height * ratio };
664
- },
665
- /**
666
- * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option
667
- * @param {jQuery Element}
668
- * @returns {String} Transform CSS string
669
- */
670
- getTransform: function (el, container, top, bottom, imageSize) {
671
- if (!imageSize) {
672
- return;
673
- }
674
- var LGel = $LG(el).find('img').first();
675
- if (!LGel.get()) {
676
- return;
677
- }
678
- var containerRect = container.get().getBoundingClientRect();
679
- var wWidth = containerRect.width;
680
- // using innerWidth to include mobile safari bottom bar
681
- var wHeight = container.height() - (top + bottom);
682
- var elWidth = LGel.width();
683
- var elHeight = LGel.height();
684
- var elStyle = LGel.style();
685
- var x = (wWidth - elWidth) / 2 -
686
- LGel.offset().left +
687
- (parseFloat(elStyle.paddingLeft) || 0) +
688
- (parseFloat(elStyle.borderLeft) || 0) +
689
- $LG(window).scrollLeft() +
690
- containerRect.left;
691
- var y = (wHeight - elHeight) / 2 -
692
- LGel.offset().top +
693
- (parseFloat(elStyle.paddingTop) || 0) +
694
- (parseFloat(elStyle.borderTop) || 0) +
695
- $LG(window).scrollTop() +
696
- top;
697
- var scX = elWidth / imageSize.width;
698
- var scY = elHeight / imageSize.height;
699
- var transform = 'translate3d(' +
700
- (x *= -1) +
701
- 'px, ' +
702
- (y *= -1) +
703
- 'px, 0) scale3d(' +
704
- scX +
705
- ', ' +
706
- scY +
707
- ', 1)';
708
- return transform;
709
- },
710
- getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {
711
- var title = iframeTitle ? 'title="' + iframeTitle + '"' : '';
712
- return "<div class=\"lg-media-cont lg-has-iframe\" style=\"width:" + iframeWidth + "; max-width:" + iframeMaxWidth + "; height: " + iframeHeight + "; max-height:" + iframeMaxHeight + "\">\n <iframe class=\"lg-object\" frameborder=\"0\" " + title + " src=\"" + src + "\" allowfullscreen=\"true\"></iframe>\n </div>";
713
- },
714
- getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {
715
- var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : '';
716
- var sizesAttr = sizes ? "sizes=\"" + sizes + "\"" : '';
717
- var imgMarkup = "<img " + altAttr + " " + srcsetAttr + " " + sizesAttr + " class=\"lg-object lg-image\" data-index=\"" + index + "\" src=\"" + src + "\" />";
718
- var sourceTag = '';
719
- if (sources) {
720
- var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;
721
- sourceTag = sourceObj.map(function (source) {
722
- var attrs = '';
723
- Object.keys(source).forEach(function (key) {
724
- // Do not remove the first space as it is required to separate the attributes
725
- attrs += " " + key + "=\"" + source[key] + "\"";
726
- });
727
- return "<source " + attrs + "></source>";
728
- });
729
- }
730
- return "" + sourceTag + imgMarkup;
731
- },
732
- // Get src from responsive src
733
- getResponsiveSrc: function (srcItms) {
734
- var rsWidth = [];
735
- var rsSrc = [];
736
- var src = '';
737
- for (var i = 0; i < srcItms.length; i++) {
738
- var _src = srcItms[i].split(' ');
739
- // Manage empty space
740
- if (_src[0] === '') {
741
- _src.splice(0, 1);
742
- }
743
- rsSrc.push(_src[0]);
744
- rsWidth.push(_src[1]);
745
- }
746
- var wWidth = window.innerWidth;
747
- for (var j = 0; j < rsWidth.length; j++) {
748
- if (parseInt(rsWidth[j], 10) > wWidth) {
749
- src = rsSrc[j];
750
- break;
751
- }
752
- }
753
- return src;
754
- },
755
- isImageLoaded: function (img) {
756
- if (!img)
757
- return false;
758
- // During the onload event, IE correctly identifies any images that
759
- // weren’t downloaded as not complete. Others should too. Gecko-based
760
- // browsers act like NS4 in that they report this incorrectly.
761
- if (!img.complete) {
762
- return false;
763
- }
764
- // However, they do have two very useful properties: naturalWidth and
765
- // naturalHeight. These give the true size of the image. If it failed
766
- // to load, either of these should be zero.
767
- if (img.naturalWidth === 0) {
768
- return false;
769
- }
770
- // No other way of checking: assume it’s ok.
771
- return true;
772
- },
773
- getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {
774
- var videoClass = '';
775
- if (_isVideo && _isVideo.youtube) {
776
- videoClass = 'lg-has-youtube';
777
- }
778
- else if (_isVideo && _isVideo.vimeo) {
779
- videoClass = 'lg-has-vimeo';
780
- }
781
- else {
782
- videoClass = 'lg-has-html5';
783
- }
784
- var _dummy = dummyImg;
785
- if (typeof dummyImg !== 'string') {
786
- _dummy = dummyImg.outerHTML;
787
- }
788
- return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n <div class=\"lg-video-play-button\">\n <svg\n viewBox=\"0 0 20 20\"\n preserveAspectRatio=\"xMidYMid\"\n focusable=\"false\"\n aria-labelledby=\"" + playVideoString + "\"\n role=\"img\"\n class=\"lg-video-play-icon\"\n >\n <title>" + playVideoString + "</title>\n <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n </svg>\n <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n </svg>\n </div>\n " + _dummy + "\n <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n </div>";
789
- },
790
- getFocusableElements: function (container) {
791
- var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
792
- var visibleElements = [].filter.call(elements, function (element) {
793
- var style = window.getComputedStyle(element);
794
- return style.display !== 'none' && style.visibility !== 'hidden';
795
- });
796
- return visibleElements;
797
- },
798
- /**
799
- * @desc Create dynamic elements array from gallery items when dynamic option is false
800
- * It helps to avoid frequent DOM interaction
801
- * and avoid multiple checks for dynamic elments
802
- *
803
- * @returns {Array} dynamicEl
804
- */
805
- getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {
806
- var dynamicElements = [];
807
- var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);
808
- [].forEach.call(items, function (item) {
809
- var dynamicEl = {};
810
- for (var i = 0; i < item.attributes.length; i++) {
811
- var attr = item.attributes[i];
812
- if (attr.specified) {
813
- var dynamicAttr = convertToData(attr.name);
814
- var label = '';
815
- if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {
816
- label = dynamicAttr;
817
- }
818
- if (label) {
819
- dynamicEl[label] = attr.value;
820
- }
821
- }
822
- }
823
- var currentItem = $LG(item);
824
- var alt = currentItem.find('img').first().attr('alt');
825
- var title = currentItem.attr('title');
826
- var thumb = exThumbImage
827
- ? currentItem.attr(exThumbImage)
828
- : currentItem.find('img').first().attr('src');
829
- dynamicEl.thumb = thumb;
830
- if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {
831
- dynamicEl.subHtml = title || alt || '';
832
- }
833
- dynamicEl.alt = alt || title || '';
834
- dynamicElements.push(dynamicEl);
835
- });
836
- return dynamicElements;
837
- },
838
- isMobile: function () {
839
- return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
840
- },
841
- /**
842
- * @desc Check the given src is video
843
- * @param {String} src
844
- * @return {Object} video type
845
- * Ex:{ youtube : ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] }
846
- *
847
- * @todo - this information can be moved to dynamicEl to avoid frequent calls
848
- */
849
- isVideo: function (src, isHTML5VIdeo, index) {
850
- if (!src) {
851
- if (isHTML5VIdeo) {
852
- return {
853
- html5: true,
854
- };
855
- }
856
- else {
857
- console.error('lightGallery :- data-src is not provided on slide item ' +
858
- (index + 1) +
859
- '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');
860
- return;
861
- }
862
- }
863
- var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i);
864
- var vimeo = src.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i);
865
- var wistia = src.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/);
866
- if (youtube) {
867
- return {
868
- youtube: youtube,
869
- };
870
- }
871
- else if (vimeo) {
872
- return {
873
- vimeo: vimeo,
874
- };
875
- }
876
- else if (wistia) {
877
- return {
878
- wistia: wistia,
879
- };
880
- }
881
- },
882
- };
883
-
884
- // @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio
885
- // @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html
886
- // Unique id for each gallery
887
- var lgId = 0;
888
- var LightGallery = /** @class */ (function () {
889
- function LightGallery(element, options) {
890
- this.lgOpened = false;
891
- this.index = 0;
892
- // lightGallery modules
893
- this.plugins = [];
894
- // false when lightGallery load first slide content;
895
- this.lGalleryOn = false;
896
- // True when a slide animation is in progress
897
- this.lgBusy = false;
898
- this.currentItemsInDom = [];
899
- // Scroll top value before lightGallery is opened
900
- this.prevScrollTop = 0;
901
- this.bodyPaddingRight = 0;
902
- this.isDummyImageRemoved = false;
903
- this.dragOrSwipeEnabled = false;
904
- this.mediaContainerPosition = {
905
- top: 0,
906
- bottom: 0,
907
- };
908
- if (!element) {
909
- return this;
910
- }
911
- lgId++;
912
- this.lgId = lgId;
913
- this.el = element;
914
- this.LGel = $LG(element);
915
- this.generateSettings(options);
916
- this.buildModules();
917
- // When using dynamic mode, ensure dynamicEl is an array
918
- if (this.settings.dynamic &&
919
- this.settings.dynamicEl !== undefined &&
920
- !Array.isArray(this.settings.dynamicEl)) {
921
- throw 'When using dynamic mode, you must also define dynamicEl as an Array.';
922
- }
923
- this.galleryItems = this.getItems();
924
- this.normalizeSettings();
925
- // Gallery items
926
- this.init();
927
- this.validateLicense();
928
- return this;
929
- }
930
- LightGallery.prototype.generateSettings = function (options) {
931
- // lightGallery settings
932
- this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);
933
- if (this.settings.isMobile &&
934
- typeof this.settings.isMobile === 'function'
935
- ? this.settings.isMobile()
936
- : utils.isMobile()) {
937
- var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);
938
- this.settings = __assign(__assign({}, this.settings), mobileSettings);
939
- }
940
- };
941
- LightGallery.prototype.normalizeSettings = function () {
942
- if (this.settings.slideEndAnimation) {
943
- this.settings.hideControlOnEnd = false;
944
- }
945
- if (!this.settings.closable) {
946
- this.settings.swipeToClose = false;
947
- }
948
- // And reset it on close to get the correct value next time
949
- this.zoomFromOrigin = this.settings.zoomFromOrigin;
950
- // At the moment, Zoom from image doesn't support dynamic options
951
- // @todo add zoomFromOrigin support for dynamic images
952
- if (this.settings.dynamic) {
953
- this.zoomFromOrigin = false;
954
- }
955
- if (this.settings.container) {
956
- var container = this.settings.container;
957
- if (typeof container === 'function') {
958
- this.settings.container = container();
959
- }
960
- else if (typeof container === 'string') {
961
- var el = document.querySelector(container);
962
- this.settings.container = el !== null && el !== void 0 ? el : document.body;
963
- }
964
- }
965
- else {
966
- this.settings.container = document.body;
967
- }
968
- // settings.preload should not be grater than $item.length
969
- this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);
970
- };
971
- LightGallery.prototype.init = function () {
972
- var _this = this;
973
- this.addSlideVideoInfo(this.galleryItems);
974
- this.buildStructure();
975
- this.LGel.trigger(lGEvents.init, {
976
- instance: this,
977
- });
978
- if (this.settings.keyPress) {
979
- this.keyPress();
980
- }
981
- setTimeout(function () {
982
- _this.enableDrag();
983
- _this.enableSwipe();
984
- _this.triggerPosterClick();
985
- }, 50);
986
- this.arrow();
987
- if (this.settings.mousewheel) {
988
- this.mousewheel();
989
- }
990
- if (!this.settings.dynamic) {
991
- this.openGalleryOnItemClick();
992
- }
993
- };
994
- LightGallery.prototype.openGalleryOnItemClick = function () {
995
- var _this = this;
996
- var _loop_1 = function (index) {
997
- var element = this_1.items[index];
998
- var $element = $LG(element);
999
- // Using different namespace for click because click event should not unbind if selector is same object('this')
1000
- // @todo manage all event listners - should have namespace that represent element
1001
- var uuid = lgQuery.generateUUID();
1002
- $element
1003
- .attr('data-lg-id', uuid)
1004
- .on("click.lgcustom-item-" + uuid, function (e) {
1005
- e.preventDefault();
1006
- var currentItemIndex = _this.settings.index || index;
1007
- _this.openGallery(currentItemIndex, element);
1008
- });
1009
- };
1010
- var this_1 = this;
1011
- // Using for loop instead of using bubbling as the items can be any html element.
1012
- for (var index = 0; index < this.items.length; index++) {
1013
- _loop_1(index);
1014
- }
1015
- };
1016
- /**
1017
- * Module constructor
1018
- * Modules are build incrementally.
1019
- * Gallery should be opened only once all the modules are initialized.
1020
- * use moduleBuildTimeout to make sure this
1021
- */
1022
- LightGallery.prototype.buildModules = function () {
1023
- var _this = this;
1024
- this.settings.plugins.forEach(function (plugin) {
1025
- _this.plugins.push(new plugin(_this, $LG));
1026
- });
1027
- };
1028
- LightGallery.prototype.validateLicense = function () {
1029
- if (!this.settings.licenseKey) {
1030
- console.error('Please provide a valid license key');
1031
- }
1032
- else if (this.settings.licenseKey === '0000-0000-000-0000') {
1033
- console.warn("lightGallery: " + this.settings.licenseKey + " license key is not valid for production use");
1034
- }
1035
- };
1036
- LightGallery.prototype.getSlideItem = function (index) {
1037
- return $LG(this.getSlideItemId(index));
1038
- };
1039
- LightGallery.prototype.getSlideItemId = function (index) {
1040
- return "#lg-item-" + this.lgId + "-" + index;
1041
- };
1042
- LightGallery.prototype.getIdName = function (id) {
1043
- return id + "-" + this.lgId;
1044
- };
1045
- LightGallery.prototype.getElementById = function (id) {
1046
- return $LG("#" + this.getIdName(id));
1047
- };
1048
- LightGallery.prototype.manageSingleSlideClassName = function () {
1049
- if (this.galleryItems.length < 2) {
1050
- this.outer.addClass('lg-single-item');
1051
- }
1052
- else {
1053
- this.outer.removeClass('lg-single-item');
1054
- }
1055
- };
1056
- LightGallery.prototype.buildStructure = function () {
1057
- var _this = this;
1058
- var container = this.$container && this.$container.get();
1059
- if (container) {
1060
- return;
1061
- }
1062
- var controls = '';
1063
- var subHtmlCont = '';
1064
- // Create controls
1065
- if (this.settings.controls) {
1066
- controls = "<button type=\"button\" id=\"" + this.getIdName('lg-prev') + "\" aria-label=\"" + this.settings.strings['previousSlide'] + "\" class=\"lg-prev lg-icon\"> " + this.settings.prevHtml + " </button>\n <button type=\"button\" id=\"" + this.getIdName('lg-next') + "\" aria-label=\"" + this.settings.strings['nextSlide'] + "\" class=\"lg-next lg-icon\"> " + this.settings.nextHtml + " </button>";
1067
- }
1068
- if (this.settings.appendSubHtmlTo !== '.lg-item') {
1069
- subHtmlCont =
1070
- '<div class="lg-sub-html" role="status" aria-live="polite"></div>';
1071
- }
1072
- var addClasses = '';
1073
- if (this.settings.allowMediaOverlap) {
1074
- // Do not remove space before last single quote
1075
- addClasses += 'lg-media-overlap ';
1076
- }
1077
- var ariaLabelledby = this.settings.ariaLabelledby
1078
- ? 'aria-labelledby="' + this.settings.ariaLabelledby + '"'
1079
- : '';
1080
- var ariaDescribedby = this.settings.ariaDescribedby
1081
- ? 'aria-describedby="' + this.settings.ariaDescribedby + '"'
1082
- : '';
1083
- var containerClassName = "lg-container " + this.settings.addClass + " " + (document.body !== this.settings.container ? 'lg-inline' : '');
1084
- var closeIcon = this.settings.closable && this.settings.showCloseIcon
1085
- ? "<button type=\"button\" aria-label=\"" + this.settings.strings['closeGallery'] + "\" id=\"" + this.getIdName('lg-close') + "\" class=\"lg-close lg-icon\"></button>"
1086
- : '';
1087
- var maximizeIcon = this.settings.showMaximizeIcon
1088
- ? "<button type=\"button\" aria-label=\"" + this.settings.strings['toggleMaximize'] + "\" id=\"" + this.getIdName('lg-maximize') + "\" class=\"lg-maximize lg-icon\"></button>"
1089
- : '';
1090
- var template = "\n <div class=\"" + containerClassName + "\" id=\"" + this.getIdName('lg-container') + "\" tabindex=\"-1\" aria-modal=\"true\" " + ariaLabelledby + " " + ariaDescribedby + " role=\"dialog\"\n >\n <div id=\"" + this.getIdName('lg-backdrop') + "\" class=\"lg-backdrop\"></div>\n\n <div id=\"" + this.getIdName('lg-outer') + "\" class=\"lg-outer lg-use-css3 lg-css3 lg-hide-items " + addClasses + " \">\n\n <div id=\"" + this.getIdName('lg-content') + "\" class=\"lg-content\">\n <div id=\"" + this.getIdName('lg-inner') + "\" class=\"lg-inner\">\n </div>\n " + controls + "\n </div>\n <div id=\"" + this.getIdName('lg-toolbar') + "\" class=\"lg-toolbar lg-group\">\n " + maximizeIcon + "\n " + closeIcon + "\n </div>\n " + (this.settings.appendSubHtmlTo === '.lg-outer'
1091
- ? subHtmlCont
1092
- : '') + "\n <div id=\"" + this.getIdName('lg-components') + "\" class=\"lg-components\">\n " + (this.settings.appendSubHtmlTo === '.lg-sub-html'
1093
- ? subHtmlCont
1094
- : '') + "\n </div>\n </div>\n </div>\n ";
1095
- $LG(this.settings.container).append(template);
1096
- if (document.body !== this.settings.container) {
1097
- $LG(this.settings.container).css('position', 'relative');
1098
- }
1099
- this.outer = this.getElementById('lg-outer');
1100
- this.$lgComponents = this.getElementById('lg-components');
1101
- this.$backdrop = this.getElementById('lg-backdrop');
1102
- this.$container = this.getElementById('lg-container');
1103
- this.$inner = this.getElementById('lg-inner');
1104
- this.$content = this.getElementById('lg-content');
1105
- this.$toolbar = this.getElementById('lg-toolbar');
1106
- this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');
1107
- var outerClassNames = this.settings.mode + " ";
1108
- this.manageSingleSlideClassName();
1109
- if (this.settings.enableDrag) {
1110
- outerClassNames += 'lg-grab ';
1111
- }
1112
- this.outer.addClass(outerClassNames);
1113
- this.$inner.css('transition-timing-function', this.settings.easing);
1114
- this.$inner.css('transition-duration', this.settings.speed + 'ms');
1115
- if (this.settings.download) {
1116
- this.$toolbar.append("<a id=\"" + this.getIdName('lg-download') + "\" target=\"_blank\" rel=\"noopener\" aria-label=\"" + this.settings.strings['download'] + "\" download class=\"lg-download lg-icon\"></a>");
1117
- }
1118
- this.counter();
1119
- $LG(window).on("resize.lg.global" + this.lgId + " orientationchange.lg.global" + this.lgId, function () {
1120
- _this.refreshOnResize();
1121
- });
1122
- this.hideBars();
1123
- this.manageCloseGallery();
1124
- this.toggleMaximize();
1125
- this.initModules();
1126
- };
1127
- LightGallery.prototype.refreshOnResize = function () {
1128
- if (this.lgOpened) {
1129
- var currentGalleryItem = this.galleryItems[this.index];
1130
- var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;
1131
- this.mediaContainerPosition = this.getMediaContainerPosition();
1132
- var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;
1133
- this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);
1134
- if (__slideVideoInfo) {
1135
- this.resizeVideoSlide(this.index, this.currentImageSize);
1136
- }
1137
- if (this.zoomFromOrigin && !this.isDummyImageRemoved) {
1138
- var imgStyle = this.getDummyImgStyles(this.currentImageSize);
1139
- this.outer
1140
- .find('.lg-current .lg-dummy-img')
1141
- .first()
1142
- .attr('style', imgStyle);
1143
- }
1144
- this.LGel.trigger(lGEvents.containerResize);
1145
- }
1146
- };
1147
- LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {
1148
- var lgVideoStyle = this.getVideoContStyle(imageSize);
1149
- var currentSlide = this.getSlideItem(index);
1150
- currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);
1151
- };
1152
- /**
1153
- * Update slides dynamically.
1154
- * Add, edit or delete slides dynamically when lightGallery is opened.
1155
- * Modify the current gallery items and pass it via updateSlides method
1156
- * @note
1157
- * - Do not mutate existing lightGallery items directly.
1158
- * - Always pass new list of gallery items
1159
- * - You need to take care of thumbnails outside the gallery if any
1160
- * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.
1161
- * @param items Gallery items
1162
- * @param index After the update operation, which slide gallery should navigate to
1163
- * @category lGPublicMethods
1164
- * @example
1165
- * const plugin = lightGallery();
1166
- *
1167
- * // Adding slides dynamically
1168
- * let galleryItems = [
1169
- * // Access existing lightGallery items
1170
- * // galleryItems are automatically generated internally from the gallery HTML markup
1171
- * // or directly from galleryItems when dynamic gallery is used
1172
- * ...plugin.galleryItems,
1173
- * ...[
1174
- * {
1175
- * src: 'img/img-1.png',
1176
- * thumb: 'img/thumb1.png',
1177
- * },
1178
- * ],
1179
- * ];
1180
- * plugin.updateSlides(
1181
- * galleryItems,
1182
- * plugin.index,
1183
- * );
1184
- *
1185
- *
1186
- * // Remove slides dynamically
1187
- * galleryItems = JSON.parse(
1188
- * JSON.stringify(updateSlideInstance.galleryItems),
1189
- * );
1190
- * galleryItems.shift();
1191
- * updateSlideInstance.updateSlides(galleryItems, 1);
1192
- * @see <a href="/demos/update-slides/">Demo</a>
1193
- */
1194
- LightGallery.prototype.updateSlides = function (items, index) {
1195
- if (this.index > items.length - 1) {
1196
- this.index = items.length - 1;
1197
- }
1198
- if (items.length === 1) {
1199
- this.index = 0;
1200
- }
1201
- if (!items.length) {
1202
- this.closeGallery();
1203
- return;
1204
- }
1205
- var currentSrc = this.galleryItems[index].src;
1206
- this.galleryItems = items;
1207
- this.updateControls();
1208
- this.$inner.empty();
1209
- this.currentItemsInDom = [];
1210
- var _index = 0;
1211
- // Find the current index based on source value of the slide
1212
- this.galleryItems.some(function (galleryItem, itemIndex) {
1213
- if (galleryItem.src === currentSrc) {
1214
- _index = itemIndex;
1215
- return true;
1216
- }
1217
- return false;
1218
- });
1219
- this.currentItemsInDom = this.organizeSlideItems(_index, -1);
1220
- this.loadContent(_index, true);
1221
- this.getSlideItem(_index).addClass('lg-current');
1222
- this.index = _index;
1223
- this.updateCurrentCounter(_index);
1224
- this.LGel.trigger(lGEvents.updateSlides);
1225
- };
1226
- // Get gallery items based on multiple conditions
1227
- LightGallery.prototype.getItems = function () {
1228
- // Gallery items
1229
- this.items = [];
1230
- if (!this.settings.dynamic) {
1231
- if (this.settings.selector === 'this') {
1232
- this.items.push(this.el);
1233
- }
1234
- else if (this.settings.selector) {
1235
- if (typeof this.settings.selector === 'string') {
1236
- if (this.settings.selectWithin) {
1237
- var selectWithin = $LG(this.settings.selectWithin);
1238
- this.items = selectWithin
1239
- .find(this.settings.selector)
1240
- .get();
1241
- }
1242
- else {
1243
- this.items = this.el.querySelectorAll(this.settings.selector);
1244
- }
1245
- }
1246
- else {
1247
- this.items = this.settings.selector;
1248
- }
1249
- }
1250
- else {
1251
- this.items = this.el.children;
1252
- }
1253
- return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);
1254
- }
1255
- else {
1256
- return this.settings.dynamicEl || [];
1257
- }
1258
- };
1259
- LightGallery.prototype.shouldHideScrollbar = function () {
1260
- return (this.settings.hideScrollbar &&
1261
- document.body === this.settings.container);
1262
- };
1263
- LightGallery.prototype.hideScrollbar = function () {
1264
- if (!this.shouldHideScrollbar()) {
1265
- return;
1266
- }
1267
- this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);
1268
- var bodyRect = document.documentElement.getBoundingClientRect();
1269
- var scrollbarWidth = window.innerWidth - bodyRect.width;
1270
- $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');
1271
- $LG(document.body).addClass('lg-overlay-open');
1272
- };
1273
- LightGallery.prototype.resetScrollBar = function () {
1274
- if (!this.shouldHideScrollbar()) {
1275
- return;
1276
- }
1277
- $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');
1278
- $LG(document.body).removeClass('lg-overlay-open');
1279
- };
1280
- /**
1281
- * Open lightGallery.
1282
- * Open gallery with specific slide by passing index of the slide as parameter.
1283
- * @category lGPublicMethods
1284
- * @param {Number} index - index of the slide
1285
- * @param {HTMLElement} element - Which image lightGallery should zoom from
1286
- *
1287
- * @example
1288
- * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');
1289
- * const dynamicGallery = lightGallery($dynamicGallery, {
1290
- * dynamic: true,
1291
- * dynamicEl: [
1292
- * {
1293
- * src: 'img/1.jpg',
1294
- * thumb: 'img/thumb-1.jpg',
1295
- * subHtml: '<h4>Image 1 title</h4><p>Image 1 descriptions.</p>',
1296
- * },
1297
- * ...
1298
- * ],
1299
- * });
1300
- * $dynamicGallery.addEventListener('click', function () {
1301
- * // Starts with third item.(Optional).
1302
- * // This is useful if you want use dynamic mode with
1303
- * // custom thumbnails (thumbnails outside gallery),
1304
- * dynamicGallery.openGallery(2);
1305
- * });
1306
- *
1307
- */
1308
- LightGallery.prototype.openGallery = function (index, element) {
1309
- var _this = this;
1310
- if (index === void 0) { index = this.settings.index; }
1311
- // prevent accidental double execution
1312
- if (this.lgOpened)
1313
- return;
1314
- this.lgOpened = true;
1315
- this.outer.removeClass('lg-hide-items');
1316
- this.hideScrollbar();
1317
- // Add display block, but still has opacity 0
1318
- this.$container.addClass('lg-show');
1319
- var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);
1320
- this.currentItemsInDom = itemsToBeInsertedToDom;
1321
- var items = '';
1322
- itemsToBeInsertedToDom.forEach(function (item) {
1323
- items = items + ("<div id=\"" + item + "\" class=\"lg-item\"></div>");
1324
- });
1325
- this.$inner.append(items);
1326
- this.addHtml(index);
1327
- var transform = '';
1328
- this.mediaContainerPosition = this.getMediaContainerPosition();
1329
- var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;
1330
- if (!this.settings.allowMediaOverlap) {
1331
- this.setMediaContainerPosition(top, bottom);
1332
- }
1333
- var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;
1334
- if (this.zoomFromOrigin && element) {
1335
- this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);
1336
- transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);
1337
- }
1338
- if (!this.zoomFromOrigin || !transform) {
1339
- this.outer.addClass(this.settings.startClass);
1340
- this.getSlideItem(index).removeClass('lg-complete');
1341
- }
1342
- var timeout = this.settings.zoomFromOrigin
1343
- ? 100
1344
- : this.settings.backdropDuration;
1345
- setTimeout(function () {
1346
- _this.outer.addClass('lg-components-open');
1347
- }, timeout);
1348
- this.index = index;
1349
- this.LGel.trigger(lGEvents.beforeOpen);
1350
- // add class lg-current to remove initial transition
1351
- this.getSlideItem(index).addClass('lg-current');
1352
- this.lGalleryOn = false;
1353
- // Store the current scroll top value to scroll back after closing the gallery..
1354
- this.prevScrollTop = $LG(window).scrollTop();
1355
- setTimeout(function () {
1356
- // Need to check both zoomFromOrigin and transform values as we need to set set the
1357
- // default opening animation if user missed to add the lg-size attribute
1358
- if (_this.zoomFromOrigin && transform) {
1359
- var currentSlide_1 = _this.getSlideItem(index);
1360
- currentSlide_1.css('transform', transform);
1361
- setTimeout(function () {
1362
- currentSlide_1
1363
- .addClass('lg-start-progress lg-start-end-progress')
1364
- .css('transition-duration', _this.settings.startAnimationDuration + 'ms');
1365
- _this.outer.addClass('lg-zoom-from-image');
1366
- });
1367
- setTimeout(function () {
1368
- currentSlide_1.css('transform', 'translate3d(0, 0, 0)');
1369
- }, 100);
1370
- }
1371
- setTimeout(function () {
1372
- _this.$backdrop.addClass('in');
1373
- _this.$container.addClass('lg-show-in');
1374
- }, 10);
1375
- setTimeout(function () {
1376
- if (_this.settings.trapFocus &&
1377
- document.body === _this.settings.container) {
1378
- _this.trapFocus();
1379
- }
1380
- }, _this.settings.backdropDuration + 50);
1381
- // lg-visible class resets gallery opacity to 1
1382
- if (!_this.zoomFromOrigin || !transform) {
1383
- setTimeout(function () {
1384
- _this.outer.addClass('lg-visible');
1385
- }, _this.settings.backdropDuration);
1386
- }
1387
- // initiate slide function
1388
- _this.slide(index, false, false, false);
1389
- _this.LGel.trigger(lGEvents.afterOpen);
1390
- });
1391
- if (document.body === this.settings.container) {
1392
- $LG('html').addClass('lg-on');
1393
- }
1394
- };
1395
- /**
1396
- * Note - Changing the position of the media on every slide transition creates a flickering effect.
1397
- * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.
1398
- * if you have dynamic captions for each media,
1399
- * you can provide an appropriate height for the captions via allowMediaOverlap option
1400
- */
1401
- LightGallery.prototype.getMediaContainerPosition = function () {
1402
- if (this.settings.allowMediaOverlap) {
1403
- return {
1404
- top: 0,
1405
- bottom: 0,
1406
- };
1407
- }
1408
- var top = this.$toolbar.get().clientHeight || 0;
1409
- var subHtml = this.outer.find('.lg-components .lg-sub-html').get();
1410
- var captionHeight = this.settings.defaultCaptionHeight ||
1411
- (subHtml && subHtml.clientHeight) ||
1412
- 0;
1413
- var thumbContainer = this.outer.find('.lg-thumb-outer').get();
1414
- var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;
1415
- var bottom = thumbHeight + captionHeight;
1416
- return {
1417
- top: top,
1418
- bottom: bottom,
1419
- };
1420
- };
1421
- LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {
1422
- if (top === void 0) { top = 0; }
1423
- if (bottom === void 0) { bottom = 0; }
1424
- this.$content.css('top', top + 'px').css('bottom', bottom + 'px');
1425
- };
1426
- LightGallery.prototype.hideBars = function () {
1427
- var _this = this;
1428
- // Hide controllers if mouse doesn't move for some period
1429
- setTimeout(function () {
1430
- _this.outer.removeClass('lg-hide-items');
1431
- if (_this.settings.hideBarsDelay > 0) {
1432
- _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {
1433
- _this.outer.removeClass('lg-hide-items');
1434
- clearTimeout(_this.hideBarTimeout);
1435
- // Timeout will be cleared on each slide movement also
1436
- _this.hideBarTimeout = setTimeout(function () {
1437
- _this.outer.addClass('lg-hide-items');
1438
- }, _this.settings.hideBarsDelay);
1439
- });
1440
- _this.outer.trigger('mousemove.lg');
1441
- }
1442
- }, this.settings.showBarsAfter);
1443
- };
1444
- LightGallery.prototype.initPictureFill = function ($img) {
1445
- if (this.settings.supportLegacyBrowser) {
1446
- try {
1447
- picturefill({
1448
- elements: [$img.get()],
1449
- });
1450
- }
1451
- catch (e) {
1452
- console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');
1453
- }
1454
- }
1455
- };
1456
- /**
1457
- * @desc Create image counter
1458
- * Ex: 1/10
1459
- */
1460
- LightGallery.prototype.counter = function () {
1461
- if (this.settings.counter) {
1462
- var counterHtml = "<div class=\"lg-counter\" role=\"status\" aria-live=\"polite\">\n <span id=\"" + this.getIdName('lg-counter-current') + "\" class=\"lg-counter-current\">" + (this.index + 1) + " </span> /\n <span id=\"" + this.getIdName('lg-counter-all') + "\" class=\"lg-counter-all\">" + this.galleryItems.length + " </span></div>";
1463
- this.outer.find(this.settings.appendCounterTo).append(counterHtml);
1464
- }
1465
- };
1466
- /**
1467
- * @desc add sub-html into the slide
1468
- * @param {Number} index - index of the slide
1469
- */
1470
- LightGallery.prototype.addHtml = function (index) {
1471
- var subHtml;
1472
- var subHtmlUrl;
1473
- if (this.galleryItems[index].subHtmlUrl) {
1474
- subHtmlUrl = this.galleryItems[index].subHtmlUrl;
1475
- }
1476
- else {
1477
- subHtml = this.galleryItems[index].subHtml;
1478
- }
1479
- if (!subHtmlUrl) {
1480
- if (subHtml) {
1481
- // get first letter of sub-html
1482
- // if first letter starts with . or # get the html form the jQuery object
1483
- var fL = subHtml.substring(0, 1);
1484
- if (fL === '.' || fL === '#') {
1485
- try {
1486
- if (this.settings.subHtmlSelectorRelative &&
1487
- !this.settings.dynamic) {
1488
- subHtml = $LG(this.items)
1489
- .eq(index)
1490
- .find(subHtml)
1491
- .first()
1492
- .html();
1493
- }
1494
- else {
1495
- subHtml = $LG(subHtml).first().html();
1496
- }
1497
- }
1498
- catch (error) {
1499
- console.warn("Error processing subHtml selector \"" + subHtml + "\"");
1500
- subHtml = '';
1501
- }
1502
- }
1503
- }
1504
- else {
1505
- subHtml = '';
1506
- }
1507
- }
1508
- if (this.settings.appendSubHtmlTo !== '.lg-item') {
1509
- if (subHtmlUrl) {
1510
- utils.fetchCaptionFromUrl(subHtmlUrl, this.outer.find('.lg-sub-html'), 'replace');
1511
- }
1512
- else {
1513
- this.outer.find('.lg-sub-html').html(subHtml);
1514
- }
1515
- }
1516
- else {
1517
- var currentSlide = $LG(this.getSlideItemId(index));
1518
- if (subHtmlUrl) {
1519
- utils.fetchCaptionFromUrl(subHtmlUrl, currentSlide, 'append');
1520
- }
1521
- else {
1522
- currentSlide.append("<div class=\"lg-sub-html\">" + subHtml + "</div>");
1523
- }
1524
- }
1525
- // Add lg-empty-html class if title doesn't exist
1526
- if (typeof subHtml !== 'undefined' && subHtml !== null) {
1527
- if (subHtml === '') {
1528
- this.outer
1529
- .find(this.settings.appendSubHtmlTo)
1530
- .addClass('lg-empty-html');
1531
- }
1532
- else {
1533
- this.outer
1534
- .find(this.settings.appendSubHtmlTo)
1535
- .removeClass('lg-empty-html');
1536
- }
1537
- }
1538
- this.LGel.trigger(lGEvents.afterAppendSubHtml, {
1539
- index: index,
1540
- });
1541
- };
1542
- /**
1543
- * @desc Preload slides
1544
- * @param {Number} index - index of the slide
1545
- * @todo preload not working for the first slide, Also, should work for the first and last slide as well
1546
- */
1547
- LightGallery.prototype.preload = function (index) {
1548
- for (var i = 1; i <= this.settings.preload; i++) {
1549
- if (i >= this.galleryItems.length - index) {
1550
- break;
1551
- }
1552
- this.loadContent(index + i, false);
1553
- }
1554
- for (var j = 1; j <= this.settings.preload; j++) {
1555
- if (index - j < 0) {
1556
- break;
1557
- }
1558
- this.loadContent(index - j, false);
1559
- }
1560
- };
1561
- LightGallery.prototype.getDummyImgStyles = function (imageSize) {
1562
- if (!imageSize)
1563
- return '';
1564
- return "width:" + imageSize.width + "px;\n margin-left: -" + imageSize.width / 2 + "px;\n margin-top: -" + imageSize.height / 2 + "px;\n height:" + imageSize.height + "px";
1565
- };
1566
- LightGallery.prototype.getVideoContStyle = function (imageSize) {
1567
- if (!imageSize)
1568
- return '';
1569
- return "width:" + imageSize.width + "px;\n height:" + imageSize.height + "px";
1570
- };
1571
- LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {
1572
- var $currentItem;
1573
- if (!this.settings.dynamic) {
1574
- $currentItem = $LG(this.items).eq(index);
1575
- }
1576
- if ($currentItem) {
1577
- var _dummyImgSrc = void 0;
1578
- if (!this.settings.exThumbImage) {
1579
- _dummyImgSrc = $currentItem.find('img').first().attr('src');
1580
- }
1581
- else {
1582
- _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);
1583
- }
1584
- if (!_dummyImgSrc)
1585
- return '';
1586
- var imgStyle = this.getDummyImgStyles(this.currentImageSize);
1587
- var dummyImgContentImg = document.createElement('img');
1588
- dummyImgContentImg.alt = alt || '';
1589
- dummyImgContentImg.src = _dummyImgSrc;
1590
- dummyImgContentImg.className = "lg-dummy-img";
1591
- dummyImgContentImg.style.cssText = imgStyle;
1592
- $currentSlide.addClass('lg-first-slide');
1593
- this.outer.addClass('lg-first-slide-loading');
1594
- return dummyImgContentImg;
1595
- }
1596
- return '';
1597
- };
1598
- LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {
1599
- var currentGalleryItem = this.galleryItems[index];
1600
- var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;
1601
- // Use the thumbnail as dummy image which will be resized to actual image size and
1602
- // displayed on top of actual image
1603
- var imgContent = '';
1604
- var altAttr = alt ? 'alt="' + alt + '"' : '';
1605
- if (this.isFirstSlideWithZoomAnimation()) {
1606
- imgContent = this.getDummyImageContent($currentSlide, index, altAttr);
1607
- }
1608
- else {
1609
- imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);
1610
- }
1611
- var picture = document.createElement('picture');
1612
- picture.className = 'lg-img-wrap';
1613
- $LG(picture).append(imgContent);
1614
- $currentSlide.prepend(picture);
1615
- };
1616
- LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {
1617
- var mediaObject = $slide.find('.lg-object').first();
1618
- if (utils.isImageLoaded(mediaObject.get()) ||
1619
- isHTML5VideoWithoutPoster) {
1620
- onLoad();
1621
- }
1622
- else {
1623
- mediaObject.on('load.lg error.lg', function () {
1624
- onLoad && onLoad();
1625
- });
1626
- mediaObject.on('error.lg', function () {
1627
- onError && onError();
1628
- });
1629
- }
1630
- };
1631
- /**
1632
- *
1633
- * @param $el Current slide item
1634
- * @param index
1635
- * @param delay Delay is 0 except first time
1636
- * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin
1637
- * @param isFirstSlide
1638
- */
1639
- LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {
1640
- var _this = this;
1641
- this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {
1642
- _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);
1643
- }, function () {
1644
- currentSlide.addClass('lg-complete lg-complete_');
1645
- currentSlide.html('<span class="lg-error-msg">' +
1646
- _this.settings.strings['mediaLoadingFailed'] +
1647
- '</span>');
1648
- });
1649
- };
1650
- LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {
1651
- var _this = this;
1652
- var currentGalleryItem = this.galleryItems[index];
1653
- // Adding delay for video slides without poster for better performance and user experience
1654
- // Videos should start playing once once the gallery is completely loaded
1655
- var _speed = isFirstSlide &&
1656
- this.getSlideType(currentGalleryItem) === 'video' &&
1657
- !currentGalleryItem.poster
1658
- ? speed
1659
- : 0;
1660
- setTimeout(function () {
1661
- $currentSlide.addClass('lg-complete lg-complete_');
1662
- _this.LGel.trigger(lGEvents.slideItemLoad, {
1663
- index: index,
1664
- delay: delay || 0,
1665
- isFirstSlide: isFirstSlide,
1666
- });
1667
- }, _speed);
1668
- };
1669
- LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {
1670
- return !!(!this.lGalleryOn &&
1671
- this.zoomFromOrigin &&
1672
- this.currentImageSize);
1673
- };
1674
- // Add video slideInfo
1675
- LightGallery.prototype.addSlideVideoInfo = function (items) {
1676
- var _this = this;
1677
- items.forEach(function (element, index) {
1678
- element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);
1679
- if (element.__slideVideoInfo &&
1680
- _this.settings.loadYouTubePoster &&
1681
- !element.poster &&
1682
- element.__slideVideoInfo.youtube) {
1683
- element.poster = "//img.youtube.com/vi/" + element.__slideVideoInfo.youtube[1] + "/maxresdefault.jpg";
1684
- }
1685
- });
1686
- };
1687
- /**
1688
- * Load slide content into slide.
1689
- * This is used to load content into slides that is not visible too
1690
- * @param {Number} index - index of the slide.
1691
- * @param {Boolean} rec - if true call loadcontent() function again.
1692
- */
1693
- LightGallery.prototype.loadContent = function (index, rec) {
1694
- var _this = this;
1695
- var currentGalleryItem = this.galleryItems[index];
1696
- var $currentSlide = $LG(this.getSlideItemId(index));
1697
- var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;
1698
- var src = currentGalleryItem.src;
1699
- var video = currentGalleryItem.video;
1700
- var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;
1701
- if (currentGalleryItem.responsive) {
1702
- var srcDyItms = currentGalleryItem.responsive.split(',');
1703
- src = utils.getResponsiveSrc(srcDyItms) || src;
1704
- }
1705
- var videoInfo = currentGalleryItem.__slideVideoInfo;
1706
- var lgVideoStyle = '';
1707
- var iframe = !!currentGalleryItem.iframe;
1708
- var isFirstSlide = !this.lGalleryOn;
1709
- // delay for adding complete class. it is 0 except first time.
1710
- var delay = 0;
1711
- if (isFirstSlide) {
1712
- if (this.zoomFromOrigin && this.currentImageSize) {
1713
- delay = this.settings.startAnimationDuration + 10;
1714
- }
1715
- else {
1716
- delay = this.settings.backdropDuration + 10;
1717
- }
1718
- }
1719
- if (!$currentSlide.hasClass('lg-loaded')) {
1720
- if (videoInfo) {
1721
- var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;
1722
- var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);
1723
- lgVideoStyle = this.getVideoContStyle(videoSize);
1724
- }
1725
- if (iframe) {
1726
- var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);
1727
- $currentSlide.prepend(markup);
1728
- }
1729
- else if (poster) {
1730
- var dummyImg = '';
1731
- var hasStartAnimation = isFirstSlide &&
1732
- this.zoomFromOrigin &&
1733
- this.currentImageSize;
1734
- if (hasStartAnimation) {
1735
- dummyImg = this.getDummyImageContent($currentSlide, index, '');
1736
- }
1737
- var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);
1738
- $currentSlide.prepend(markup);
1739
- }
1740
- else if (videoInfo) {
1741
- var markup = "<div class=\"lg-video-cont \" style=\"" + lgVideoStyle + "\"></div>";
1742
- $currentSlide.prepend(markup);
1743
- }
1744
- else {
1745
- this.setImgMarkup(src, $currentSlide, index);
1746
- if (srcset || sources) {
1747
- var $img = $currentSlide.find('.lg-object');
1748
- this.initPictureFill($img);
1749
- }
1750
- }
1751
- if (poster || videoInfo) {
1752
- this.LGel.trigger(lGEvents.hasVideo, {
1753
- index: index,
1754
- src: src,
1755
- html5Video: _html5Video,
1756
- hasPoster: !!poster,
1757
- });
1758
- }
1759
- this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });
1760
- if (this.lGalleryOn &&
1761
- this.settings.appendSubHtmlTo === '.lg-item') {
1762
- this.addHtml(index);
1763
- }
1764
- }
1765
- // For first time add some delay for displaying the start animation.
1766
- var _speed = 0;
1767
- // Do not change the delay value because it is required for zoom plugin.
1768
- // If gallery opened from direct url (hash) speed value should be 0
1769
- if (delay && !$LG(document.body).hasClass('lg-from-hash')) {
1770
- _speed = delay;
1771
- }
1772
- // Only for first slide and zoomFromOrigin is enabled
1773
- if (this.isFirstSlideWithZoomAnimation()) {
1774
- setTimeout(function () {
1775
- $currentSlide
1776
- .removeClass('lg-start-end-progress lg-start-progress')
1777
- .removeAttr('style');
1778
- }, this.settings.startAnimationDuration + 100);
1779
- if (!$currentSlide.hasClass('lg-loaded')) {
1780
- setTimeout(function () {
1781
- if (_this.getSlideType(currentGalleryItem) === 'image') {
1782
- var alt = currentGalleryItem.alt;
1783
- var altAttr = alt ? 'alt="' + alt + '"' : '';
1784
- $currentSlide
1785
- .find('.lg-img-wrap')
1786
- .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));
1787
- if (srcset || sources) {
1788
- var $img = $currentSlide.find('.lg-object');
1789
- _this.initPictureFill($img);
1790
- }
1791
- }
1792
- if (_this.getSlideType(currentGalleryItem) === 'image' ||
1793
- (_this.getSlideType(currentGalleryItem) === 'video' &&
1794
- poster)) {
1795
- _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);
1796
- // load remaining slides once the slide is completely loaded
1797
- _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {
1798
- _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);
1799
- }, function () {
1800
- _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);
1801
- });
1802
- }
1803
- }, this.settings.startAnimationDuration + 100);
1804
- }
1805
- }
1806
- // SLide content has been added to dom
1807
- $currentSlide.addClass('lg-loaded');
1808
- if (!this.isFirstSlideWithZoomAnimation() ||
1809
- (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {
1810
- this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));
1811
- }
1812
- // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling
1813
- if ((!this.zoomFromOrigin || !this.currentImageSize) &&
1814
- $currentSlide.hasClass('lg-complete_') &&
1815
- !this.lGalleryOn) {
1816
- setTimeout(function () {
1817
- $currentSlide.addClass('lg-complete');
1818
- }, this.settings.backdropDuration);
1819
- }
1820
- // Content loaded
1821
- // Need to set lGalleryOn before calling preload function
1822
- this.lGalleryOn = true;
1823
- if (rec === true) {
1824
- if (!$currentSlide.hasClass('lg-complete_')) {
1825
- $currentSlide
1826
- .find('.lg-object')
1827
- .first()
1828
- .on('load.lg error.lg', function () {
1829
- _this.preload(index);
1830
- });
1831
- }
1832
- else {
1833
- this.preload(index);
1834
- }
1835
- }
1836
- };
1837
- /**
1838
- * @desc Remove dummy image content and load next slides
1839
- * Called only for the first time if zoomFromOrigin animation is enabled
1840
- * @param index
1841
- * @param $currentSlide
1842
- * @param speed
1843
- */
1844
- LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {
1845
- var _this = this;
1846
- setTimeout(function () {
1847
- $currentSlide.find('.lg-dummy-img').remove();
1848
- $currentSlide.removeClass('lg-first-slide');
1849
- _this.outer.removeClass('lg-first-slide-loading');
1850
- _this.isDummyImageRemoved = true;
1851
- _this.preload(index);
1852
- }, speed + 300);
1853
- };
1854
- LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {
1855
- var _this = this;
1856
- if (numberOfItems === void 0) { numberOfItems = 0; }
1857
- var itemsToBeInsertedToDom = [];
1858
- // Minimum 2 items should be there
1859
- var possibleNumberOfItems = Math.max(numberOfItems, 3);
1860
- possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);
1861
- var prevIndexItem = "lg-item-" + this.lgId + "-" + prevIndex;
1862
- if (this.galleryItems.length <= 3) {
1863
- this.galleryItems.forEach(function (_element, index) {
1864
- itemsToBeInsertedToDom.push("lg-item-" + _this.lgId + "-" + index);
1865
- });
1866
- return itemsToBeInsertedToDom;
1867
- }
1868
- if (index < (this.galleryItems.length - 1) / 2) {
1869
- for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {
1870
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx);
1871
- }
1872
- var numberOfExistingItems = itemsToBeInsertedToDom.length;
1873
- for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {
1874
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index + idx + 1));
1875
- }
1876
- }
1877
- else {
1878
- for (var idx = index; idx <= this.galleryItems.length - 1 &&
1879
- idx < index + possibleNumberOfItems / 2; idx++) {
1880
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx);
1881
- }
1882
- var numberOfExistingItems = itemsToBeInsertedToDom.length;
1883
- for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {
1884
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index - idx - 1));
1885
- }
1886
- }
1887
- if (this.settings.loop) {
1888
- if (index === this.galleryItems.length - 1) {
1889
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + 0);
1890
- }
1891
- else if (index === 0) {
1892
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (this.galleryItems.length - 1));
1893
- }
1894
- }
1895
- if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {
1896
- itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + prevIndex);
1897
- }
1898
- return itemsToBeInsertedToDom;
1899
- };
1900
- LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {
1901
- var _this = this;
1902
- var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);
1903
- itemsToBeInsertedToDom.forEach(function (item) {
1904
- if (_this.currentItemsInDom.indexOf(item) === -1) {
1905
- _this.$inner.append("<div id=\"" + item + "\" class=\"lg-item\"></div>");
1906
- }
1907
- });
1908
- this.currentItemsInDom.forEach(function (item) {
1909
- if (itemsToBeInsertedToDom.indexOf(item) === -1) {
1910
- $LG("#" + item).remove();
1911
- }
1912
- });
1913
- return itemsToBeInsertedToDom;
1914
- };
1915
- /**
1916
- * Get previous index of the slide
1917
- */
1918
- LightGallery.prototype.getPreviousSlideIndex = function () {
1919
- var prevIndex = 0;
1920
- try {
1921
- var currentItemId = this.outer
1922
- .find('.lg-current')
1923
- .first()
1924
- .attr('id');
1925
- prevIndex = parseInt(currentItemId.split('-')[3]) || 0;
1926
- }
1927
- catch (error) {
1928
- prevIndex = 0;
1929
- }
1930
- return prevIndex;
1931
- };
1932
- LightGallery.prototype.setDownloadValue = function (index) {
1933
- if (this.settings.download) {
1934
- var currentGalleryItem = this.galleryItems[index];
1935
- var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||
1936
- currentGalleryItem.downloadUrl === 'false';
1937
- if (hideDownloadBtn) {
1938
- this.outer.addClass('lg-hide-download');
1939
- }
1940
- else {
1941
- var $download = this.getElementById('lg-download');
1942
- this.outer.removeClass('lg-hide-download');
1943
- $download.attr('href', currentGalleryItem.downloadUrl ||
1944
- currentGalleryItem.src);
1945
- if (currentGalleryItem.download) {
1946
- $download.attr('download', currentGalleryItem.download);
1947
- }
1948
- }
1949
- }
1950
- };
1951
- LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {
1952
- var _this = this;
1953
- if (this.lGalleryOn) {
1954
- previousSlideItem.addClass('lg-slide-progress');
1955
- }
1956
- setTimeout(function () {
1957
- // remove all transitions
1958
- _this.outer.addClass('lg-no-trans');
1959
- _this.outer
1960
- .find('.lg-item')
1961
- .removeClass('lg-prev-slide lg-next-slide');
1962
- if (direction === 'prev') {
1963
- //prevslide
1964
- currentSlideItem.addClass('lg-prev-slide');
1965
- previousSlideItem.addClass('lg-next-slide');
1966
- }
1967
- else {
1968
- // next slide
1969
- currentSlideItem.addClass('lg-next-slide');
1970
- previousSlideItem.addClass('lg-prev-slide');
1971
- }
1972
- // give 50 ms for browser to add/remove class
1973
- setTimeout(function () {
1974
- _this.outer.find('.lg-item').removeClass('lg-current');
1975
- currentSlideItem.addClass('lg-current');
1976
- // reset all transitions
1977
- _this.outer.removeClass('lg-no-trans');
1978
- }, 50);
1979
- }, this.lGalleryOn ? this.settings.slideDelay : 0);
1980
- };
1981
- /**
1982
- * Goto a specific slide.
1983
- * @param {Number} index - index of the slide
1984
- * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag
1985
- * @param {Boolean} fromThumb - true if slide function called via thumbnail click
1986
- * @param {String} direction - Direction of the slide(next/prev)
1987
- * @category lGPublicMethods
1988
- * @example
1989
- * const plugin = lightGallery();
1990
- * // to go to 3rd slide
1991
- * plugin.slide(2);
1992
- *
1993
- */
1994
- LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {
1995
- var _this = this;
1996
- var prevIndex = this.getPreviousSlideIndex();
1997
- this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);
1998
- // Prevent multiple call, Required for hsh plugin
1999
- if (this.lGalleryOn && prevIndex === index) {
2000
- return;
2001
- }
2002
- var numberOfGalleryItems = this.galleryItems.length;
2003
- if (!this.lgBusy) {
2004
- if (this.settings.counter) {
2005
- this.updateCurrentCounter(index);
2006
- }
2007
- var currentSlideItem = this.getSlideItem(index);
2008
- var previousSlideItem_1 = this.getSlideItem(prevIndex);
2009
- var currentGalleryItem = this.galleryItems[index];
2010
- var videoInfo = currentGalleryItem.__slideVideoInfo;
2011
- this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));
2012
- this.setDownloadValue(index);
2013
- if (videoInfo) {
2014
- var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;
2015
- var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);
2016
- this.resizeVideoSlide(index, videoSize);
2017
- }
2018
- this.LGel.trigger(lGEvents.beforeSlide, {
2019
- prevIndex: prevIndex,
2020
- index: index,
2021
- fromTouch: !!fromTouch,
2022
- fromThumb: !!fromThumb,
2023
- });
2024
- this.lgBusy = true;
2025
- clearTimeout(this.hideBarTimeout);
2026
- this.arrowDisable(index);
2027
- if (!direction) {
2028
- if (index < prevIndex) {
2029
- direction = 'prev';
2030
- }
2031
- else if (index > prevIndex) {
2032
- direction = 'next';
2033
- }
2034
- }
2035
- if (!fromTouch) {
2036
- this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);
2037
- }
2038
- else {
2039
- this.outer
2040
- .find('.lg-item')
2041
- .removeClass('lg-prev-slide lg-current lg-next-slide');
2042
- var touchPrev = void 0;
2043
- var touchNext = void 0;
2044
- if (numberOfGalleryItems > 2) {
2045
- touchPrev = index - 1;
2046
- touchNext = index + 1;
2047
- if (index === 0 && prevIndex === numberOfGalleryItems - 1) {
2048
- // next slide
2049
- touchNext = 0;
2050
- touchPrev = numberOfGalleryItems - 1;
2051
- }
2052
- else if (index === numberOfGalleryItems - 1 &&
2053
- prevIndex === 0) {
2054
- // prev slide
2055
- touchNext = 0;
2056
- touchPrev = numberOfGalleryItems - 1;
2057
- }
2058
- }
2059
- else {
2060
- touchPrev = 0;
2061
- touchNext = 1;
2062
- }
2063
- if (direction === 'prev') {
2064
- this.getSlideItem(touchNext).addClass('lg-next-slide');
2065
- }
2066
- else {
2067
- this.getSlideItem(touchPrev).addClass('lg-prev-slide');
2068
- }
2069
- currentSlideItem.addClass('lg-current');
2070
- }
2071
- // Do not put load content in set timeout as it needs to load immediately when the gallery is opened
2072
- if (!this.lGalleryOn) {
2073
- this.loadContent(index, true);
2074
- }
2075
- else {
2076
- setTimeout(function () {
2077
- _this.loadContent(index, true);
2078
- // Add title if this.settings.appendSubHtmlTo === lg-sub-html
2079
- if (_this.settings.appendSubHtmlTo !== '.lg-item') {
2080
- _this.addHtml(index);
2081
- }
2082
- }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));
2083
- }
2084
- setTimeout(function () {
2085
- _this.lgBusy = false;
2086
- previousSlideItem_1.removeClass('lg-slide-progress');
2087
- _this.LGel.trigger(lGEvents.afterSlide, {
2088
- prevIndex: prevIndex,
2089
- index: index,
2090
- fromTouch: fromTouch,
2091
- fromThumb: fromThumb,
2092
- });
2093
- }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));
2094
- }
2095
- this.index = index;
2096
- };
2097
- LightGallery.prototype.updateCurrentCounter = function (index) {
2098
- this.getElementById('lg-counter-current').html(index + 1 + '');
2099
- };
2100
- LightGallery.prototype.updateCounterTotal = function () {
2101
- this.getElementById('lg-counter-all').html(this.galleryItems.length + '');
2102
- };
2103
- LightGallery.prototype.getSlideType = function (item) {
2104
- if (item.__slideVideoInfo) {
2105
- return 'video';
2106
- }
2107
- else if (item.iframe) {
2108
- return 'iframe';
2109
- }
2110
- else {
2111
- return 'image';
2112
- }
2113
- };
2114
- LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {
2115
- var distanceX = endCoords.pageX - startCoords.pageX;
2116
- var distanceY = endCoords.pageY - startCoords.pageY;
2117
- var allowSwipe = false;
2118
- if (this.swipeDirection) {
2119
- allowSwipe = true;
2120
- }
2121
- else {
2122
- if (Math.abs(distanceX) > 15) {
2123
- this.swipeDirection = 'horizontal';
2124
- allowSwipe = true;
2125
- }
2126
- else if (Math.abs(distanceY) > 15) {
2127
- this.swipeDirection = 'vertical';
2128
- allowSwipe = true;
2129
- }
2130
- }
2131
- if (!allowSwipe) {
2132
- return;
2133
- }
2134
- var $currentSlide = this.getSlideItem(this.index);
2135
- if (this.swipeDirection === 'horizontal') {
2136
- e === null || e === void 0 ? void 0 : e.preventDefault();
2137
- // reset opacity and transition duration
2138
- this.outer.addClass('lg-dragging');
2139
- // move current slide
2140
- this.setTranslate($currentSlide, distanceX, 0);
2141
- // move next and prev slide with current slide
2142
- var width = $currentSlide.get().offsetWidth;
2143
- var slideWidthAmount = (width * 15) / 100;
2144
- var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);
2145
- this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);
2146
- this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);
2147
- }
2148
- else if (this.swipeDirection === 'vertical') {
2149
- if (this.settings.swipeToClose) {
2150
- e === null || e === void 0 ? void 0 : e.preventDefault();
2151
- this.$container.addClass('lg-dragging-vertical');
2152
- var opacity = 1 - Math.abs(distanceY) / window.innerHeight;
2153
- this.$backdrop.css('opacity', opacity);
2154
- var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);
2155
- this.setTranslate($currentSlide, 0, distanceY, scale, scale);
2156
- if (Math.abs(distanceY) > 100) {
2157
- this.outer
2158
- .addClass('lg-hide-items')
2159
- .removeClass('lg-components-open');
2160
- }
2161
- }
2162
- }
2163
- };
2164
- LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {
2165
- var _this = this;
2166
- var distance;
2167
- // keep slide animation for any mode while dragg/swipe
2168
- if (this.settings.mode !== 'lg-slide') {
2169
- this.outer.addClass('lg-slide');
2170
- }
2171
- // set transition duration
2172
- setTimeout(function () {
2173
- _this.$container.removeClass('lg-dragging-vertical');
2174
- _this.outer
2175
- .removeClass('lg-dragging lg-hide-items')
2176
- .addClass('lg-components-open');
2177
- var triggerClick = true;
2178
- if (_this.swipeDirection === 'horizontal') {
2179
- distance = endCoords.pageX - startCoords.pageX;
2180
- var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);
2181
- if (distance < 0 &&
2182
- distanceAbs > _this.settings.swipeThreshold) {
2183
- _this.goToNextSlide(true);
2184
- triggerClick = false;
2185
- }
2186
- else if (distance > 0 &&
2187
- distanceAbs > _this.settings.swipeThreshold) {
2188
- _this.goToPrevSlide(true);
2189
- triggerClick = false;
2190
- }
2191
- }
2192
- else if (_this.swipeDirection === 'vertical') {
2193
- distance = Math.abs(endCoords.pageY - startCoords.pageY);
2194
- if (_this.settings.closable &&
2195
- _this.settings.swipeToClose &&
2196
- distance > 100) {
2197
- _this.closeGallery();
2198
- return;
2199
- }
2200
- else {
2201
- _this.$backdrop.css('opacity', 1);
2202
- }
2203
- }
2204
- _this.outer.find('.lg-item').removeAttr('style');
2205
- if (triggerClick &&
2206
- Math.abs(endCoords.pageX - startCoords.pageX) < 5) {
2207
- // Trigger click if distance is less than 5 pix
2208
- var target = $LG(event.target);
2209
- if (_this.isPosterElement(target)) {
2210
- _this.LGel.trigger(lGEvents.posterClick);
2211
- }
2212
- }
2213
- _this.swipeDirection = undefined;
2214
- });
2215
- // remove slide class once drag/swipe is completed if mode is not slide
2216
- setTimeout(function () {
2217
- if (!_this.outer.hasClass('lg-dragging') &&
2218
- _this.settings.mode !== 'lg-slide') {
2219
- _this.outer.removeClass('lg-slide');
2220
- }
2221
- }, this.settings.speed + 100);
2222
- };
2223
- LightGallery.prototype.enableSwipe = function () {
2224
- var _this = this;
2225
- var startCoords = {};
2226
- var endCoords = {};
2227
- var isMoved = false;
2228
- var isSwiping = false;
2229
- if (this.settings.enableSwipe) {
2230
- this.$inner.on('touchstart.lg', function (e) {
2231
- _this.dragOrSwipeEnabled = true;
2232
- var $item = _this.getSlideItem(_this.index);
2233
- if (($LG(e.target).hasClass('lg-item') ||
2234
- $item.get().contains(e.target)) &&
2235
- !_this.outer.hasClass('lg-zoomed') &&
2236
- !_this.lgBusy &&
2237
- e.touches.length === 1) {
2238
- isSwiping = true;
2239
- _this.touchAction = 'swipe';
2240
- _this.manageSwipeClass();
2241
- startCoords = {
2242
- pageX: e.touches[0].pageX,
2243
- pageY: e.touches[0].pageY,
2244
- };
2245
- }
2246
- });
2247
- this.$inner.on('touchmove.lg', function (e) {
2248
- if (isSwiping &&
2249
- _this.touchAction === 'swipe' &&
2250
- e.touches.length === 1) {
2251
- endCoords = {
2252
- pageX: e.touches[0].pageX,
2253
- pageY: e.touches[0].pageY,
2254
- };
2255
- _this.touchMove(startCoords, endCoords, e);
2256
- isMoved = true;
2257
- }
2258
- });
2259
- this.$inner.on('touchend.lg', function (event) {
2260
- if (_this.touchAction === 'swipe') {
2261
- if (isMoved) {
2262
- isMoved = false;
2263
- _this.touchEnd(endCoords, startCoords, event);
2264
- }
2265
- else if (isSwiping) {
2266
- var target = $LG(event.target);
2267
- if (_this.isPosterElement(target)) {
2268
- _this.LGel.trigger(lGEvents.posterClick);
2269
- }
2270
- }
2271
- _this.touchAction = undefined;
2272
- isSwiping = false;
2273
- }
2274
- });
2275
- }
2276
- };
2277
- LightGallery.prototype.enableDrag = function () {
2278
- var _this = this;
2279
- var startCoords = {};
2280
- var endCoords = {};
2281
- var isDraging = false;
2282
- var isMoved = false;
2283
- if (this.settings.enableDrag) {
2284
- this.outer.on('mousedown.lg', function (e) {
2285
- _this.dragOrSwipeEnabled = true;
2286
- var $item = _this.getSlideItem(_this.index);
2287
- if ($LG(e.target).hasClass('lg-item') ||
2288
- $item.get().contains(e.target)) {
2289
- if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {
2290
- e.preventDefault();
2291
- if (!_this.lgBusy) {
2292
- _this.manageSwipeClass();
2293
- startCoords = {
2294
- pageX: e.pageX,
2295
- pageY: e.pageY,
2296
- };
2297
- isDraging = true;
2298
- // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
2299
- _this.outer.get().scrollLeft += 1;
2300
- _this.outer.get().scrollLeft -= 1;
2301
- // *
2302
- _this.outer
2303
- .removeClass('lg-grab')
2304
- .addClass('lg-grabbing');
2305
- _this.LGel.trigger(lGEvents.dragStart);
2306
- }
2307
- }
2308
- }
2309
- });
2310
- $LG(window).on("mousemove.lg.global" + this.lgId, function (e) {
2311
- if (isDraging && _this.lgOpened) {
2312
- isMoved = true;
2313
- endCoords = {
2314
- pageX: e.pageX,
2315
- pageY: e.pageY,
2316
- };
2317
- _this.touchMove(startCoords, endCoords);
2318
- _this.LGel.trigger(lGEvents.dragMove);
2319
- }
2320
- });
2321
- $LG(window).on("mouseup.lg.global" + this.lgId, function (event) {
2322
- if (!_this.lgOpened) {
2323
- return;
2324
- }
2325
- var target = $LG(event.target);
2326
- if (isMoved) {
2327
- isMoved = false;
2328
- _this.touchEnd(endCoords, startCoords, event);
2329
- _this.LGel.trigger(lGEvents.dragEnd);
2330
- }
2331
- else if (_this.isPosterElement(target)) {
2332
- _this.LGel.trigger(lGEvents.posterClick);
2333
- }
2334
- // Prevent execution on click
2335
- if (isDraging) {
2336
- isDraging = false;
2337
- _this.outer.removeClass('lg-grabbing').addClass('lg-grab');
2338
- }
2339
- });
2340
- }
2341
- };
2342
- LightGallery.prototype.triggerPosterClick = function () {
2343
- var _this = this;
2344
- this.$inner.on('click.lg', function (event) {
2345
- if (!_this.dragOrSwipeEnabled &&
2346
- _this.isPosterElement($LG(event.target))) {
2347
- _this.LGel.trigger(lGEvents.posterClick);
2348
- }
2349
- });
2350
- };
2351
- LightGallery.prototype.manageSwipeClass = function () {
2352
- var _touchNext = this.index + 1;
2353
- var _touchPrev = this.index - 1;
2354
- if (this.settings.loop && this.galleryItems.length > 2) {
2355
- if (this.index === 0) {
2356
- _touchPrev = this.galleryItems.length - 1;
2357
- }
2358
- else if (this.index === this.galleryItems.length - 1) {
2359
- _touchNext = 0;
2360
- }
2361
- }
2362
- this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');
2363
- if (_touchPrev > -1) {
2364
- this.getSlideItem(_touchPrev).addClass('lg-prev-slide');
2365
- }
2366
- this.getSlideItem(_touchNext).addClass('lg-next-slide');
2367
- };
2368
- /**
2369
- * Go to next slide
2370
- * @param {Boolean} fromTouch - true if slide function called via touch event
2371
- * @category lGPublicMethods
2372
- * @example
2373
- * const plugin = lightGallery();
2374
- * plugin.goToNextSlide();
2375
- * @see <a href="/demos/methods/">Demo</a>
2376
- */
2377
- LightGallery.prototype.goToNextSlide = function (fromTouch) {
2378
- var _this = this;
2379
- var _loop = this.settings.loop;
2380
- if (fromTouch && this.galleryItems.length < 3) {
2381
- _loop = false;
2382
- }
2383
- if (!this.lgBusy) {
2384
- if (this.index + 1 < this.galleryItems.length) {
2385
- this.index++;
2386
- this.LGel.trigger(lGEvents.beforeNextSlide, {
2387
- index: this.index,
2388
- });
2389
- this.slide(this.index, !!fromTouch, false, 'next');
2390
- }
2391
- else {
2392
- if (_loop) {
2393
- this.index = 0;
2394
- this.LGel.trigger(lGEvents.beforeNextSlide, {
2395
- index: this.index,
2396
- });
2397
- this.slide(this.index, !!fromTouch, false, 'next');
2398
- }
2399
- else if (this.settings.slideEndAnimation && !fromTouch) {
2400
- this.outer.addClass('lg-right-end');
2401
- setTimeout(function () {
2402
- _this.outer.removeClass('lg-right-end');
2403
- }, 400);
2404
- }
2405
- }
2406
- }
2407
- };
2408
- /**
2409
- * Go to previous slides
2410
- * @param {Boolean} fromTouch - true if slide function called via touch event
2411
- * @category lGPublicMethods
2412
- * @example
2413
- * const plugin = lightGallery({});
2414
- * plugin.goToPrevSlide();
2415
- * @see <a href="/demos/methods/">Demo</a>
2416
- *
2417
- */
2418
- LightGallery.prototype.goToPrevSlide = function (fromTouch) {
2419
- var _this = this;
2420
- var _loop = this.settings.loop;
2421
- if (fromTouch && this.galleryItems.length < 3) {
2422
- _loop = false;
2423
- }
2424
- if (!this.lgBusy) {
2425
- if (this.index > 0) {
2426
- this.index--;
2427
- this.LGel.trigger(lGEvents.beforePrevSlide, {
2428
- index: this.index,
2429
- fromTouch: fromTouch,
2430
- });
2431
- this.slide(this.index, !!fromTouch, false, 'prev');
2432
- }
2433
- else {
2434
- if (_loop) {
2435
- this.index = this.galleryItems.length - 1;
2436
- this.LGel.trigger(lGEvents.beforePrevSlide, {
2437
- index: this.index,
2438
- fromTouch: fromTouch,
2439
- });
2440
- this.slide(this.index, !!fromTouch, false, 'prev');
2441
- }
2442
- else if (this.settings.slideEndAnimation && !fromTouch) {
2443
- this.outer.addClass('lg-left-end');
2444
- setTimeout(function () {
2445
- _this.outer.removeClass('lg-left-end');
2446
- }, 400);
2447
- }
2448
- }
2449
- }
2450
- };
2451
- LightGallery.prototype.keyPress = function () {
2452
- var _this = this;
2453
- $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
2454
- if (_this.lgOpened &&
2455
- _this.settings.escKey === true &&
2456
- e.keyCode === 27) {
2457
- e.preventDefault();
2458
- if (_this.settings.allowMediaOverlap &&
2459
- _this.outer.hasClass('lg-can-toggle') &&
2460
- _this.outer.hasClass('lg-components-open')) {
2461
- _this.outer.removeClass('lg-components-open');
2462
- }
2463
- else {
2464
- _this.closeGallery();
2465
- }
2466
- }
2467
- if (_this.lgOpened && _this.galleryItems.length > 1) {
2468
- if (e.keyCode === 37) {
2469
- e.preventDefault();
2470
- _this.goToPrevSlide();
2471
- }
2472
- if (e.keyCode === 39) {
2473
- e.preventDefault();
2474
- _this.goToNextSlide();
2475
- }
2476
- }
2477
- });
2478
- };
2479
- LightGallery.prototype.arrow = function () {
2480
- var _this = this;
2481
- this.getElementById('lg-prev').on('click.lg', function () {
2482
- _this.goToPrevSlide();
2483
- });
2484
- this.getElementById('lg-next').on('click.lg', function () {
2485
- _this.goToNextSlide();
2486
- });
2487
- };
2488
- LightGallery.prototype.arrowDisable = function (index) {
2489
- // Disable arrows if settings.hideControlOnEnd is true
2490
- if (!this.settings.loop && this.settings.hideControlOnEnd) {
2491
- var $prev = this.getElementById('lg-prev');
2492
- var $next = this.getElementById('lg-next');
2493
- if (index + 1 === this.galleryItems.length) {
2494
- $next.attr('disabled', 'disabled').addClass('disabled');
2495
- }
2496
- else {
2497
- $next.removeAttr('disabled').removeClass('disabled');
2498
- }
2499
- if (index === 0) {
2500
- $prev.attr('disabled', 'disabled').addClass('disabled');
2501
- }
2502
- else {
2503
- $prev.removeAttr('disabled').removeClass('disabled');
2504
- }
2505
- }
2506
- };
2507
- LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {
2508
- if (scaleX === void 0) { scaleX = 1; }
2509
- if (scaleY === void 0) { scaleY = 1; }
2510
- $el.css('transform', 'translate3d(' +
2511
- xValue +
2512
- 'px, ' +
2513
- yValue +
2514
- 'px, 0px) scale3d(' +
2515
- scaleX +
2516
- ', ' +
2517
- scaleY +
2518
- ', 1)');
2519
- };
2520
- LightGallery.prototype.mousewheel = function () {
2521
- var _this = this;
2522
- var lastCall = 0;
2523
- this.outer.on('wheel.lg', function (e) {
2524
- if (!e.deltaY || _this.galleryItems.length < 2) {
2525
- return;
2526
- }
2527
- e.preventDefault();
2528
- var now = new Date().getTime();
2529
- if (now - lastCall < 1000) {
2530
- return;
2531
- }
2532
- lastCall = now;
2533
- if (e.deltaY > 0) {
2534
- _this.goToNextSlide();
2535
- }
2536
- else if (e.deltaY < 0) {
2537
- _this.goToPrevSlide();
2538
- }
2539
- });
2540
- };
2541
- LightGallery.prototype.isSlideElement = function (target) {
2542
- return (target.hasClass('lg-outer') ||
2543
- target.hasClass('lg-item') ||
2544
- target.hasClass('lg-img-wrap') ||
2545
- target.hasClass('lg-img-rotate'));
2546
- };
2547
- LightGallery.prototype.isPosterElement = function (target) {
2548
- var playButton = this.getSlideItem(this.index)
2549
- .find('.lg-video-play-button')
2550
- .get();
2551
- return (target.hasClass('lg-video-poster') ||
2552
- target.hasClass('lg-video-play-button') ||
2553
- (playButton && playButton.contains(target.get())));
2554
- };
2555
- /**
2556
- * Maximize minimize inline gallery.
2557
- * @category lGPublicMethods
2558
- */
2559
- LightGallery.prototype.toggleMaximize = function () {
2560
- var _this = this;
2561
- this.getElementById('lg-maximize').on('click.lg', function () {
2562
- _this.$container.toggleClass('lg-inline');
2563
- _this.refreshOnResize();
2564
- });
2565
- };
2566
- LightGallery.prototype.invalidateItems = function () {
2567
- for (var index = 0; index < this.items.length; index++) {
2568
- var element = this.items[index];
2569
- var $element = $LG(element);
2570
- $element.off("click.lgcustom-item-" + $element.attr('data-lg-id'));
2571
- }
2572
- };
2573
- LightGallery.prototype.trapFocus = function () {
2574
- var _this = this;
2575
- this.$container.get().focus({
2576
- preventScroll: true,
2577
- });
2578
- $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
2579
- if (!_this.lgOpened) {
2580
- return;
2581
- }
2582
- var isTabPressed = e.key === 'Tab' || e.keyCode === 9;
2583
- if (!isTabPressed) {
2584
- return;
2585
- }
2586
- var focusableEls = utils.getFocusableElements(_this.$container.get());
2587
- var firstFocusableEl = focusableEls[0];
2588
- var lastFocusableEl = focusableEls[focusableEls.length - 1];
2589
- if (e.shiftKey) {
2590
- if (document.activeElement === firstFocusableEl) {
2591
- lastFocusableEl.focus();
2592
- e.preventDefault();
2593
- }
2594
- }
2595
- else {
2596
- if (document.activeElement === lastFocusableEl) {
2597
- firstFocusableEl.focus();
2598
- e.preventDefault();
2599
- }
2600
- }
2601
- });
2602
- };
2603
- LightGallery.prototype.manageCloseGallery = function () {
2604
- var _this = this;
2605
- if (!this.settings.closable)
2606
- return;
2607
- var mousedown = false;
2608
- this.getElementById('lg-close').on('click.lg', function () {
2609
- _this.closeGallery();
2610
- });
2611
- if (this.settings.closeOnTap) {
2612
- // If you drag the slide and release outside gallery gets close on chrome
2613
- // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer
2614
- this.outer.on('mousedown.lg', function (e) {
2615
- var target = $LG(e.target);
2616
- if (_this.isSlideElement(target)) {
2617
- mousedown = true;
2618
- }
2619
- else {
2620
- mousedown = false;
2621
- }
2622
- });
2623
- this.outer.on('mousemove.lg', function () {
2624
- mousedown = false;
2625
- });
2626
- this.outer.on('mouseup.lg', function (e) {
2627
- var target = $LG(e.target);
2628
- if (_this.isSlideElement(target) && mousedown) {
2629
- if (!_this.outer.hasClass('lg-dragging')) {
2630
- _this.closeGallery();
2631
- }
2632
- }
2633
- });
2634
- }
2635
- };
2636
- /**
2637
- * Close lightGallery if it is opened.
2638
- *
2639
- * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery
2640
- * @return returns the estimated time to close gallery completely including the close animation duration
2641
- * @category lGPublicMethods
2642
- * @example
2643
- * const plugin = lightGallery();
2644
- * plugin.closeGallery();
2645
- *
2646
- */
2647
- LightGallery.prototype.closeGallery = function (force) {
2648
- var _this = this;
2649
- if (!this.lgOpened || (!this.settings.closable && !force)) {
2650
- return 0;
2651
- }
2652
- this.LGel.trigger(lGEvents.beforeClose);
2653
- if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {
2654
- $LG(window).scrollTop(this.prevScrollTop);
2655
- }
2656
- var currentItem = this.items[this.index];
2657
- var transform;
2658
- if (this.zoomFromOrigin && currentItem) {
2659
- var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;
2660
- var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;
2661
- var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);
2662
- transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);
2663
- }
2664
- if (this.zoomFromOrigin && transform) {
2665
- this.outer.addClass('lg-closing lg-zoom-from-image');
2666
- this.getSlideItem(this.index)
2667
- .addClass('lg-start-end-progress')
2668
- .css('transition-duration', this.settings.startAnimationDuration + 'ms')
2669
- .css('transform', transform);
2670
- }
2671
- else {
2672
- this.outer.addClass('lg-hide-items');
2673
- // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true
2674
- // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts
2675
- this.outer.removeClass('lg-zoom-from-image');
2676
- }
2677
- // Unbind all events added by lightGallery
2678
- // @todo
2679
- //this.$el.off('.lg.tm');
2680
- this.destroyModules();
2681
- this.lGalleryOn = false;
2682
- this.isDummyImageRemoved = false;
2683
- this.zoomFromOrigin = this.settings.zoomFromOrigin;
2684
- clearTimeout(this.hideBarTimeout);
2685
- this.hideBarTimeout = false;
2686
- $LG('html').removeClass('lg-on');
2687
- this.outer.removeClass('lg-visible lg-components-open');
2688
- // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.
2689
- this.$backdrop.removeClass('in').css('opacity', 0);
2690
- var removeTimeout = this.zoomFromOrigin && transform
2691
- ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)
2692
- : this.settings.backdropDuration;
2693
- this.$container.removeClass('lg-show-in');
2694
- // Once the closign animation is completed and gallery is invisible
2695
- setTimeout(function () {
2696
- if (_this.zoomFromOrigin && transform) {
2697
- _this.outer.removeClass('lg-zoom-from-image');
2698
- }
2699
- _this.$container.removeClass('lg-show');
2700
- // Reset scrollbar
2701
- _this.resetScrollBar();
2702
- // Need to remove inline opacity as it is used in the stylesheet as well
2703
- _this.$backdrop
2704
- .removeAttr('style')
2705
- .css('transition-duration', _this.settings.backdropDuration + 'ms');
2706
- _this.outer.removeClass("lg-closing " + _this.settings.startClass);
2707
- _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');
2708
- _this.$inner.empty();
2709
- if (_this.lgOpened) {
2710
- _this.LGel.trigger(lGEvents.afterClose, {
2711
- instance: _this,
2712
- });
2713
- }
2714
- if (_this.$container.get()) {
2715
- _this.$container.get().blur();
2716
- }
2717
- _this.lgOpened = false;
2718
- }, removeTimeout + 100);
2719
- return removeTimeout + 100;
2720
- };
2721
- LightGallery.prototype.initModules = function () {
2722
- this.plugins.forEach(function (module) {
2723
- try {
2724
- module.init();
2725
- }
2726
- catch (err) {
2727
- console.warn("lightGallery:- make sure lightGallery module is properly initiated");
2728
- }
2729
- });
2730
- };
2731
- LightGallery.prototype.destroyModules = function (destroy) {
2732
- this.plugins.forEach(function (module) {
2733
- try {
2734
- if (destroy) {
2735
- module.destroy();
2736
- }
2737
- else {
2738
- module.closeGallery && module.closeGallery();
2739
- }
2740
- }
2741
- catch (err) {
2742
- console.warn("lightGallery:- make sure lightGallery module is properly destroyed");
2743
- }
2744
- });
2745
- };
2746
- /**
2747
- * Refresh lightGallery with new set of children.
2748
- *
2749
- * @description This is useful to update the gallery when the child elements are changed without calling destroy method.
2750
- *
2751
- * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery
2752
- * @see <a href="/demos/dynamic-mode/">Demo</a>
2753
- * @category lGPublicMethods
2754
- * @example
2755
- * const plugin = lightGallery();
2756
- * // Delete or add children, then call
2757
- * plugin.refresh();
2758
- *
2759
- */
2760
- LightGallery.prototype.refresh = function (galleryItems) {
2761
- if (!this.settings.dynamic) {
2762
- this.invalidateItems();
2763
- }
2764
- if (galleryItems) {
2765
- this.galleryItems = galleryItems;
2766
- }
2767
- else {
2768
- this.galleryItems = this.getItems();
2769
- }
2770
- this.updateControls();
2771
- this.openGalleryOnItemClick();
2772
- this.LGel.trigger(lGEvents.updateSlides);
2773
- };
2774
- LightGallery.prototype.updateControls = function () {
2775
- this.addSlideVideoInfo(this.galleryItems);
2776
- this.updateCounterTotal();
2777
- this.manageSingleSlideClassName();
2778
- };
2779
- LightGallery.prototype.destroyGallery = function () {
2780
- this.destroyModules(true);
2781
- if (!this.settings.dynamic) {
2782
- this.invalidateItems();
2783
- }
2784
- $LG(window).off(".lg.global" + this.lgId);
2785
- this.LGel.off('.lg');
2786
- this.$container.remove();
2787
- };
2788
- /**
2789
- * Destroy lightGallery.
2790
- * Destroy lightGallery and its plugin instances completely
2791
- *
2792
- * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.
2793
- * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.
2794
- * You can use refresh method most of the times.
2795
- * @category lGPublicMethods
2796
- * @example
2797
- * const plugin = lightGallery();
2798
- * plugin.destroy();
2799
- *
2800
- */
2801
- LightGallery.prototype.destroy = function () {
2802
- var closeTimeout = this.closeGallery(true);
2803
- if (closeTimeout) {
2804
- setTimeout(this.destroyGallery.bind(this), closeTimeout);
2805
- }
2806
- else {
2807
- this.destroyGallery();
2808
- }
2809
- return closeTimeout;
2810
- };
2811
- return LightGallery;
2812
- }());
2813
-
2814
- function lightGallery(el, options) {
2815
- return new LightGallery(el, options);
2816
- }
2817
-
2818
- var LgMethods = {
2819
- onAfterAppendSlide: 'lgAfterAppendSlide',
2820
- onInit: 'lgInit',
2821
- onHasVideo: 'lgHasVideo',
2822
- onContainerResize: 'lgContainerResize',
2823
- onUpdateSlides: 'lgUpdateSlides',
2824
- onAfterAppendSubHtml: 'lgAfterAppendSubHtml',
2825
- onBeforeOpen: 'lgBeforeOpen',
2826
- onAfterOpen: 'lgAfterOpen',
2827
- onSlideItemLoad: 'lgSlideItemLoad',
2828
- onBeforeSlide: 'lgBeforeSlide',
2829
- onAfterSlide: 'lgAfterSlide',
2830
- onPosterClick: 'lgPosterClick',
2831
- onDragStart: 'lgDragStart',
2832
- onDragMove: 'lgDragMove',
2833
- onDragEnd: 'lgDragEnd',
2834
- onBeforeNextSlide: 'lgBeforeNextSlide',
2835
- onBeforePrevSlide: 'lgBeforePrevSlide',
2836
- onBeforeClose: 'lgBeforeClose',
2837
- onAfterClose: 'lgAfterClose',
2838
- onRotateLeft: 'lgRotateLeft',
2839
- onRotateRight: 'lgRotateRight',
2840
- onFlipHorizontal: 'lgFlipHorizontal',
2841
- onFlipVertical: 'lgFlipVertical',
2842
- };
2843
- var LG = function (_a) {
2844
- var children = _a.children, elementClassNames = _a.elementClassNames, onAfterAppendSlide = _a.onAfterAppendSlide, onInit = _a.onInit, onHasVideo = _a.onHasVideo, onContainerResize = _a.onContainerResize, onAfterAppendSubHtml = _a.onAfterAppendSubHtml, onBeforeOpen = _a.onBeforeOpen, onAfterOpen = _a.onAfterOpen, onSlideItemLoad = _a.onSlideItemLoad, onBeforeSlide = _a.onBeforeSlide, onAfterSlide = _a.onAfterSlide, onPosterClick = _a.onPosterClick, onDragStart = _a.onDragStart, onDragMove = _a.onDragMove, onDragEnd = _a.onDragEnd, onBeforeNextSlide = _a.onBeforeNextSlide, onBeforePrevSlide = _a.onBeforePrevSlide, onBeforeClose = _a.onBeforeClose, onAfterClose = _a.onAfterClose, onRotateLeft = _a.onRotateLeft, onRotateRight = _a.onRotateRight, onFlipHorizontal = _a.onFlipHorizontal, onFlipVertical = _a.onFlipVertical, restProps = __rest(_a, ["children", "elementClassNames", "onAfterAppendSlide", "onInit", "onHasVideo", "onContainerResize", "onAfterAppendSubHtml", "onBeforeOpen", "onAfterOpen", "onSlideItemLoad", "onBeforeSlide", "onAfterSlide", "onPosterClick", "onDragStart", "onDragMove", "onDragEnd", "onBeforeNextSlide", "onBeforePrevSlide", "onBeforeClose", "onAfterClose", "onRotateLeft", "onRotateRight", "onFlipHorizontal", "onFlipVertical"]);
2845
- var $lg = React.useRef(null);
2846
- var registerEvents = React.useCallback(function () {
2847
- if (onAfterAppendSlide && $lg && $lg.current) {
2848
- $lg.current.addEventListener(LgMethods.onAfterAppendSlide, (function (event) {
2849
- onAfterAppendSlide(event.detail);
2850
- }));
2851
- }
2852
- if (onInit && $lg && $lg.current) {
2853
- $lg.current.addEventListener(LgMethods.onInit, (function (event) {
2854
- onInit(event.detail);
2855
- }));
2856
- }
2857
- if (onHasVideo && $lg && $lg.current) {
2858
- $lg.current.addEventListener(LgMethods.onHasVideo, (function (event) {
2859
- onHasVideo(event.detail);
2860
- }));
2861
- }
2862
- if (onContainerResize && $lg && $lg.current) {
2863
- $lg.current.addEventListener(LgMethods.onContainerResize, (function (event) {
2864
- onContainerResize(event.detail);
2865
- }));
2866
- }
2867
- if (onAfterAppendSubHtml && $lg && $lg.current) {
2868
- $lg.current.addEventListener(LgMethods.onAfterAppendSubHtml, (function (event) {
2869
- onAfterAppendSubHtml(event.detail);
2870
- }));
2871
- }
2872
- if (onBeforeOpen && $lg && $lg.current) {
2873
- $lg.current.addEventListener(LgMethods.onBeforeOpen, (function (event) {
2874
- onBeforeOpen(event.detail);
2875
- }));
2876
- }
2877
- if (onAfterOpen && $lg && $lg.current) {
2878
- $lg.current.addEventListener(LgMethods.onAfterOpen, (function (event) {
2879
- onAfterOpen(event.detail);
2880
- }));
2881
- }
2882
- if (onSlideItemLoad && $lg && $lg.current) {
2883
- $lg.current.addEventListener(LgMethods.onSlideItemLoad, (function (event) {
2884
- onSlideItemLoad(event.detail);
2885
- }));
2886
- }
2887
- if (onBeforeSlide && $lg && $lg.current) {
2888
- $lg.current.addEventListener(LgMethods.onBeforeSlide, (function (event) {
2889
- onBeforeSlide(event.detail);
2890
- }));
2891
- }
2892
- if (onAfterSlide && $lg && $lg.current) {
2893
- $lg.current.addEventListener(LgMethods.onAfterSlide, (function (event) {
2894
- onAfterSlide(event.detail);
2895
- }));
2896
- }
2897
- if (onPosterClick && $lg && $lg.current) {
2898
- $lg.current.addEventListener(LgMethods.onPosterClick, (function (event) {
2899
- onPosterClick(event.detail);
2900
- }));
2901
- }
2902
- if (onDragStart && $lg && $lg.current) {
2903
- $lg.current.addEventListener(LgMethods.onDragStart, (function (event) {
2904
- onDragStart(event.detail);
2905
- }));
2906
- }
2907
- if (onDragMove && $lg && $lg.current) {
2908
- $lg.current.addEventListener(LgMethods.onDragMove, (function (event) {
2909
- onDragMove(event.detail);
2910
- }));
2911
- }
2912
- if (onDragEnd && $lg && $lg.current) {
2913
- $lg.current.addEventListener(LgMethods.onDragEnd, (function (event) {
2914
- onDragEnd(event.detail);
2915
- }));
2916
- }
2917
- if (onBeforeNextSlide && $lg && $lg.current) {
2918
- $lg.current.addEventListener(LgMethods.onBeforeNextSlide, (function (event) {
2919
- onBeforeNextSlide(event.detail);
2920
- }));
2921
- }
2922
- if (onBeforePrevSlide && $lg && $lg.current) {
2923
- $lg.current.addEventListener(LgMethods.onBeforePrevSlide, (function (event) {
2924
- onBeforePrevSlide(event.detail);
2925
- }));
2926
- }
2927
- if (onBeforeClose && $lg && $lg.current) {
2928
- $lg.current.addEventListener(LgMethods.onBeforeClose, (function (event) {
2929
- onBeforeClose(event.detail);
2930
- }));
2931
- }
2932
- if (onAfterClose && $lg && $lg.current) {
2933
- $lg.current.addEventListener(LgMethods.onAfterClose, (function (event) {
2934
- onAfterClose(event.detail);
2935
- }));
2936
- }
2937
- if (onRotateLeft && $lg && $lg.current) {
2938
- $lg.current.addEventListener(LgMethods.onRotateLeft, (function (event) {
2939
- onRotateLeft(event.detail);
2940
- }));
2941
- }
2942
- if (onRotateRight && $lg && $lg.current) {
2943
- $lg.current.addEventListener(LgMethods.onRotateRight, (function (event) {
2944
- onRotateRight(event.detail);
2945
- }));
2946
- }
2947
- if (onFlipHorizontal && $lg && $lg.current) {
2948
- $lg.current.addEventListener(LgMethods.onFlipHorizontal, (function (event) {
2949
- onFlipHorizontal(event.detail);
2950
- }));
2951
- }
2952
- if (onFlipVertical && $lg && $lg.current) {
2953
- $lg.current.addEventListener(LgMethods.onFlipVertical, (function (event) {
2954
- onFlipVertical(event.detail);
2955
- }));
2956
- }
2957
- }, [
2958
- onAfterAppendSlide,
2959
- onAfterAppendSubHtml,
2960
- onAfterClose,
2961
- onRotateLeft,
2962
- onRotateRight,
2963
- onFlipHorizontal,
2964
- onFlipVertical,
2965
- onAfterOpen,
2966
- onAfterSlide,
2967
- onBeforeClose,
2968
- onBeforeNextSlide,
2969
- onBeforeOpen,
2970
- onBeforePrevSlide,
2971
- onBeforeSlide,
2972
- onContainerResize,
2973
- onDragEnd,
2974
- onDragMove,
2975
- onDragStart,
2976
- onHasVideo,
2977
- onInit,
2978
- onPosterClick,
2979
- onSlideItemLoad,
2980
- ]);
2981
- React.useEffect(function () {
2982
- registerEvents();
2983
- var lightGallery$1 = lightGallery($lg.current, restProps);
2984
- return function cleanup() {
2985
- lightGallery$1.destroy();
2986
- };
2987
- }, [registerEvents, restProps]);
2988
- return (React.createElement("div", { className: "lg-react-element " + (elementClassNames ? elementClassNames : ''), ref: $lg }, children));
2989
- };
2990
-
2991
- return LG;
2992
-
2993
- })));
2994
- //# sourceMappingURL=Lightgallery.umd.js.map