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
@@ -0,0 +1,518 @@
1
+ /*!
2
+ * lightgallery | 3.0.0-beta.3 | October 1st 2026
3
+ * http://www.lightgalleryjs.com/
4
+ * Copyright (c) 2020 Sachin Neravath;
5
+ * @license GPLv3
6
+ */
7
+ const videoSettings = {
8
+ autoplayFirstVideo: true,
9
+ videoFacade: true,
10
+ youTubeNoCookie: true,
11
+ youTubePlayerParams: false,
12
+ vimeoPlayerParams: false,
13
+ wistiaPlayerParams: false,
14
+ gotoNextSlideOnVideoEnd: true,
15
+ autoplayVideoOnSlide: false,
16
+ videojs: false,
17
+ videojsTheme: "",
18
+ videojsOptions: {}
19
+ };
20
+ var __defProp$1 = Object.defineProperty;
21
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
22
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
23
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
24
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
25
+ var __spreadValues$1 = (a, b) => {
26
+ for (var prop in b || (b = {}))
27
+ if (__hasOwnProp$1.call(b, prop))
28
+ __defNormalProp$1(a, prop, b[prop]);
29
+ if (__getOwnPropSymbols$1)
30
+ for (var prop of __getOwnPropSymbols$1(b)) {
31
+ if (__propIsEnum$1.call(b, prop))
32
+ __defNormalProp$1(a, prop, b[prop]);
33
+ }
34
+ return a;
35
+ };
36
+ function toParamsObject(params) {
37
+ return typeof params === "object" && params ? params : {};
38
+ }
39
+ function param(obj) {
40
+ return Object.keys(obj).map(
41
+ (key) => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`
42
+ ).join("&");
43
+ }
44
+ function paramsToObject(url) {
45
+ return url.slice(1).split("&").map((pair) => pair.split("=")).reduce((obj, pair) => {
46
+ const [key, value] = pair.map(decodeURIComponent);
47
+ if (key) {
48
+ obj[key] = value != null ? value : "";
49
+ }
50
+ return obj;
51
+ }, {});
52
+ }
53
+ function isYouTubeNoCookie(url) {
54
+ return url.includes("youtube-nocookie.com");
55
+ }
56
+ function getYouTubeEmbedUrl(videoInfo, playerParamsSettings, srcUrl, preferNoCookie = true) {
57
+ if (!videoInfo.youtube) {
58
+ return void 0;
59
+ }
60
+ const slideUrlParams = videoInfo.youtube[2] ? paramsToObject(videoInfo.youtube[2]) : {};
61
+ const params = __spreadValues$1(__spreadValues$1({
62
+ wmode: "opaque",
63
+ autoplay: 0,
64
+ mute: 1,
65
+ enablejsapi: 1
66
+ }, toParamsObject(playerParamsSettings)), slideUrlParams);
67
+ const base = preferNoCookie || isYouTubeNoCookie(srcUrl) ? "//www.youtube-nocookie.com/" : "//www.youtube.com/";
68
+ return `${base}embed/${videoInfo.youtube[1]}?${param(params)}`;
69
+ }
70
+ const VIMEO_PLAYER_SCRIPT_URL = "https://player.vimeo.com/api/player.js";
71
+ const WISTIA_PLAYER_SCRIPT_URL = "https://fast.wistia.com/assets/external/E-v1.js";
72
+ function getVimeoEmbedUrl(videoInfo, playerParamsSettings) {
73
+ if (!videoInfo.vimeo) {
74
+ return void 0;
75
+ }
76
+ let urlParams = videoInfo.vimeo[2] || "";
77
+ const defaultPlayerParams = __spreadValues$1({
78
+ autoplay: 0,
79
+ muted: 1
80
+ }, toParamsObject(playerParamsSettings));
81
+ let defaultParams = param(defaultPlayerParams);
82
+ const urlWithHash = videoInfo.vimeo[0].split("/").pop() || "";
83
+ const urlWithHashWithoutParams = urlWithHash.split("?")[0] || "";
84
+ const hash = urlWithHashWithoutParams.split("#")[0];
85
+ const isPrivate = videoInfo.vimeo[1] !== hash;
86
+ if (isPrivate) {
87
+ urlParams = urlParams.replace(`/${hash}`, "");
88
+ }
89
+ urlParams = urlParams[0] === "?" ? `&${urlParams.slice(1)}` : urlParams || "";
90
+ const privateUrlParams = isPrivate ? `h=${hash}` : "";
91
+ defaultParams = privateUrlParams ? `&${defaultParams}` : defaultParams;
92
+ return `//player.vimeo.com/video/${videoInfo.vimeo[1]}?${privateUrlParams}${defaultParams}${urlParams}`;
93
+ }
94
+ function getWistiaEmbedUrl(videoInfo, playerParamsSettings) {
95
+ if (!videoInfo.wistia) {
96
+ return void 0;
97
+ }
98
+ const paramsObject = toParamsObject(playerParamsSettings);
99
+ const params = Object.keys(paramsObject).length ? param(paramsObject) : "";
100
+ return `//fast.wistia.net/embed/iframe/${videoInfo.wistia[4]}${params ? `?${params}` : ""}`;
101
+ }
102
+ const lGEvents = {
103
+ hasVideo: "lgHasVideo",
104
+ slideItemLoad: "lgSlideItemLoad",
105
+ beforeSlide: "lgBeforeSlide",
106
+ afterSlide: "lgAfterSlide",
107
+ posterClick: "lgPosterClick"
108
+ };
109
+ var __defProp = Object.defineProperty;
110
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
111
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
112
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
113
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
114
+ var __spreadValues = (a, b) => {
115
+ for (var prop in b || (b = {}))
116
+ if (__hasOwnProp.call(b, prop))
117
+ __defNormalProp(a, prop, b[prop]);
118
+ if (__getOwnPropSymbols)
119
+ for (var prop of __getOwnPropSymbols(b)) {
120
+ if (__propIsEnum.call(b, prop))
121
+ __defNormalProp(a, prop, b[prop]);
122
+ }
123
+ return a;
124
+ };
125
+ const providerScriptLoads = {};
126
+ function loadProviderScript(url) {
127
+ if (!providerScriptLoads[url]) {
128
+ providerScriptLoads[url] = new Promise((resolve) => {
129
+ const script = document.createElement("script");
130
+ script.src = url;
131
+ script.async = true;
132
+ script.onload = () => resolve();
133
+ script.onerror = () => resolve();
134
+ document.head.appendChild(script);
135
+ });
136
+ }
137
+ return providerScriptLoads[url];
138
+ }
139
+ class Video {
140
+ constructor(instance) {
141
+ this.core = instance;
142
+ this.settings = __spreadValues(__spreadValues({}, videoSettings), this.core.settings);
143
+ return this;
144
+ }
145
+ init() {
146
+ this.core.LGel.on(
147
+ `${lGEvents.hasVideo}.video`,
148
+ this.onHasVideo.bind(this)
149
+ );
150
+ this.core.LGel.on(`${lGEvents.posterClick}.video`, () => {
151
+ const $el = this.core.getSlideItem(this.core.index);
152
+ this.loadVideoOnPosterClick($el);
153
+ });
154
+ this.core.LGel.on(
155
+ `${lGEvents.slideItemLoad}.video`,
156
+ this.onSlideItemLoad.bind(this)
157
+ );
158
+ this.core.LGel.on(
159
+ `${lGEvents.beforeSlide}.video`,
160
+ this.onBeforeSlide.bind(this)
161
+ );
162
+ this.core.LGel.on(
163
+ `${lGEvents.afterSlide}.video`,
164
+ this.onAfterSlide.bind(this)
165
+ );
166
+ }
167
+ /**
168
+ * @desc Event triggered when a slide is completely loaded
169
+ *
170
+ * @param {Event} event - lightGalley custom event
171
+ */
172
+ onSlideItemLoad(event) {
173
+ const { isFirstSlide, index } = event.detail;
174
+ if (this.settings.autoplayFirstVideo && isFirstSlide && index === this.core.index) {
175
+ setTimeout(() => {
176
+ this.loadAndPlayVideo(index);
177
+ }, 200);
178
+ }
179
+ if (!isFirstSlide && this.settings.autoplayVideoOnSlide && index === this.core.index) {
180
+ this.loadAndPlayVideo(index);
181
+ }
182
+ }
183
+ /**
184
+ * @desc Event triggered when video url or poster found
185
+ * Append video HTML is poster is not given
186
+ * Play if autoplayFirstVideo is true
187
+ *
188
+ * @param {Event} event - Javascript Event object.
189
+ */
190
+ onHasVideo(event) {
191
+ const { index, src, html5Video, hasPoster } = event.detail;
192
+ if (!hasPoster) {
193
+ this.appendVideos(this.core.getSlideItem(index), {
194
+ src,
195
+ addClass: "lg-object",
196
+ index,
197
+ html5Video
198
+ });
199
+ this.gotoNextSlideOnVideoEnd(src, index);
200
+ }
201
+ }
202
+ /**
203
+ * @desc fired immediately before each slide transition.
204
+ * Pause the previous video
205
+ * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.
206
+ *
207
+ * @param {Event} event - Javascript Event object.
208
+ * @param {number} prevIndex - Previous index of the slide.
209
+ * @param {number} index - Current index of the slide
210
+ */
211
+ onBeforeSlide(event) {
212
+ if (this.core.lGalleryOn) {
213
+ const { prevIndex } = event.detail;
214
+ this.pauseVideo(prevIndex);
215
+ }
216
+ }
217
+ /**
218
+ * @desc fired immediately after each slide transition.
219
+ * Play video if autoplayVideoOnSlide option is enabled.
220
+ *
221
+ * @param {Event} event - Javascript Event object.
222
+ * @param {number} prevIndex - Previous index of the slide.
223
+ * @param {number} index - Current index of the slide
224
+ * @todo should check on onSlideLoad as well if video is not loaded on after slide
225
+ */
226
+ onAfterSlide(event) {
227
+ const { index, prevIndex } = event.detail;
228
+ const $slide = this.core.getSlideItem(index);
229
+ if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {
230
+ if ($slide.hasClass("lg-complete")) {
231
+ setTimeout(() => {
232
+ this.loadAndPlayVideo(index);
233
+ }, 100);
234
+ }
235
+ }
236
+ }
237
+ loadAndPlayVideo(index) {
238
+ const $slide = this.core.getSlideItem(index);
239
+ const currentGalleryItem = this.core.galleryItems[index];
240
+ if (currentGalleryItem.poster) {
241
+ this.loadVideoOnPosterClick($slide, true);
242
+ } else {
243
+ this.playVideo(index);
244
+ }
245
+ }
246
+ /**
247
+ * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
248
+ * @param {number} index - Index of the slide
249
+ */
250
+ playVideo(index) {
251
+ this.controlVideo(index, "play");
252
+ }
253
+ /**
254
+ * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
255
+ * @param {number} index - Index of the slide
256
+ */
257
+ pauseVideo(index) {
258
+ this.controlVideo(index, "pause");
259
+ }
260
+ getVideoHtml(src, addClass, index, html5Video) {
261
+ let video = "";
262
+ const videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
263
+ const currentGalleryItem = this.core.galleryItems[index];
264
+ let videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
265
+ videoTitle = videoTitle ? 'title="' + videoTitle + '"' : "";
266
+ const commonIframeProps = `allowtransparency="true"
267
+ frameborder="0"
268
+ scrolling="no"
269
+ allowfullscreen
270
+ mozallowfullscreen
271
+ webkitallowfullscreen
272
+ oallowfullscreen
273
+ msallowfullscreen`;
274
+ if (videoInfo.youtube) {
275
+ const videoId = "lg-youtube" + index;
276
+ const embedUrl = getYouTubeEmbedUrl(
277
+ videoInfo,
278
+ this.settings.youTubePlayerParams,
279
+ src,
280
+ this.settings.youTubeNoCookie
281
+ );
282
+ video = `<iframe allow="autoplay" id=${videoId} class="lg-video-object lg-youtube ${addClass}" ${videoTitle} src="${embedUrl}" ${commonIframeProps}></iframe>`;
283
+ } else if (videoInfo.vimeo) {
284
+ const videoId = "lg-vimeo" + index;
285
+ const embedUrl = getVimeoEmbedUrl(
286
+ videoInfo,
287
+ this.settings.vimeoPlayerParams
288
+ );
289
+ video = `<iframe allow="autoplay" id=${videoId} class="lg-video-object lg-vimeo ${addClass}" ${videoTitle} src="${embedUrl}" ${commonIframeProps}></iframe>`;
290
+ } else if (videoInfo.wistia) {
291
+ const wistiaId = "lg-wistia" + index;
292
+ const embedUrl = getWistiaEmbedUrl(
293
+ videoInfo,
294
+ this.settings.wistiaPlayerParams
295
+ );
296
+ video = `<iframe allow="autoplay" id="${wistiaId}" src="${embedUrl}" ${videoTitle} class="wistia_embed lg-video-object lg-wistia ${addClass}" name="wistia_embed" ${commonIframeProps}></iframe>`;
297
+ } else if (videoInfo.html5) {
298
+ let html5VideoMarkup = "";
299
+ for (let i = 0; i < html5Video.source.length; i++) {
300
+ const type = html5Video.source[i].type;
301
+ const typeAttr = type ? `type="${type}"` : "";
302
+ html5VideoMarkup += `<source src="${html5Video.source[i].src}" ${typeAttr}>`;
303
+ }
304
+ if (html5Video.tracks) {
305
+ for (let i = 0; i < html5Video.tracks.length; i++) {
306
+ let trackAttributes = "";
307
+ const track = html5Video.tracks[i];
308
+ Object.keys(track || {}).forEach(function(key) {
309
+ trackAttributes += `${key}="${track[key]}" `;
310
+ });
311
+ html5VideoMarkup += `<track ${trackAttributes}>`;
312
+ }
313
+ }
314
+ let html5VideoAttrs = "";
315
+ const videoAttributes = html5Video.attributes || {};
316
+ Object.keys(videoAttributes || {}).forEach(function(key) {
317
+ html5VideoAttrs += `${key}="${videoAttributes[key]}" `;
318
+ });
319
+ video = `<video class="lg-video-object lg-html5 ${this.settings.videojs && this.settings.videojsTheme ? this.settings.videojsTheme + " " : ""} ${this.settings.videojs ? " video-js" : ""}" ${html5VideoAttrs}>
320
+ ${html5VideoMarkup}
321
+ Your browser does not support HTML5 video.
322
+ </video>`;
323
+ }
324
+ return video;
325
+ }
326
+ /**
327
+ * @desc - Append videos to the slide
328
+ *
329
+ * @param {HTMLElement} el - slide element
330
+ * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo
331
+ */
332
+ appendVideos(el, videoParams) {
333
+ var _a;
334
+ const videoHtml = this.getVideoHtml(
335
+ videoParams.src,
336
+ videoParams.addClass,
337
+ videoParams.index,
338
+ videoParams.html5Video
339
+ );
340
+ el.find(".lg-video-cont").append(videoHtml);
341
+ const $videoElement = el.find(".lg-video-object").first();
342
+ if (videoParams.html5Video) {
343
+ $videoElement.on("mousedown.lg.video", (e) => {
344
+ e.stopPropagation();
345
+ });
346
+ }
347
+ if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) == null ? void 0 : _a.html5)) {
348
+ try {
349
+ return videojs(
350
+ $videoElement.get(),
351
+ this.settings.videojsOptions
352
+ );
353
+ } catch (e) {
354
+ console.error(
355
+ "lightGallery:- Make sure you have included videojs. See https://www.lightgalleryjs.com/demos/video-gallery/"
356
+ );
357
+ }
358
+ }
359
+ }
360
+ gotoNextSlideOnVideoEnd(src, index) {
361
+ const $videoElement = this.core.getSlideItem(index).find(".lg-video-object").first();
362
+ const videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
363
+ if (this.settings.gotoNextSlideOnVideoEnd) {
364
+ if (videoInfo.html5) {
365
+ $videoElement.on("ended", () => {
366
+ this.core.goToNextSlide();
367
+ });
368
+ } else if (videoInfo.vimeo) {
369
+ this.withVimeoApi(() => {
370
+ new Vimeo.Player($videoElement.get()).on("ended", () => {
371
+ this.core.goToNextSlide();
372
+ });
373
+ });
374
+ } else if (videoInfo.wistia) {
375
+ this.pushWistiaCommand({
376
+ id: $videoElement.attr("id"),
377
+ onReady: (video) => {
378
+ video.bind("end", () => {
379
+ this.core.goToNextSlide();
380
+ });
381
+ }
382
+ });
383
+ }
384
+ }
385
+ }
386
+ /**
387
+ * Run a callback with the Vimeo player API available, loading
388
+ * player.js on demand at first use (lite-embed: no provider script
389
+ * before user intent). Errors keep the 2.x console message.
390
+ */
391
+ withVimeoApi(callback) {
392
+ const run = () => {
393
+ try {
394
+ callback();
395
+ } catch (e) {
396
+ console.error(
397
+ "lightGallery:- Make sure you have included //github.com/vimeo/player.js. See https://www.lightgalleryjs.com/demos/video-gallery/"
398
+ );
399
+ }
400
+ };
401
+ if (window.Vimeo && window.Vimeo.Player) {
402
+ run();
403
+ return;
404
+ }
405
+ loadProviderScript(VIMEO_PLAYER_SCRIPT_URL).then(run);
406
+ }
407
+ /**
408
+ * Queue a Wistia command and load E-v1.js on demand, `_wq` is
409
+ * Wistia's own pre-load command queue, drained when the script lands.
410
+ */
411
+ pushWistiaCommand(command) {
412
+ try {
413
+ window._wq = window._wq || [];
414
+ window._wq.push(command);
415
+ } catch (e) {
416
+ console.error(
417
+ "lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js. See https://www.lightgalleryjs.com/demos/video-gallery/"
418
+ );
419
+ return;
420
+ }
421
+ if (!window.Wistia) {
422
+ loadProviderScript(WISTIA_PLAYER_SCRIPT_URL);
423
+ }
424
+ }
425
+ controlVideo(index, action) {
426
+ const $videoElement = this.core.getSlideItem(index).find(".lg-video-object").first();
427
+ const videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
428
+ if (!$videoElement.get()) return;
429
+ if (videoInfo.youtube) {
430
+ try {
431
+ $videoElement.get().contentWindow.postMessage(
432
+ `{"event":"command","func":"${action}Video","args":""}`,
433
+ "*"
434
+ );
435
+ } catch (e) {
436
+ console.error(`lightGallery:- ${e}`);
437
+ }
438
+ } else if (videoInfo.vimeo) {
439
+ this.withVimeoApi(() => {
440
+ new Vimeo.Player($videoElement.get())[action]();
441
+ });
442
+ } else if (videoInfo.html5) {
443
+ if (this.settings.videojs) {
444
+ try {
445
+ videojs($videoElement.get())[action]();
446
+ } catch (e) {
447
+ console.error(
448
+ "lightGallery:- Make sure you have included videojs. See https://www.lightgalleryjs.com/demos/video-gallery/"
449
+ );
450
+ }
451
+ } else {
452
+ $videoElement.get()[action]();
453
+ }
454
+ } else if (videoInfo.wistia) {
455
+ this.pushWistiaCommand({
456
+ id: $videoElement.attr("id"),
457
+ onReady: (video) => {
458
+ video[action]();
459
+ }
460
+ });
461
+ }
462
+ }
463
+ loadVideoOnPosterClick($el, forcePlay) {
464
+ if (!$el.hasClass("lg-video-loaded")) {
465
+ if (!$el.hasClass("lg-has-video")) {
466
+ $el.addClass("lg-has-video");
467
+ let _html;
468
+ const _src = this.core.galleryItems[this.core.index].src;
469
+ const video = this.core.galleryItems[this.core.index].video;
470
+ if (video) {
471
+ _html = typeof video === "string" ? JSON.parse(video) : video;
472
+ }
473
+ const videoJsPlayer = this.appendVideos($el, {
474
+ src: _src,
475
+ addClass: "",
476
+ index: this.core.index,
477
+ html5Video: _html
478
+ });
479
+ this.gotoNextSlideOnVideoEnd(_src, this.core.index);
480
+ const $tempImg = $el.find(".lg-object").first().get();
481
+ $el.find(".lg-video-cont").first().append($tempImg);
482
+ $el.addClass("lg-video-loading");
483
+ videoJsPlayer && videoJsPlayer.ready(() => {
484
+ videoJsPlayer.on("loadedmetadata", () => {
485
+ this.onVideoLoadAfterPosterClick(
486
+ $el,
487
+ this.core.index
488
+ );
489
+ });
490
+ });
491
+ $el.find(".lg-video-object").first().on("load.lg error.lg loadedmetadata.lg", () => {
492
+ setTimeout(() => {
493
+ this.onVideoLoadAfterPosterClick(
494
+ $el,
495
+ this.core.index
496
+ );
497
+ }, 50);
498
+ });
499
+ } else {
500
+ this.playVideo(this.core.index);
501
+ }
502
+ } else if (forcePlay) {
503
+ this.playVideo(this.core.index);
504
+ }
505
+ }
506
+ onVideoLoadAfterPosterClick($el, index) {
507
+ $el.addClass("lg-video-loaded");
508
+ this.playVideo(index);
509
+ }
510
+ destroy() {
511
+ this.core.LGel.off(".lg.video");
512
+ this.core.LGel.off(".video");
513
+ }
514
+ }
515
+ export {
516
+ Video as default
517
+ };
518
+ //# sourceMappingURL=lg-video.es5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lg-video.es5.js","sources":["../../../src/plugins/video/lg-video-settings.ts","../../../packages/headless/src/video-urls.ts","../../../src/lg-events.ts","../../../src/plugins/video/lg-video.ts"],"sourcesContent":["import { PlayerParams } from '@lightgallery/headless';\n\nexport interface VideoSettings {\n /**\n * Enable/DIsable first video autoplay.\n * @description Autoplay has to be managed using this setting.\n * Autoplay in PlayerParams doesn't have any effect.\n */\n autoplayFirstVideo: boolean;\n\n /**\n * Render provider video slides (YouTube/Vimeo/Wistia) as lite facades:\n * a poster with a play button, with the provider iframe created only\n * when the user presses play.\n * @description The facade poster falls back from the item poster to\n * the YouTube thumbnail endpoint (see loadYouTubePoster) to the item\n * thumb; a slide with no resolvable poster keeps the previous\n * eager-iframe behavior. Note autoplayFirstVideo/autoplayVideoOnSlide\n * force an immediate materialize by design. Set false for 2.x\n * eager-iframe behavior on all provider slides.\n * See <a href=\"/docs/video-facades/\">Video facades</a>.\n * @version V3.0.0\n */\n videoFacade: boolean;\n\n /**\n * Embed YouTube videos through the privacy-enhanced\n * youtube-nocookie.com host.\n * @description Set false to embed through youtube.com instead. Slide\n * URLs that already point at youtube-nocookie.com always keep it.\n * See <a href=\"/docs/video-facades/\">Video facades</a>.\n * @version V3.0.0\n */\n youTubeNoCookie: boolean;\n\n /**\n * Change YouTube player parameters.\n * You can find the list of YouTube player parameters from the following link\n * <a href=\"https://developers.google.com/youtube/player_parameters\">YouTube player parameters</a>\n * @example\n * lightGallery(document.getElementById('lightGallery'), {\n * youTubePlayerParams: {\n * modestbranding : 1,\n * showinfo : 0,\n * controls : 0\n * }\n * })\n */\n youTubePlayerParams: any;\n\n /**\n * Change Vimeo player parameters.\n * You can find the list of vimeo player parameters from the following link\n * <a href=\"https://developer.vimeo.com/player/embedding#universal-parameters\">Vimeo player parameters</a>\n * @example\n * lightGallery(document.getElementById('lightGallery'), {\n * vimeoPlayerParams: {\n * byline : 0,\n * portrait : 0,\n * color : 'CCCCCC'\n * }\n * })\n */\n vimeoPlayerParams: PlayerParams;\n\n /**\n * Change Wistia player parameters.\n * You can find the list of Wistia player parameters from the following link\n * <a href=\"https://wistia.com/support/developers/embed-options#using-embed-options\">Vimeo player parameters</a>\n */\n wistiaPlayerParams: any;\n\n /**\n * Go to next slide when video is ended\n * Note - this doesn't work with YouTube videos at the moment\n */\n gotoNextSlideOnVideoEnd: boolean;\n\n /**\n * Autoplay video on slide change\n * @description Make sure you set preload:\"none\"\n */\n autoplayVideoOnSlide: boolean;\n\n /**\n * Enbale videojs custom video player\n * <div class=\"alert alert-info\" role=\"alert\">\n * <b>Dependency</b> - You need to include <a href=\"https://videojs.com/\">videoJs</a> on your document to enable videojs player\n * </div>\n */\n videojs: boolean;\n\n /**\n * Class name of the videojs theme\n * You need to include the theme stylesheet on your document. <a href=\"https://videojs.com/getting-started/#home-page-themes\" target=\"_blank\">More info</a>\n * @version V2.5.0\n */\n videojsTheme: string;\n\n /**\n * Videojs player options\n */\n videojsOptions: any;\n}\nexport const videoSettings: VideoSettings = {\n autoplayFirstVideo: true,\n videoFacade: true,\n youTubeNoCookie: true,\n youTubePlayerParams: false,\n vimeoPlayerParams: false,\n wistiaPlayerParams: false,\n gotoNextSlideOnVideoEnd: true,\n autoplayVideoOnSlide: false,\n videojs: false,\n videojsTheme: '',\n videojsOptions: {},\n};\n","/**\n * Video URL detection and embed-URL builders, ported from 2.x\n * `utils.isVideo` (`src/lg-utils.ts`) and `lg-video-utils.ts` as pure\n * functions. The video plugin renders the returned URLs; nothing here\n * touches the DOM.\n */\n\nexport interface VideoInfo {\n /** RegExp match parts: `[match, videoId, urlParams?]`. */\n youtube?: string[];\n vimeo?: string[];\n /** RegExp match parts; index 4 is the media id. */\n wistia?: string[];\n html5?: boolean;\n}\n\n// `true` is accepted for 2.x-contract compatibility and means the same\n// as an empty params object.\nexport type PlayerParams = Record<string, string | number | boolean> | boolean;\n\nfunction toParamsObject(\n params: PlayerParams,\n): Record<string, string | number | boolean> {\n return typeof params === 'object' && params ? params : {};\n}\n\n/** Detect the video provider for a src URL (2.x `utils.isVideo`). */\nexport function getVideoInfo(\n src: string | undefined,\n hasHtml5Video: boolean,\n): VideoInfo | undefined {\n if (!src) {\n return hasHtml5Video ? { html5: true } : undefined;\n }\n const youtube = src.match(\n /\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-_%]+)([&|?][\\S]*)*/i,\n );\n if (youtube) {\n return { youtube: [...youtube] };\n }\n const vimeo = src.match(\n /\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i,\n );\n if (vimeo) {\n return { vimeo: [...vimeo] };\n }\n const wistia = src.match(\n /https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/,\n );\n if (wistia) {\n return { wistia: [...wistia] };\n }\n return hasHtml5Video ? { html5: true } : undefined;\n}\n\n/** Serialize params as a query string (2.x `param`). */\nexport function param(obj: Record<string, string | number | boolean>): string {\n return Object.keys(obj)\n .map(\n (key) =>\n `${encodeURIComponent(key)}=${encodeURIComponent(obj[key]!)}`,\n )\n .join('&');\n}\n\n/** Parse `?a=b&c=d` into an object (2.x `paramsToObject`). */\nexport function paramsToObject(url: string): Record<string, string> {\n return url\n .slice(1)\n .split('&')\n .map((pair) => pair.split('='))\n .reduce<Record<string, string>>((obj, pair) => {\n const [key, value] = pair.map(decodeURIComponent);\n if (key) {\n obj[key] = value ?? '';\n }\n return obj;\n }, {});\n}\n\nexport function isYouTubeNoCookie(url: string): boolean {\n return url.includes('youtube-nocookie.com');\n}\n\n/**\n * YouTube embed URL. Precedence (2.x parity): defaults < settings < params\n * already present on the slide URL. The privacy-enhanced\n * `youtube-nocookie.com` host is the default; pass `preferNoCookie: false`\n * (the `youTubeNoCookie` setting) to revert to `youtube.com`. A slide URL\n * that already names the nocookie host always keeps it.\n */\nexport function getYouTubeEmbedUrl(\n videoInfo: VideoInfo,\n playerParamsSettings: PlayerParams,\n srcUrl: string,\n preferNoCookie = true,\n): string | undefined {\n if (!videoInfo.youtube) {\n return undefined;\n }\n const slideUrlParams = videoInfo.youtube[2]\n ? paramsToObject(videoInfo.youtube[2])\n : {};\n const params = {\n wmode: 'opaque',\n autoplay: 0,\n mute: 1,\n enablejsapi: 1,\n ...toParamsObject(playerParamsSettings),\n ...slideUrlParams,\n };\n const base =\n preferNoCookie || isYouTubeNoCookie(srcUrl)\n ? '//www.youtube-nocookie.com/'\n : '//www.youtube.com/';\n return `${base}embed/${videoInfo.youtube[1]}?${param(params)}`;\n}\n\n/**\n * YouTube's public thumbnail endpoint for a detected video — the one\n * provider poster that needs no API call. (Vimeo/Wistia poster endpoints\n * require a fetch/auth, so their facades rely on the item's own\n * poster/thumb — see getFacadePoster.)\n */\nexport function getYouTubePosterUrl(\n videoInfo: VideoInfo | undefined,\n): string | undefined {\n if (!videoInfo?.youtube) {\n return undefined;\n }\n return `//img.youtube.com/vi/${videoInfo.youtube[1]}/maxresdefault.jpg`;\n}\n\n/**\n * Poster for a provider-video facade (lite embed): the explicit item\n * poster wins, then the YouTube thumbnail endpoint (when enabled), then\n * the item's grid thumb — for Vimeo galleries the vimeoThumbnail plugin\n * rewrites `thumb` to the oEmbed thumbnail, which feeds this chain.\n * HTML5 slides never get a synthesized poster (unchanged 2.x behavior);\n * a provider slide with no resolvable poster returns undefined and keeps\n * the eager-iframe path.\n */\nexport function getFacadePoster(\n item: { poster?: string; thumb?: string },\n videoInfo: VideoInfo | undefined,\n loadYouTubePoster: boolean,\n): string | undefined {\n if (!videoInfo || videoInfo.html5) {\n return item.poster || undefined;\n }\n return (\n item.poster ||\n (loadYouTubePoster ? getYouTubePosterUrl(videoInfo) : undefined) ||\n item.thumb ||\n undefined\n );\n}\n\n/**\n * Provider player-API script URLs, loaded on demand at first play (the\n * vanilla runtime's control paths need them; the framework bindings drive\n * players via postMessage and load nothing).\n */\nexport const VIMEO_PLAYER_SCRIPT_URL = 'https://player.vimeo.com/api/player.js';\nexport const WISTIA_PLAYER_SCRIPT_URL =\n 'https://fast.wistia.com/assets/external/E-v1.js';\n\n/**\n * Vimeo embed URL, including the private-video hash handling (2.x\n * `getVimeoURLParams`).\n */\nexport function getVimeoEmbedUrl(\n videoInfo: VideoInfo,\n playerParamsSettings: PlayerParams,\n): string | undefined {\n if (!videoInfo.vimeo) {\n return undefined;\n }\n let urlParams = videoInfo.vimeo[2] || '';\n const defaultPlayerParams = {\n autoplay: 0,\n muted: 1,\n ...toParamsObject(playerParamsSettings),\n };\n let defaultParams = param(defaultPlayerParams);\n\n // Private videos carry a hash as the last path segment.\n const urlWithHash = videoInfo.vimeo[0]!.split('/').pop() || '';\n const urlWithHashWithoutParams = urlWithHash.split('?')[0] || '';\n const hash = urlWithHashWithoutParams.split('#')[0]!;\n const isPrivate = videoInfo.vimeo[1] !== hash;\n if (isPrivate) {\n urlParams = urlParams.replace(`/${hash}`, '');\n }\n urlParams =\n urlParams[0] === '?' ? `&${urlParams.slice(1)}` : urlParams || '';\n const privateUrlParams = isPrivate ? `h=${hash}` : '';\n defaultParams = privateUrlParams ? `&${defaultParams}` : defaultParams;\n\n return `//player.vimeo.com/video/${videoInfo.vimeo[1]}?${privateUrlParams}${defaultParams}${urlParams}`;\n}\n\n/** Wistia embed URL. */\nexport function getWistiaEmbedUrl(\n videoInfo: VideoInfo,\n playerParamsSettings: PlayerParams,\n): string | undefined {\n if (!videoInfo.wistia) {\n return undefined;\n }\n const paramsObject = toParamsObject(playerParamsSettings);\n const params = Object.keys(paramsObject).length ? param(paramsObject) : '';\n return `//fast.wistia.net/embed/iframe/${videoInfo.wistia[4]}${\n params ? `?${params}` : ''\n }`;\n}\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods/\">Methods</a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","/**\n * Video module for lightGallery\n * Supports HTML5, YouTube, Vimeo, wistia videos\n *\n *\n * @ref Wistia\n * https://wistia.com/support/integrations/wordpress(How to get url)\n * https://wistia.com/support/developers/embed-options#using-embed-options\n * https://wistia.com/support/developers/player-api\n * https://wistia.com/support/developers/construct-an-embed-code\n * http://jsfiddle.net/xvnm7xLm/\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video\n * https://wistia.com/support/embed-and-share/sharing-videos\n * https://private-sharing.wistia.com/medias/mwhrulrucj\n *\n * @ref Youtube\n * https://developers.google.com/youtube/player_parameters#enablejsapi\n * https://developers.google.com/youtube/iframe_api_reference\n * https://developer.chrome.com/blog/autoplay/#iframe-delegation\n *\n * @ref Vimeo\n * https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url\n * https://vimeo.zendesk.com/hc/en-us/articles/360000121668-Starting-playback-at-a-specific-timecode\n * https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters\n */\n\nimport { VideoSettings, videoSettings } from './lg-video-settings';\nimport { LightGallery } from '../../lightgallery';\nimport { lgQuery } from '../../lgQuery';\nimport {\n CustomEventAfterSlide,\n CustomEventHasVideo,\n CustomEventSlideItemLoad,\n VideoInfo,\n} from '../../types';\nimport {\n VIMEO_PLAYER_SCRIPT_URL,\n WISTIA_PLAYER_SCRIPT_URL,\n getVimeoEmbedUrl,\n getWistiaEmbedUrl,\n getYouTubeEmbedUrl,\n} from '@lightgallery/headless';\n\nimport { lGEvents } from '../../lg-events';\nimport { VideoSource } from './types';\n\ndeclare let Vimeo: any;\ndeclare let videojs: any;\ndeclare global {\n interface Window {\n _wq: any;\n Vimeo: any;\n Wistia: any;\n }\n}\n\n// One in-flight/settled promise per provider script URL, page-wide, the\n// player APIs load on demand at first play (lite-embed) instead of being\n// a documented include for the integrator. Never rejects: consumers check\n// the provider global afterwards, matching the old error-log behavior.\nconst providerScriptLoads: { [url: string]: Promise<void> } = {};\nfunction loadProviderScript(url: string): Promise<void> {\n if (!providerScriptLoads[url]) {\n providerScriptLoads[url] = new Promise((resolve) => {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.onload = () => resolve();\n script.onerror = () => resolve();\n document.head.appendChild(script);\n });\n }\n return providerScriptLoads[url];\n}\nexport default class Video {\n private core: LightGallery;\n private settings: VideoSettings;\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.settings = { ...videoSettings, ...this.core.settings };\n\n return this;\n }\n init() {\n /**\n * Event triggered when video url found without poster\n * Append video HTML\n * Play if autoplayFirstVideo is true\n */\n this.core.LGel.on(\n `${lGEvents.hasVideo}.video`,\n this.onHasVideo.bind(this),\n );\n\n this.core.LGel.on(`${lGEvents.posterClick}.video`, () => {\n const $el = this.core.getSlideItem(this.core.index);\n this.loadVideoOnPosterClick($el);\n });\n this.core.LGel.on(\n `${lGEvents.slideItemLoad}.video`,\n this.onSlideItemLoad.bind(this),\n );\n\n // @desc fired immediately before each slide transition.\n this.core.LGel.on(\n `${lGEvents.beforeSlide}.video`,\n this.onBeforeSlide.bind(this),\n );\n\n // @desc fired immediately after each slide transition.\n this.core.LGel.on(\n `${lGEvents.afterSlide}.video`,\n this.onAfterSlide.bind(this),\n );\n }\n\n /**\n * @desc Event triggered when a slide is completely loaded\n *\n * @param {Event} event - lightGalley custom event\n */\n onSlideItemLoad(event: CustomEventSlideItemLoad): void {\n const { isFirstSlide, index } = event.detail;\n\n // Should check the active slide as well as user may have moved to different slide before the first slide is loaded\n if (\n this.settings.autoplayFirstVideo &&\n isFirstSlide &&\n index === this.core.index\n ) {\n // Delay is just for the transition effect on video load\n setTimeout(() => {\n this.loadAndPlayVideo(index);\n }, 200);\n }\n\n // Should not call on first slide. should check only if the slide is active\n if (\n !isFirstSlide &&\n this.settings.autoplayVideoOnSlide &&\n index === this.core.index\n ) {\n this.loadAndPlayVideo(index);\n }\n }\n\n /**\n * @desc Event triggered when video url or poster found\n * Append video HTML is poster is not given\n * Play if autoplayFirstVideo is true\n *\n * @param {Event} event - Javascript Event object.\n */\n onHasVideo(event: CustomEventHasVideo): void {\n const { index, src, html5Video, hasPoster } = event.detail;\n if (!hasPoster) {\n // All functions are called separately if poster exist in loadVideoOnPosterClick function\n\n this.appendVideos(this.core.getSlideItem(index), {\n src,\n addClass: 'lg-object',\n index,\n html5Video,\n });\n\n // Automatically navigate to next slide once video reaches the end.\n this.gotoNextSlideOnVideoEnd(src, index);\n }\n }\n\n /**\n * @desc fired immediately before each slide transition.\n * Pause the previous video\n * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.\n *\n * @param {Event} event - Javascript Event object.\n * @param {number} prevIndex - Previous index of the slide.\n * @param {number} index - Current index of the slide\n */\n onBeforeSlide(event: CustomEvent): void {\n if (this.core.lGalleryOn) {\n const { prevIndex } = event.detail;\n this.pauseVideo(prevIndex);\n }\n }\n\n /**\n * @desc fired immediately after each slide transition.\n * Play video if autoplayVideoOnSlide option is enabled.\n *\n * @param {Event} event - Javascript Event object.\n * @param {number} prevIndex - Previous index of the slide.\n * @param {number} index - Current index of the slide\n * @todo should check on onSlideLoad as well if video is not loaded on after slide\n */\n onAfterSlide(event: CustomEventAfterSlide): void {\n const { index, prevIndex } = event.detail;\n // Do not call on first slide\n const $slide = this.core.getSlideItem(index);\n if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {\n if ($slide.hasClass('lg-complete')) {\n setTimeout(() => {\n this.loadAndPlayVideo(index);\n }, 100);\n }\n }\n }\n\n loadAndPlayVideo(index: number): void {\n const $slide = this.core.getSlideItem(index);\n const currentGalleryItem = this.core.galleryItems[index];\n if (currentGalleryItem.poster) {\n this.loadVideoOnPosterClick($slide, true);\n } else {\n this.playVideo(index);\n }\n }\n\n /**\n * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.\n * @param {number} index - Index of the slide\n */\n playVideo(index: number) {\n this.controlVideo(index, 'play');\n }\n\n /**\n * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.\n * @param {number} index - Index of the slide\n */\n pauseVideo(index: number) {\n this.controlVideo(index, 'pause');\n }\n\n getVideoHtml(\n src: any,\n addClass: any,\n index: number,\n html5Video: VideoSource,\n ): string {\n let video = '';\n const videoInfo =\n this.core.galleryItems[index as unknown as number]\n .__slideVideoInfo || {};\n const currentGalleryItem = this.core.galleryItems[index];\n let videoTitle = currentGalleryItem.title || currentGalleryItem.alt;\n videoTitle = videoTitle ? 'title=\"' + videoTitle + '\"' : '';\n const commonIframeProps = `allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen`;\n\n if (videoInfo.youtube) {\n const videoId = 'lg-youtube' + index;\n\n const embedUrl = getYouTubeEmbedUrl(\n videoInfo,\n this.settings.youTubePlayerParams,\n src,\n this.settings.youTubeNoCookie,\n );\n\n video = `<iframe allow=\"autoplay\" id=${videoId} class=\"lg-video-object lg-youtube ${addClass}\" ${videoTitle} src=\"${embedUrl}\" ${commonIframeProps}></iframe>`;\n } else if (videoInfo.vimeo) {\n const videoId = 'lg-vimeo' + index;\n const embedUrl = getVimeoEmbedUrl(\n videoInfo,\n this.settings.vimeoPlayerParams,\n );\n video = `<iframe allow=\"autoplay\" id=${videoId} class=\"lg-video-object lg-vimeo ${addClass}\" ${videoTitle} src=\"${embedUrl}\" ${commonIframeProps}></iframe>`;\n } else if (videoInfo.wistia) {\n const wistiaId = 'lg-wistia' + index;\n const embedUrl = getWistiaEmbedUrl(\n videoInfo,\n this.settings.wistiaPlayerParams,\n );\n video = `<iframe allow=\"autoplay\" id=\"${wistiaId}\" src=\"${embedUrl}\" ${videoTitle} class=\"wistia_embed lg-video-object lg-wistia ${addClass}\" name=\"wistia_embed\" ${commonIframeProps}></iframe>`;\n } else if (videoInfo.html5) {\n let html5VideoMarkup = '';\n for (let i = 0; i < html5Video.source.length; i++) {\n const type = html5Video.source[i].type;\n const typeAttr = type ? `type=\"${type}\"` : '';\n html5VideoMarkup += `<source src=\"${html5Video.source[i].src}\" ${typeAttr}>`;\n }\n if (html5Video.tracks) {\n for (let i = 0; i < html5Video.tracks.length; i++) {\n let trackAttributes = '';\n const track = html5Video.tracks[i];\n Object.keys(track || {}).forEach(function (key) {\n trackAttributes += `${key}=\"${(track as any)[key]}\" `;\n });\n html5VideoMarkup += `<track ${trackAttributes}>`;\n }\n }\n\n let html5VideoAttrs = '';\n const videoAttributes = html5Video.attributes || {};\n Object.keys(videoAttributes || {}).forEach(function (key) {\n html5VideoAttrs += `${key}=\"${(videoAttributes as any)[key]}\" `;\n });\n video = `<video class=\"lg-video-object lg-html5 ${\n this.settings.videojs && this.settings.videojsTheme\n ? this.settings.videojsTheme + ' '\n : ''\n } ${this.settings.videojs ? ' video-js' : ''}\" ${html5VideoAttrs}>\n ${html5VideoMarkup}\n Your browser does not support HTML5 video.\n </video>`;\n }\n\n return video;\n }\n\n /**\n * @desc - Append videos to the slide\n *\n * @param {HTMLElement} el - slide element\n * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo\n */\n appendVideos(\n el: lgQuery,\n videoParams: {\n src: string;\n addClass: string;\n index: number;\n html5Video: any;\n },\n ): any {\n const videoHtml = this.getVideoHtml(\n videoParams.src,\n videoParams.addClass,\n videoParams.index,\n videoParams.html5Video,\n );\n el.find('.lg-video-cont').append(videoHtml);\n const $videoElement = el.find('.lg-video-object').first();\n if (videoParams.html5Video) {\n $videoElement.on('mousedown.lg.video', (e) => {\n e.stopPropagation();\n });\n }\n if (\n this.settings.videojs &&\n this.core.galleryItems[videoParams.index].__slideVideoInfo?.html5\n ) {\n try {\n return videojs(\n $videoElement.get(),\n this.settings.videojsOptions,\n );\n } catch (e) {\n console.error(\n 'lightGallery:- Make sure you have included videojs. See https://www.lightgalleryjs.com/demos/video-gallery/',\n );\n }\n }\n }\n\n gotoNextSlideOnVideoEnd(src: any, index: number) {\n const $videoElement = this.core\n .getSlideItem(index)\n .find('.lg-video-object')\n .first();\n const videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};\n if (this.settings.gotoNextSlideOnVideoEnd) {\n if (videoInfo.html5) {\n $videoElement.on('ended', () => {\n this.core.goToNextSlide();\n });\n } else if (videoInfo.vimeo) {\n // https://github.com/vimeo/player.js/#ended\n this.withVimeoApi(() => {\n new Vimeo.Player($videoElement.get()).on('ended', () => {\n this.core.goToNextSlide();\n });\n });\n } else if (videoInfo.wistia) {\n // @todo Event is gettign triggered multiple times\n this.pushWistiaCommand({\n id: $videoElement.attr('id'),\n onReady: (video: {\n bind: (arg0: string, arg1: () => void) => void;\n }) => {\n video.bind('end', () => {\n this.core.goToNextSlide();\n });\n },\n });\n }\n }\n }\n\n /**\n * Run a callback with the Vimeo player API available, loading\n * player.js on demand at first use (lite-embed: no provider script\n * before user intent). Errors keep the 2.x console message.\n */\n private withVimeoApi(callback: () => void): void {\n const run = () => {\n try {\n callback();\n } catch (e) {\n console.error(\n 'lightGallery:- Make sure you have included //github.com/vimeo/player.js. See https://www.lightgalleryjs.com/demos/video-gallery/',\n );\n }\n };\n if (window.Vimeo && window.Vimeo.Player) {\n run();\n return;\n }\n loadProviderScript(VIMEO_PLAYER_SCRIPT_URL).then(run);\n }\n\n /**\n * Queue a Wistia command and load E-v1.js on demand, `_wq` is\n * Wistia's own pre-load command queue, drained when the script lands.\n */\n private pushWistiaCommand(command: unknown): void {\n try {\n window._wq = window._wq || [];\n window._wq.push(command);\n } catch (e) {\n console.error(\n 'lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js. See https://www.lightgalleryjs.com/demos/video-gallery/',\n );\n return;\n }\n if (!window.Wistia) {\n loadProviderScript(WISTIA_PLAYER_SCRIPT_URL);\n }\n }\n\n controlVideo(index: number, action: string) {\n const $videoElement = this.core\n .getSlideItem(index)\n .find('.lg-video-object')\n .first();\n const videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};\n\n if (!$videoElement.get()) return;\n\n if (videoInfo.youtube) {\n try {\n ($videoElement.get() as any).contentWindow.postMessage(\n `{\"event\":\"command\",\"func\":\"${action}Video\",\"args\":\"\"}`,\n '*',\n );\n } catch (e) {\n console.error(`lightGallery:- ${e}`);\n }\n } else if (videoInfo.vimeo) {\n this.withVimeoApi(() => {\n new Vimeo.Player($videoElement.get())[action]();\n });\n } else if (videoInfo.html5) {\n if (this.settings.videojs) {\n try {\n (videojs($videoElement.get()) as any)[action as any]();\n } catch (e) {\n console.error(\n 'lightGallery:- Make sure you have included videojs. See https://www.lightgalleryjs.com/demos/video-gallery/',\n );\n }\n } else {\n ($videoElement.get() as any)[action]();\n }\n } else if (videoInfo.wistia) {\n // @todo Find a way to destroy wistia player instance\n this.pushWistiaCommand({\n id: $videoElement.attr('id'),\n onReady: (video: any) => {\n video[action]();\n },\n });\n }\n }\n\n loadVideoOnPosterClick($el: lgQuery, forcePlay?: boolean): void {\n // check slide has poster\n if (!$el.hasClass('lg-video-loaded')) {\n // check already video element present\n if (!$el.hasClass('lg-has-video')) {\n $el.addClass('lg-has-video');\n\n let _html;\n\n const _src = this.core.galleryItems[this.core.index].src;\n const video = this.core.galleryItems[this.core.index].video;\n if (video) {\n _html =\n typeof video === 'string' ? JSON.parse(video) : video;\n }\n\n const videoJsPlayer = this.appendVideos($el, {\n src: _src as string,\n addClass: '',\n index: this.core.index,\n html5Video: _html,\n });\n\n this.gotoNextSlideOnVideoEnd(_src, this.core.index);\n\n const $tempImg = $el.find('.lg-object').first().get();\n\n // @todo make sure it is working\n $el.find('.lg-video-cont').first().append($tempImg);\n $el.addClass('lg-video-loading');\n\n videoJsPlayer &&\n videoJsPlayer.ready(() => {\n videoJsPlayer.on('loadedmetadata', () => {\n this.onVideoLoadAfterPosterClick(\n $el,\n this.core.index,\n );\n });\n });\n\n $el.find('.lg-video-object')\n .first()\n .on('load.lg error.lg loadedmetadata.lg', () => {\n setTimeout(() => {\n this.onVideoLoadAfterPosterClick(\n $el,\n this.core.index,\n );\n }, 50);\n });\n } else {\n this.playVideo(this.core.index);\n }\n } else if (forcePlay) {\n this.playVideo(this.core.index);\n }\n }\n onVideoLoadAfterPosterClick($el: lgQuery, index: number): void {\n $el.addClass('lg-video-loaded');\n this.playVideo(index);\n }\n destroy(): void {\n this.core.LGel.off('.lg.video');\n this.core.LGel.off('.video');\n }\n}\n"],"names":["__spreadValues"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).lgVideo=t()}(this,function(){"use strict";const e={autoplayFirstVideo:!0,videoFacade:!0,youTubeNoCookie:!0,youTubePlayerParams:!1,vimeoPlayerParams:!1,wistiaPlayerParams:!1,gotoNextSlideOnVideoEnd:!0,autoplayVideoOnSlide:!1,videojs:!1,videojsTheme:"",videojsOptions:{}};var t=Object.defineProperty,o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,l=(e,o,i)=>o in e?t(e,o,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[o]=i,n=(e,t)=>{for(var n in t||(t={}))i.call(t,n)&&l(e,n,t[n]);if(o)for(var n of o(t))s.call(t,n)&&l(e,n,t[n]);return e};function d(e){return"object"==typeof e&&e?e:{}}function r(e){return Object.keys(e).map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`).join("&")}function a(e,t,o,i=!0){if(!e.youtube)return;const s=e.youtube[2]?e.youtube[2].slice(1).split("&").map(e=>e.split("=")).reduce((e,t)=>{const[o,i]=t.map(decodeURIComponent);return o&&(e[o]=null!=i?i:""),e},{}):{};const l=n(n({wmode:"opaque",autoplay:0,mute:1,enablejsapi:1},d(t)),s),a=i||function(e){return e.includes("youtube-nocookie.com")}(o)?"//www.youtube-nocookie.com/":"//www.youtube.com/";return`${a}embed/${e.youtube[1]}?${r(l)}`}const c="lgHasVideo",h="lgSlideItemLoad",u="lgBeforeSlide",m="lgAfterSlide",g="lgPosterClick";var y=Object.defineProperty,p=Object.getOwnPropertySymbols,f=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable,w=(e,t,o)=>t in e?y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,b=(e,t)=>{for(var o in t||(t={}))f.call(t,o)&&w(e,o,t[o]);if(p)for(var o of p(t))v.call(t,o)&&w(e,o,t[o]);return e};const V={};function $(e){return V[e]||(V[e]=new Promise(t=>{const o=document.createElement("script");o.src=e,o.async=!0,o.onload=()=>t(),o.onerror=()=>t(),document.head.appendChild(o)})),V[e]}return class{constructor(t){return this.core=t,this.settings=b(b({},e),this.core.settings),this}init(){this.core.LGel.on(`${c}.video`,this.onHasVideo.bind(this)),this.core.LGel.on(`${g}.video`,()=>{const e=this.core.getSlideItem(this.core.index);this.loadVideoOnPosterClick(e)}),this.core.LGel.on(`${h}.video`,this.onSlideItemLoad.bind(this)),this.core.LGel.on(`${u}.video`,this.onBeforeSlide.bind(this)),this.core.LGel.on(`${m}.video`,this.onAfterSlide.bind(this))}onSlideItemLoad(e){const{isFirstSlide:t,index:o}=e.detail;this.settings.autoplayFirstVideo&&t&&o===this.core.index&&setTimeout(()=>{this.loadAndPlayVideo(o)},200),!t&&this.settings.autoplayVideoOnSlide&&o===this.core.index&&this.loadAndPlayVideo(o)}onHasVideo(e){const{index:t,src:o,html5Video:i,hasPoster:s}=e.detail;s||(this.appendVideos(this.core.getSlideItem(t),{src:o,addClass:"lg-object",index:t,html5Video:i}),this.gotoNextSlideOnVideoEnd(o,t))}onBeforeSlide(e){if(this.core.lGalleryOn){const{prevIndex:t}=e.detail;this.pauseVideo(t)}}onAfterSlide(e){const{index:t,prevIndex:o}=e.detail,i=this.core.getSlideItem(t);this.settings.autoplayVideoOnSlide&&t!==o&&i.hasClass("lg-complete")&&setTimeout(()=>{this.loadAndPlayVideo(t)},100)}loadAndPlayVideo(e){const t=this.core.getSlideItem(e);this.core.galleryItems[e].poster?this.loadVideoOnPosterClick(t,!0):this.playVideo(e)}playVideo(e){this.controlVideo(e,"play")}pauseVideo(e){this.controlVideo(e,"pause")}getVideoHtml(e,t,o,i){let s="";const l=this.core.galleryItems[o].__slideVideoInfo||{},c=this.core.galleryItems[o];let h=c.title||c.alt;h=h?'title="'+h+'"':"";const u='allowtransparency="true"\n frameborder="0"\n scrolling="no"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen';if(l.youtube){s=`<iframe allow="autoplay" id=${"lg-youtube"+o} class="lg-video-object lg-youtube ${t}" ${h} src="${a(l,this.settings.youTubePlayerParams,e,this.settings.youTubeNoCookie)}" ${u}></iframe>`}else if(l.vimeo){const e="lg-vimeo"+o,i=function(e,t){if(!e.vimeo)return;let o=e.vimeo[2]||"",i=r(n({autoplay:0,muted:1},d(t)));const s=((e.vimeo[0].split("/").pop()||"").split("?")[0]||"").split("#")[0],l=e.vimeo[1]!==s;l&&(o=o.replace(`/${s}`,"")),o="?"===o[0]?`&${o.slice(1)}`:o||"";const a=l?`h=${s}`:"";return i=a?`&${i}`:i,`//player.vimeo.com/video/${e.vimeo[1]}?${a}${i}${o}`}(l,this.settings.vimeoPlayerParams);s=`<iframe allow="autoplay" id=${e} class="lg-video-object lg-vimeo ${t}" ${h} src="${i}" ${u}></iframe>`}else if(l.wistia){const e="lg-wistia"+o,i=function(e,t){if(!e.wistia)return;const o=d(t),i=Object.keys(o).length?r(o):"";return`//fast.wistia.net/embed/iframe/${e.wistia[4]}${i?`?${i}`:""}`}(l,this.settings.wistiaPlayerParams);s=`<iframe allow="autoplay" id="${e}" src="${i}" ${h} class="wistia_embed lg-video-object lg-wistia ${t}" name="wistia_embed" ${u}></iframe>`}else if(l.html5){let e="";for(let s=0;s<i.source.length;s++){const t=i.source[s].type,o=t?`type="${t}"`:"";e+=`<source src="${i.source[s].src}" ${o}>`}if(i.tracks)for(let s=0;s<i.tracks.length;s++){let t="";const o=i.tracks[s];Object.keys(o||{}).forEach(function(e){t+=`${e}="${o[e]}" `}),e+=`<track ${t}>`}let t="";const o=i.attributes||{};Object.keys(o||{}).forEach(function(e){t+=`${e}="${o[e]}" `}),s=`<video class="lg-video-object lg-html5 ${this.settings.videojs&&this.settings.videojsTheme?this.settings.videojsTheme+" ":""} ${this.settings.videojs?" video-js":""}" ${t}>\n ${e}\n Your browser does not support HTML5 video.\n </video>`}return s}appendVideos(e,t){var o;const i=this.getVideoHtml(t.src,t.addClass,t.index,t.html5Video);e.find(".lg-video-cont").append(i);const s=e.find(".lg-video-object").first();if(t.html5Video&&s.on("mousedown.lg.video",e=>{e.stopPropagation()}),this.settings.videojs&&(null==(o=this.core.galleryItems[t.index].__slideVideoInfo)?void 0:o.html5))try{return videojs(s.get(),this.settings.videojsOptions)}catch(l){console.error("lightGallery:- Make sure you have included videojs. See https://www.lightgalleryjs.com/demos/video-gallery/")}}gotoNextSlideOnVideoEnd(e,t){const o=this.core.getSlideItem(t).find(".lg-video-object").first(),i=this.core.galleryItems[t].__slideVideoInfo||{};this.settings.gotoNextSlideOnVideoEnd&&(i.html5?o.on("ended",()=>{this.core.goToNextSlide()}):i.vimeo?this.withVimeoApi(()=>{new Vimeo.Player(o.get()).on("ended",()=>{this.core.goToNextSlide()})}):i.wistia&&this.pushWistiaCommand({id:o.attr("id"),onReady:e=>{e.bind("end",()=>{this.core.goToNextSlide()})}}))}withVimeoApi(e){const t=()=>{try{e()}catch(t){console.error("lightGallery:- Make sure you have included //github.com/vimeo/player.js. See https://www.lightgalleryjs.com/demos/video-gallery/")}};window.Vimeo&&window.Vimeo.Player?t():$("https://player.vimeo.com/api/player.js").then(t)}pushWistiaCommand(e){try{window._wq=window._wq||[],window._wq.push(e)}catch(t){return void console.error("lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js. See https://www.lightgalleryjs.com/demos/video-gallery/")}window.Wistia||$("https://fast.wistia.com/assets/external/E-v1.js")}controlVideo(e,t){const o=this.core.getSlideItem(e).find(".lg-video-object").first(),i=this.core.galleryItems[e].__slideVideoInfo||{};if(o.get())if(i.youtube)try{o.get().contentWindow.postMessage(`{"event":"command","func":"${t}Video","args":""}`,"*")}catch(s){console.error(`lightGallery:- ${s}`)}else if(i.vimeo)this.withVimeoApi(()=>{new Vimeo.Player(o.get())[t]()});else if(i.html5)if(this.settings.videojs)try{videojs(o.get())[t]()}catch(s){console.error("lightGallery:- Make sure you have included videojs. See https://www.lightgalleryjs.com/demos/video-gallery/")}else o.get()[t]();else i.wistia&&this.pushWistiaCommand({id:o.attr("id"),onReady:e=>{e[t]()}})}loadVideoOnPosterClick(e,t){if(e.hasClass("lg-video-loaded"))t&&this.playVideo(this.core.index);else if(e.hasClass("lg-has-video"))this.playVideo(this.core.index);else{let t;e.addClass("lg-has-video");const o=this.core.galleryItems[this.core.index].src,i=this.core.galleryItems[this.core.index].video;i&&(t="string"==typeof i?JSON.parse(i):i);const s=this.appendVideos(e,{src:o,addClass:"",index:this.core.index,html5Video:t});this.gotoNextSlideOnVideoEnd(o,this.core.index);const l=e.find(".lg-object").first().get();e.find(".lg-video-cont").first().append(l),e.addClass("lg-video-loading"),s&&s.ready(()=>{s.on("loadedmetadata",()=>{this.onVideoLoadAfterPosterClick(e,this.core.index)})}),e.find(".lg-video-object").first().on("load.lg error.lg loadedmetadata.lg",()=>{setTimeout(()=>{this.onVideoLoadAfterPosterClick(e,this.core.index)},50)})}}onVideoLoadAfterPosterClick(e,t){e.addClass("lg-video-loaded"),this.playVideo(t)}destroy(){this.core.LGel.off(".lg.video"),this.core.LGel.off(".video")}}});