j1-template 2024.3.22 → 2024.3.24

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 (275) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/{galeries.html → gallery_app.html} +106 -18
  3. data/assets/theme/bla +0 -0
  4. data/assets/theme/j1/adapter/js/amplitude.js +144 -52
  5. data/assets/theme/j1/adapter/js/gallery.js +14 -3
  6. data/assets/theme/j1/adapter/js/themes.js +41 -69
  7. data/assets/theme/j1/core/css/themes/unolight/bootstrap.css +48 -52
  8. data/assets/theme/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  9. data/assets/theme/j1/core/css/vendor.css +1 -1
  10. data/assets/theme/j1/core/css/vendor.min.css +1 -1
  11. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +466 -396
  12. data/assets/theme/j1/modules/lightGallery/css/lg-transitions.css +3 -126
  13. data/assets/theme/j1/modules/lightGallery/css/lg-transitions.min.css +3 -10
  14. data/assets/theme/j1/modules/lightGallery/css/lightgallery-bundle.css +70 -237
  15. data/assets/theme/j1/modules/lightGallery/css/lightgallery-bundle.min.css +4 -10
  16. data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.css +276 -0
  17. data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.min.css +17 -0
  18. data/assets/theme/j1/modules/lightGallery/js/lightgallery.js +196 -134
  19. data/assets/theme/j1/modules/lightGallery/js/lightgallery.min.js +3 -10
  20. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-autoplay.js +4 -4
  21. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-autoplay.min.js +5 -5
  22. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-comment.js +5 -5
  23. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-comment.min.js +6 -6
  24. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-fullscreen.js +4 -4
  25. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-fullscreen.min.js +5 -5
  26. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-hash.js +4 -4
  27. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-hash.min.js +5 -6
  28. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-medium-zoom.js +5 -5
  29. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-medium-zoom.min.js +6 -6
  30. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-pager.js +4 -4
  31. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-pager.min.js +5 -5
  32. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-relative-caption.js +179 -0
  33. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-relative-caption.min.js +32 -0
  34. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-rotate.js +4 -4
  35. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-rotate.min.js +6 -6
  36. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-share.js +4 -4
  37. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-share.min.js +6 -7
  38. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-thumbnail.js +27 -20
  39. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-thumbnail.min.js +5 -5
  40. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js +489 -411
  41. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.min.js +3 -10
  42. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-vimeo-thumbnail.js +4 -4
  43. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-vimeo-thumbnail.min.js +5 -5
  44. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-zoom.js +11 -5
  45. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-zoom.min.js +5 -5
  46. data/assets/theme/j1/modules/rtable/css/theme/uno/rtable.css +11 -1
  47. data/assets/theme/j1/modules/themeSwitcher/js/switcher.js +13 -12
  48. data/assets/theme/j1/modules/videoPlayer/tiktoc/README.md +1 -0
  49. data/assets/theme/j1/modules/videojs/assets/README.md +1 -0
  50. data/assets/theme/j1/modules/videojs/assets/icons/speedometer-medium.svg +35 -0
  51. data/assets/theme/j1/modules/videojs/css/font/VideoJS.ttf +0 -0
  52. data/assets/theme/j1/modules/videojs/css/font/VideoJS.woff +0 -0
  53. data/assets/theme/j1/modules/videojs/css/themes/uno.css +189 -42
  54. data/assets/theme/j1/modules/videojs/css/themes/uno.min.css +1 -1
  55. data/assets/theme/j1/modules/videojs/css/videojs.css +674 -316
  56. data/assets/theme/j1/modules/videojs/css/videojs.min.css +4 -3
  57. data/assets/theme/j1/modules/videojs/js/video.js +15893 -12288
  58. data/assets/theme/j1/modules/videojs/js/video.min.js +22 -23
  59. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/!examples/index.html +26 -0
  60. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/LICENSE +19 -0
  61. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/README.md +69 -0
  62. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/css/aspect-ratio-panel.css +2 -0
  63. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/css/aspect-ratio-panel.min.css +2 -0
  64. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/js/aspect-ratio-panel.js +339 -0
  65. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/js/aspect-ratio-panel.min.js +2 -0
  66. data/assets/theme/j1/modules/videojs/{js/plugins/controls/autocaption → plugins/controls/autocaption/js}/autocaption.js +0 -5
  67. data/assets/theme/j1/modules/videojs/{js/plugins/controls/hotkeys/examples → plugins/controls/hotkeys/!examples}/example.html +1 -1
  68. data/assets/theme/j1/modules/videojs/plugins/controls/persist-settings/!examples/index.html +25 -0
  69. data/assets/theme/j1/modules/videojs/plugins/controls/persist-settings/LICENSE +19 -0
  70. data/assets/theme/j1/modules/videojs/plugins/controls/persist-settings/README.md +90 -0
  71. data/assets/theme/j1/modules/videojs/plugins/controls/persist-settings/js/videojs-persist.js +120 -0
  72. data/assets/theme/j1/modules/videojs/plugins/controls/persist-settings/js/videojs-persist.min.js +2 -0
  73. data/assets/theme/j1/modules/videojs/plugins/controls/playbackrate-adjuster/!examples/index.html +32 -0
  74. data/assets/theme/j1/modules/videojs/plugins/controls/playbackrate-adjuster/LICENSE +19 -0
  75. data/assets/theme/j1/modules/videojs/plugins/controls/playbackrate-adjuster/README.md +61 -0
  76. data/assets/theme/j1/modules/videojs/plugins/controls/playbackrate-adjuster/js/playbackrate-adjuster.js +94 -0
  77. data/assets/theme/j1/modules/videojs/plugins/controls/playbackrate-adjuster/js/playbackrate-adjuster.min.js +20 -0
  78. data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/skipbuttons/README.md +25 -11
  79. data/assets/theme/j1/modules/videojs/{css/plugins/controls → plugins/controls/zoom/css}/zoom.css +7 -6
  80. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.min.css +22 -0
  81. data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/examples → plugins/players/dm/!examples}/dailymotion-controls.html +4 -4
  82. data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/examples → plugins/players/dm/!examples}/dailymotion-javascript.html +3 -3
  83. data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/examples → plugins/players/dm/!examples}/dailymotion-playlist.html +3 -3
  84. data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/examples → plugins/players/dm/!examples}/global-parameters.html +3 -3
  85. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/simple.html +31 -0
  86. data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/examples → plugins/players/dm/!examples}/switch.html +3 -3
  87. data/assets/theme/j1/modules/videojs/{js/plugins/players/dm → plugins/players/dm/js}/dailymotion.js +1 -1
  88. data/assets/theme/j1/modules/videojs/{js/plugins/players/vm/examples → plugins/players/vm/!examples}/index.html +3 -3
  89. data/assets/theme/j1/modules/videojs/{js/plugins/players/vm/examples → plugins/players/vm/!examples}/player/index.html +3 -3
  90. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.0.js +521 -0
  91. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.1.js +605 -0
  92. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.3.js +643 -0
  93. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.4.js +583 -0
  94. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.5.js +665 -0
  95. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.6.js +642 -0
  96. data/assets/theme/j1/modules/videojs/plugins/players/vm/!unused/vimeo.7.js +673 -0
  97. data/assets/theme/j1/modules/videojs/{js/plugins/players/vm/api → plugins/players/vm/api/js}/vimeo.js +1 -1
  98. data/assets/theme/j1/modules/videojs/{js/plugins/players/vm/api → plugins/players/vm/api/js}/vimeo.min.js +1 -1
  99. data/assets/theme/j1/modules/videojs/{js/plugins/players/vm → plugins/players/vm/js}/vimeo.js +4 -5
  100. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.min.js +28 -0
  101. data/assets/theme/j1/modules/videojs/plugins/players/wt/!unused/wistia.0.js +395 -0
  102. data/assets/theme/j1/modules/videojs/plugins/players/wt/!unused/wistia.1.js +401 -0
  103. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/global-parameters.html +5 -5
  104. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/simple.html +5 -5
  105. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/switch.html +5 -5
  106. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/youtube-controls.html +5 -5
  107. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/youtube-javascript.html +5 -5
  108. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/youtube-list.html +5 -5
  109. data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/examples → plugins/players/yt/!examples}/youtube-playlist.html +5 -5
  110. data/lib/j1/version.rb +1 -1
  111. data/lib/starter_web/README.md +5 -5
  112. data/lib/starter_web/_config.yml +1 -1
  113. data/lib/starter_web/_data/blocks/banner.yml +2 -2
  114. data/lib/starter_web/_data/modules/amplitude_playlists.yml +16 -1
  115. data/lib/starter_web/_data/modules/attics.yml +11 -0
  116. data/lib/starter_web/_data/modules/carousel.yml +1 -1
  117. data/lib/starter_web/_data/modules/defaults/gallery.yml +3 -3
  118. data/lib/starter_web/_data/modules/defaults/masonry.yml +115 -22
  119. data/lib/starter_web/_data/modules/gallery.yml +225 -281
  120. data/lib/starter_web/_data/modules/masonry.yml +6 -0
  121. data/lib/starter_web/_data/modules/navigator_menu.yml +3 -3
  122. data/lib/starter_web/_data/resources.yml +16 -12
  123. data/lib/starter_web/_data/templates/feed.xml +1 -1
  124. data/lib/starter_web/_includes/attributes.asciidoc +7 -0
  125. data/lib/starter_web/_plugins/asciidoctor/videojs-block.rb +50 -30
  126. data/lib/starter_web/_plugins/asciidoctor/youtube-block.rb +37 -23
  127. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  128. data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-redl.jpg +0 -0
  129. data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-shatov.jpg +0 -0
  130. data/lib/starter_web/assets/image/module/attic/1920x1280/alexey-ruban.jpg +0 -0
  131. data/lib/starter_web/assets/image/module/attic/1920x1280/andrea-badino.jpg +0 -0
  132. data/lib/starter_web/assets/image/module/attic/1920x1280/bootstrap-modal.jpg +0 -0
  133. data/lib/starter_web/assets/image/module/attic/1920x1280/bp-miller.jpg +0 -0
  134. data/lib/starter_web/assets/image/module/attic/1920x1280/brad-neathery.jpg +0 -0
  135. data/lib/starter_web/assets/image/module/attic/1920x1280/brigitta-schneiter.jpg +0 -0
  136. data/lib/starter_web/assets/image/module/attic/1920x1280/build-with-gemini.jpg +0 -0
  137. data/lib/starter_web/assets/image/module/attic/1920x1280/clem-onojeghuo.jpg +0 -0
  138. data/lib/starter_web/assets/image/module/attic/1920x1280/crawford-jolly.jpg +0 -0
  139. data/lib/starter_web/assets/image/module/attic/1920x1280/eleni-afiontzi.jpg +0 -0
  140. data/lib/starter_web/assets/image/module/attic/1920x1280/fly-d.jpg +0 -0
  141. data/lib/starter_web/assets/image/module/attic/1920x1280/guillaume-bolduc.jpg +0 -0
  142. data/lib/starter_web/assets/image/module/attic/1920x1280/ideas-start-here-1920x1280.jpg +0 -0
  143. data/lib/starter_web/assets/image/module/attic/1920x1280/isaac-davis.jpg +0 -0
  144. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-2.jpg +0 -0
  145. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-3.jpg +0 -0
  146. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg +0 -0
  147. data/lib/starter_web/assets/image/module/attic/1920x1280/john-schnobrich-2.jpg +0 -0
  148. data/lib/starter_web/assets/image/module/attic/1920x1280/josep-martins.jpg +0 -0
  149. data/lib/starter_web/assets/image/module/attic/1920x1280/josh-liu.jpg +0 -0
  150. data/lib/starter_web/assets/image/module/attic/1920x1280/kelly-sikkemal.jpg +0 -0
  151. data/lib/starter_web/assets/image/module/attic/1920x1280/kira-auf-der-heide.jpg +0 -0
  152. data/lib/starter_web/assets/image/module/attic/1920x1280/kristopher-roller.jpg +0 -0
  153. data/lib/starter_web/assets/image/module/attic/1920x1280/markus-spiske.jpg +0 -0
  154. data/lib/starter_web/assets/image/module/attic/1920x1280/martin-sanchez.jpg +0 -0
  155. data/lib/starter_web/assets/image/module/attic/1920x1280/material_symbols.jpg +0 -0
  156. data/lib/starter_web/assets/image/module/attic/1920x1280/matthaeus.jpg +0 -0
  157. data/lib/starter_web/assets/image/module/attic/1920x1280/melanie-deziel.jpg +0 -0
  158. data/lib/starter_web/assets/image/module/attic/1920x1280/milad-fakurian.jpg +0 -0
  159. data/lib/starter_web/assets/image/module/attic/1920x1280/mohammad-rahmani.jpg +0 -0
  160. data/lib/starter_web/assets/image/module/attic/1920x1280/nasa.jpg +0 -0
  161. data/lib/starter_web/assets/image/module/attic/1920x1280/quino-al-2.jpg +0 -0
  162. data/lib/starter_web/assets/image/module/attic/1920x1280/stories-ink-tattoo-care.jpg +0 -0
  163. data/lib/starter_web/assets/image/module/attic/1920x1280/towfiqu-barbhuiya.jpg +0 -0
  164. data/lib/starter_web/assets/image/page/tour/bootswatch-themes.jpg +0 -0
  165. data/lib/starter_web/assets/video/poster/vimeo/fall_2011.jpg +0 -0
  166. data/lib/starter_web/index.html +3 -2
  167. data/lib/starter_web/package.json +1 -1
  168. data/lib/starter_web/pages/public/panels/intro_panel/_includes/attributes.asciidoc +1 -1
  169. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +5 -5
  170. data/lib/starter_web/pages/public/tools/tester/app_tester_amplitudejs_yt.adoc +7 -3
  171. data/lib/starter_web/pages/public/tools/tester/app_tester_swiperjs.adoc +7 -3
  172. data/lib/starter_web/pages/public/tools/tester/videojs_macro_tester.adoc +297 -0
  173. data/lib/starter_web/pages/public/tour/_includes/attributes.asciidoc +1 -2
  174. data/lib/starter_web/pages/public/tour/_includes/documents/themes_bootstrap.asciidoc +1 -1
  175. data/lib/starter_web/pages/public/tour/asciidoc_extensions.adoc +7 -3
  176. data/lib/starter_web/pages/public/tour/bootstrap_themes.adoc +62 -7
  177. data/lib/starter_web/pages/public/tour/icon_fonts.adoc +4 -8
  178. data/lib/starter_web/pages/public/tour/modal_extentions.adoc +2 -2
  179. data/lib/starter_web/pages/public/tour/responsive_tables.adoc +21 -15
  180. data/lib/starter_web/pages/public/tour/typography.adoc +5 -5
  181. data/lib/starter_web/pages/public/tour/video_data.adoc +25 -5
  182. metadata +142 -118
  183. data/assets/data/swiper_app.2.html +0 -757
  184. data/assets/data/swiper_app.4.html +0 -769
  185. data/assets/theme/j1/modules/lightGallery/css/themes/uno/uno.css +0 -140
  186. data/assets/theme/j1/modules/lightGallery/css/themes/uno/uno.min.css +0 -19
  187. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/j1-video.js +0 -402
  188. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/j1-video.min.js +0 -7
  189. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-video.1.js +0 -585
  190. data/assets/theme/j1/modules/videojs/css/font/video-js-cdn.css +0 -2012
  191. data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.0.css +0 -32
  192. data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.1.css +0 -31
  193. data/assets/theme/j1/modules/videojs/css/plugins/controls/zoom.min.css +0 -21
  194. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/examples/simple.html +0 -20
  195. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/vimeo.min.js +0 -16
  196. data/assets/theme/j1/modules/videojs/js/plugins/players/wt/api/src/WistiaPlayer.ts +0 -1617
  197. data/lib/starter_web/_data/modules/gallery_app.yml +0 -1002
  198. data/lib/starter_web/_data/modules/gallery_playlists.yml +0 -534
  199. data/lib/starter_web/assets/image/module/attic/1920x1280/alina-grubnyak.jpg +0 -0
  200. data/lib/starter_web/assets/image/module/attic/1920x1280/bruno-figueiredo.jpg +0 -0
  201. data/lib/starter_web/assets/image/module/attic/1920x1280/harpal-singh.jpg +0 -0
  202. data/lib/starter_web/assets/image/module/attic/1920x1280/hayden-mills-2.jpg +0 -0
  203. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-1.jpg +0 -0
  204. data/lib/starter_web/assets/image/module/attic/1920x1280/recha-oktaviani.jpg +0 -0
  205. data/lib/starter_web/assets/image/module/attic/1920x1280/tiny_desk.jpg +0 -0
  206. data/lib/starter_web/assets/image/module/attic/ideas-start-here-1920x1280-bw.jpg +0 -0
  207. data/lib/starter_web/assets/image/module/attic/ideas-start-here-1920x1280.jpg +0 -0
  208. data/lib/starter_web/assets/video/poster/vimeo/stay_colorful.jpg +0 -0
  209. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/animation-w.png +0 -0
  210. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/customize-w.png +0 -0
  211. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/dynamic-w.png +0 -0
  212. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/facebook-icon.svg +0 -0
  213. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/googleplus-icon.svg +0 -0
  214. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/html5-w.png +0 -0
  215. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/linked-in.png +0 -0
  216. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/module-w.png +0 -0
  217. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/play-button-hover.svg +0 -0
  218. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/play-button.png +0 -0
  219. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/play-button.svg +0 -0
  220. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/responsive-w.png +0 -0
  221. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/thumb-w.png +0 -0
  222. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/touch-w.png +0 -0
  223. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/twitter-icon.svg +0 -0
  224. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/twitter.png +0 -0
  225. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/video1-w.png +0 -0
  226. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/zoom-w.png +0 -0
  227. /data/assets/theme/j1/modules/lightGallery/css/{themes → theme}/uno/icons/zoom.png +0 -0
  228. /data/assets/theme/j1/modules/videoPlayer/dailymotion/js/{!readme → README.md} +0 -0
  229. /data/assets/theme/j1/modules/videoPlayer/tiktoc/{js/player.min.js → player.min.js} +0 -0
  230. /data/assets/theme/j1/modules/videoPlayer/vimeo/js/{!readme → README.md} +0 -0
  231. /data/assets/theme/j1/modules/videoPlayer/wistia/js/{!readme → README.md} +0 -0
  232. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/autocaption/LICENSE +0 -0
  233. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/autocaption/README.md +0 -0
  234. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/autocaption → plugins/controls/autocaption/js}/autocaption.min.js +0 -0
  235. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/hotkeys/LICENSE.md +0 -0
  236. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/hotkeys/README.md +0 -0
  237. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/hotkeys → plugins/controls/hotkeys/js}/hotkeys.js +0 -0
  238. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/hotkeys → plugins/controls/hotkeys/js}/hotkeys.min.js +0 -0
  239. /data/assets/theme/j1/modules/videojs/{css/plugins/controls → plugins/controls/skipbuttons/css}/skipbuttons.css +0 -0
  240. /data/assets/theme/j1/modules/videojs/{css/plugins/controls → plugins/controls/skipbuttons/css}/skipbuttons.min.css +0 -0
  241. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/skipbuttons → plugins/controls/skipbuttons/js}/skipbuttons.js +0 -0
  242. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/skipbuttons → plugins/controls/skipbuttons/js}/skipbuttons.min.js +0 -0
  243. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/zoom/examples → plugins/controls/zoom/!examples}/index.html +0 -0
  244. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/zoom/examples → plugins/controls/zoom/!examples}/index.js +0 -0
  245. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/zoom/examples → plugins/controls/zoom/!examples}/styles.css +0 -0
  246. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/zoom/LICENSE.md +0 -0
  247. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/controls/zoom/README.md +0 -0
  248. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/zoom → plugins/controls/zoom/js}/zoom.js +0 -0
  249. /data/assets/theme/j1/modules/videojs/{js/plugins/controls/zoom → plugins/controls/zoom/js}/zoom.min.js +0 -0
  250. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/dm/LICENSE +0 -0
  251. /data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/doc → plugins/players/dm}/README.md +0 -0
  252. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/dm/api/LICENSE +0 -0
  253. /data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/api/doc → plugins/players/dm/api}/README.md +0 -0
  254. /data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/api → plugins/players/dm/api/js}/dailymotion.sdk.js +0 -0
  255. /data/assets/theme/j1/modules/videojs/{js/plugins/players/dm/api → plugins/players/dm/api/js}/dailymotion.sdk.min.js +0 -0
  256. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/dm/icon/scalable/dailymotion.svg +0 -0
  257. /data/assets/theme/j1/modules/videojs/{js/plugins/players/dm → plugins/players/dm/js}/dailymotion.min.js +0 -0
  258. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/vm/LICENSE +0 -0
  259. /data/assets/theme/j1/modules/videojs/{js/plugins/players/vm/doc → plugins/players/vm}/README.md +0 -0
  260. /data/assets/theme/j1/modules/videojs/{js/plugins/players/vm/api/doc → plugins/players/vm/api}/README.md +0 -0
  261. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/vm/api/css/embed.player.css +0 -0
  262. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/vm/api/css/embed.player.uno.css +0 -0
  263. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/vm/api/css/player.css +0 -0
  264. /data/assets/theme/j1/modules/videojs/{js/plugins/players/wt/doc → plugins/players/wt}/README.md +0 -0
  265. /data/assets/theme/j1/modules/videojs/{js/plugins/players/wt/api/doc/Readme.txt → plugins/players/wt/api/README.md} +0 -0
  266. /data/assets/theme/j1/modules/videojs/{js/plugins/players/wt/api → plugins/players/wt/api/js}/wistia.min.js +0 -0
  267. /data/assets/theme/j1/modules/videojs/{js/plugins/players/wt → plugins/players/wt/js}/wistia.js +0 -0
  268. /data/assets/theme/j1/modules/videojs/{js/plugins/players/wt → plugins/players/wt/js}/wistia.min.js +0 -0
  269. /data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/v3.0.0 → plugins/players/yt/!v3.0.0}/youtube.js +0 -0
  270. /data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/v3.0.0 → plugins/players/yt/!v3.0.0}/youtube.min.js +0 -0
  271. /data/assets/theme/j1/modules/videojs/{js/plugins → plugins}/players/yt/LICENSE +0 -0
  272. /data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/doc → plugins/players/yt}/README.md +0 -0
  273. /data/assets/theme/j1/modules/videojs/{js/plugins/players/yt/api → plugins/players/yt/api/js}/youtube.min.js +0 -0
  274. /data/assets/theme/j1/modules/videojs/{js/plugins/players/yt → plugins/players/yt/js}/youtube.js +0 -0
  275. /data/assets/theme/j1/modules/videojs/{js/plugins/players/yt → plugins/players/yt/js}/youtube.min.js +0 -0
@@ -1,12 +1,12 @@
1
1
  /*
2
2
  # -----------------------------------------------------------------------------
3
3
  # ~/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js
4
- # Provides lightGallery JS code for the plugin lgVideo
4
+ # Provides lightGallery v2.8.3 JS code for the plugin lgVideo
5
5
  #
6
6
  # Product/Info:
7
7
  # https://jekyll.one
8
8
  #
9
- # Copyright (C) 2023 Sachin Neravath
9
+ # Copyright (C) 2025 Sachin Neravath
10
10
  # Copyright (C) 2023-2025 Juergen Adams
11
11
  #
12
12
  # J1 Template is licensed under the MIT License.
@@ -16,12 +16,12 @@
16
16
  # -----------------------------------------------------------------------------
17
17
  */
18
18
 
19
- /*
20
- * lightgallery | 2.7.2 | September 20th 2023
19
+ /*!
20
+ * lightgallery | 2.8.3 | March 1st 2025
21
21
  * http://www.lightgalleryjs.com/
22
22
  * Copyright (c) 2020 Sachin Neravath;
23
23
  * @license GPLv3
24
- */
24
+ */
25
25
 
26
26
  (function (global, factory) {
27
27
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -44,9 +44,6 @@
44
44
  PERFORMANCE OF THIS SOFTWARE.
45
45
  ***************************************************************************** */
46
46
 
47
- var url = new URL(window.location.href);
48
- var origin = url.origin;
49
-
50
47
  var __assign = function() {
51
48
  __assign = Object.assign || function __assign(t) {
52
49
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -58,6 +55,7 @@
58
55
  return __assign.apply(this, arguments);
59
56
  };
60
57
 
58
+ // jadams
61
59
  var videoSettings = {
62
60
  autoplayFirstVideo: true,
63
61
  htmlPlayerParams: false,
@@ -132,20 +130,13 @@
132
130
  var slideUrlParams = videoInfo.youtube[2]
133
131
  ? paramsToObject(videoInfo.youtube[2])
134
132
  : '';
135
-
136
- // For YouTube first params gets priority if duplicates found
137
- // See: https://stackoverflow.com/questions/40685142/youtube-autoplay-does-not-work-with-iframe
133
+ // For youtube first params gets priority if duplicates found
138
134
  var defaultYouTubePlayerParams = {
135
+ wmode: 'opaque',
139
136
  autoplay: 0,
140
- controls: 1,
141
- enablejsapi: 1,
142
- hl: 'en',
143
- loop: 0,
144
137
  mute: 1,
145
- wmode: 'opaque',
146
- origin: origin,
138
+ enablejsapi: 1,
147
139
  };
148
-
149
140
  var playerParamsSettings = youTubePlayerParamsSettings || {};
150
141
  var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);
151
142
  var youTubeParams = "?" + param(youTubePlayerParams);
@@ -158,8 +149,13 @@
158
149
  if (!videoInfo || !videoInfo.vimeo)
159
150
  return '';
160
151
  var urlParams = videoInfo.vimeo[2] || '';
161
- var defaultPlayerParams = defaultParams && Object.keys(defaultParams).length !== 0
162
- ? '&' + param(defaultParams)
152
+ var defaultVimeoPlayerParams = Object.assign({}, {
153
+ autoplay: 0,
154
+ muted: 1,
155
+ }, defaultParams);
156
+ var defaultPlayerParams = defaultVimeoPlayerParams &&
157
+ Object.keys(defaultVimeoPlayerParams).length !== 0
158
+ ? param(defaultVimeoPlayerParams)
163
159
  : '';
164
160
  // Support private video
165
161
  var urlWithHash = videoInfo.vimeo[0].split('/').pop() || '';
@@ -171,11 +167,15 @@
171
167
  }
172
168
  urlParams =
173
169
  urlParams[0] == '?' ? '&' + urlParams.slice(1) : urlParams || '';
174
- // For vimeo last params gets priority if duplicates found
175
- var vimeoPlayerParams = "?autoplay=0&muted=1" + (isPrivate ? "&h=" + hash : '') + defaultPlayerParams + urlParams;
170
+ var privateUrlParams = isPrivate ? "h=" + hash : '';
171
+ defaultPlayerParams = privateUrlParams
172
+ ? "&" + defaultPlayerParams
173
+ : defaultPlayerParams;
174
+ var vimeoPlayerParams = "?" + privateUrlParams + defaultPlayerParams + urlParams;
176
175
  return vimeoPlayerParams;
177
176
  };
178
177
 
178
+ // jadams
179
179
  var getTikTokURLParams = function (defaultParams, videoInfo) {
180
180
  if (!videoInfo || !videoInfo.tiktok)
181
181
  return '';
@@ -198,6 +198,7 @@
198
198
  return tiktokPlayerParams;
199
199
  };
200
200
 
201
+ // jadams
201
202
  // -------------------------------------------------------------------------
202
203
  // loadVtt
203
204
  // Loads a given WEBVTT file (from data path) and process loaded
@@ -215,7 +216,272 @@
215
216
  }
216
217
  });
217
218
 
218
- } // END loadVtt
219
+ }; // END loadVtt
220
+
221
+
222
+ // jadams
223
+ // -------------------------------------------------------------------------
224
+ // vjsProcessExtendedButtonsAndPlugins
225
+ // Loads a given WEBVTT file (from data path) and process loaded
226
+ // data in callback cb (function)
227
+ // -------------------------------------------------------------------------
228
+ var vjsProcessExtendedButtonsAndPlugins = function (vjsObject, videojsPlayer, videoInfo) {
229
+ const vjsOptions = j1.modules.videojs.options;
230
+ var videoInfo, videoStart, videojsPlayer,
231
+ playbackRates, hotKeysPlugin, skipButtonsPlugin, zoomPlugin;
232
+
233
+ var videoData = {
234
+ tracks: false
235
+ };
236
+
237
+ var playbackRatesDefaults = vjsOptions.playbackRates.values;
238
+ var chapterTracksEnabled = false;
239
+
240
+ var hotKeysPluginDefaults = {
241
+ volumeStep: vjsOptions.plugins.hotKeys.volumeStep,
242
+ seekStep: vjsOptions.plugins.hotKeys.seekStep,
243
+ enableMute: vjsOptions.plugins.hotKeys.enableMute,
244
+ enableVolumeScroll: vjsOptions.plugins.hotKeys.enableVolumeScroll,
245
+ enableHoverScroll: vjsOptions.plugins.hotKeys.enableHoverScroll,
246
+ enableFullscreen: vjsOptions.plugins.hotKeys.enableFullscreen,
247
+ enableNumbers: vjsOptions.plugins.hotKeys.enableNumbers,
248
+ enableJogStyle: vjsOptions.plugins.hotKeys.enableJogStyle,
249
+ alwaysCaptureHotkeys: vjsOptions.plugins.hotKeys.alwaysCaptureHotkeys,
250
+ captureDocumentHotkeys: vjsOptions.plugins.hotKeys.captureDocumentHotkeys,
251
+ enableModifiersForNumbers: vjsOptions.plugins.hotKeys.enableModifiersForNumbers,
252
+ enableInactiveFocus: vjsOptions.plugins.hotKeys.enableInactiveFocus,
253
+ skipInitialFocus: vjsOptions.plugins.hotKeys.skipInitialFocus
254
+ };
255
+
256
+ var skipButtonsPluginDefaults = {
257
+ backward: vjsOptions.plugins.skipButtons.backward,
258
+ forward: vjsOptions.plugins.skipButtons.forward,
259
+ backwardIndex: 0,
260
+ forwardIndex: 1
261
+ };
262
+
263
+ var zoomPluginDefaults = {
264
+ moveX: vjsOptions.plugins.zoomButtons.moveX,
265
+ moveY: vjsOptions.plugins.zoomButtons.moveY,
266
+ rotate: vjsOptions.plugins.zoomButtons.rotate,
267
+ zoom: vjsOptions.plugins.zoomButtons.zoom
268
+ };
269
+
270
+ // jadams, 2025-06-11: added customControlContainer
271
+ // ---------------------------------------------------------------------
272
+ var vjsPlayerControlBar = videojsPlayer.controlBar;
273
+
274
+ // create customControlContainer for progressControlSilder|time (display) elements
275
+ const customProgressContainer = vjsPlayerControlBar.addChild('Component', {
276
+ el: videojs.dom.createEl('div', {
277
+ className: 'vjs-theme-uno custom-progressbar-container'
278
+ })
279
+ });
280
+
281
+ // move progressControlSlider into customControlContainer
282
+ const progressControlSlider = vjsPlayerControlBar.progressControl;
283
+ if (progressControlSlider) {
284
+ customProgressContainer.el().appendChild(progressControlSlider.el());
285
+ }
286
+
287
+ // move currentTimeDisplay BEFORE the progressControlSilder
288
+ const currentTimeDisplay = vjsPlayerControlBar.currentTimeDisplay;
289
+ if (currentTimeDisplay) {
290
+ customProgressContainer.el().insertBefore(currentTimeDisplay.el(), progressControlSlider.el());
291
+ }
292
+
293
+ // move the durationDisplay AFTER the progressControlSilder
294
+ const durationDisplay = vjsPlayerControlBar.durationDisplay;
295
+ if (durationDisplay) {
296
+ customProgressContainer.el().appendChild(durationDisplay.el());
297
+ }
298
+
299
+ // configure VideoJS (extended) Plugins
300
+ // ---------------------------------------------------------------------
301
+ hotKeysPlugin = (vjsObject.settings.videojsOptions.hotKeysPlugin !== undefined) ? vjsObject.settings.videojsOptions.hotKeysPlugin : hotKeysPluginDefaults;
302
+ skipButtonsPlugin = (vjsObject.settings.videojsOptions.controlBar.skipButtonsPlugin !== undefined) ? vjsObject.settings.videojsOptions.controlBar.skipButtonsPlugin : skipButtonsPluginDefaults;
303
+ zoomPlugin = (vjsObject.settings.videojsOptions.controlBar.zoomPlugin !== undefined) ? vjsObject.settings.videojsOptions.controlBar.zoomPlugin : false;
304
+ playbackRates = (vjsObject.settings.videojsOptions.controlBar.playbackRates !== undefined) ? vjsObject.settings.videojsOptions.controlBar.playbackRates : playbackRatesDefaults;
305
+
306
+ // jadams, 2024-01-22: added video start position
307
+ // ---------------------------------------------------------------------
308
+ if (vjsObject.settings.videojsOptions.videoStart !== undefined) {
309
+ videoStart = vjsObject.settings.videojsOptions.videoStart[index];
310
+ videojsPlayer.on("play", function() {
311
+ var startFromSecond = new Date('1970-01-01T' + videoStart + 'Z').getTime() / 1000;
312
+ videojsPlayer.currentTime(startFromSecond);
313
+ }); // END on event play
314
+ } // END if videoStart
315
+
316
+ // add playbackRates, only available for VideoJS
317
+ // ---------------------------------------------------------------------
318
+ if (videojsPlayer.playbackRates !== undefined) {
319
+ videojsPlayer.playbackRates(playbackRates);
320
+ }
321
+
322
+ // add hotkeys Plugin, only available for VideoJS
323
+ // ---------------------------------------------------------------------
324
+ if (hotKeysPlugin !== undefined && hotKeysPlugin.enabled && videojsPlayer.hotKeys !== undefined) {
325
+
326
+ // merge objects
327
+ hotKeysPlugin.options = __assign(__assign({}, hotKeysPluginDefaults), hotKeysPlugin.options);
328
+
329
+ // prevent multiple plugin instances
330
+ var hotKeysActive = false;
331
+ if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.hotKeys !== undefined) {
332
+ hotKeysActive = videojsPlayer.activePlugins_.hotKeys;
333
+ }
334
+
335
+ if (!hotKeysActive) {
336
+ videojsPlayer.hotKeys({
337
+ volumeStep: hotKeysPlugin.options.volumeStep,
338
+ seekStep: hotKeysPlugin.options.seekStep,
339
+ enableMute: hotKeysPlugin.options.enableMute,
340
+ enableFullscreen: hotKeysPlugin.options.enableFullscreen,
341
+ enableNumbers: hotKeysPlugin.options.enableNumbers,
342
+ enableVolumeScroll: hotKeysPlugin.options.enableVolumeScroll,
343
+ enableHoverScroll: hotKeysPlugin.options.enableHoverScroll,
344
+ alwaysCaptureHotkeys: hotKeysPlugin.options.alwaysCaptureHotkeys,
345
+ captureDocumentHotkeys: hotKeysPlugin.options.captureDocumentHotkeys,
346
+ documentHotkeysFocusElementFilter: hotKeysPlugin.options.documentHotkeysFocusElementFilter,
347
+
348
+ // Mimic VLC seek behavior (default to: 15)
349
+ seekStep: function(e) {
350
+ if (e.ctrlKey && e.altKey) {
351
+ return 5*60;
352
+ } else if (e.ctrlKey) {
353
+ return 60;
354
+ } else if (e.altKey) {
355
+ return 10;
356
+ } else {
357
+ return 15;
358
+ }
359
+ }
360
+
361
+ });
362
+ } // END if hotKeysActive
363
+
364
+ } // END if hotKeysPlugin enabled
365
+
366
+ // add skipButtons Plugin, only available for VideoJS
367
+ // ---------------------------------------------------------------------
368
+ if (skipButtonsPlugin !== undefined && skipButtonsPlugin.enabled && videojsPlayer.skipButtons !== undefined) {
369
+ // merge objects
370
+ skipButtonsPlugin.options = __assign(__assign({}, skipButtonsPluginDefaults), skipButtonsPlugin.options);
371
+
372
+ // prevent multiple plugin instances
373
+ var skipButtonsActive = false;
374
+ if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.skipButtons !== undefined) {
375
+ skipButtonsActive = videojsPlayer.activePlugins_.skipButtons;
376
+ }
377
+
378
+ if (!skipButtonsActive) {
379
+ videojsPlayer.skipButtons({
380
+ backward: skipButtonsPlugin.options.backward,
381
+ forward: skipButtonsPlugin.options.forward,
382
+ backwardIndex: skipButtonsPlugin.options.backwardIndex,
383
+ forwardIndex: skipButtonsPlugin.options.forwardIndex
384
+ });
385
+ }
386
+
387
+ } // END if skipButtons Plugin enabled
388
+
389
+ // add zoom Plugin (only available for VJS|local video/mp4)
390
+ // ---------------------------------------------------------------------
391
+ if (videoInfo.youtube) {
392
+ // zoom pluging NOT supported for YouTube
393
+ zoomPlugin.enabled = false;
394
+ }
395
+
396
+ if (zoomPlugin !== undefined && zoomPlugin.enabled && videojsPlayer.zoomButtons !== undefined) {
397
+ // merge objects
398
+ zoomPlugin.options = __assign(__assign({}, zoomPluginDefaults), zoomPlugin.options);
399
+
400
+ // prevent multiple plugin instances
401
+ var zoomButtonsActive = false;
402
+ if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.zoomButtons !== undefined) {
403
+ zoomButtonsActive = videojsPlayer.activePlugins_.zoomButtons;
404
+ }
405
+
406
+ if (!zoomButtonsActive) {
407
+ videojsPlayer.zoomButtons({
408
+ moveX: zoomPlugin.options.moveX,
409
+ moveY: zoomPlugin.options.moveY,
410
+ rotate: zoomPlugin.options.rotate,
411
+ zoom: zoomPlugin.options.zoom
412
+ });
413
+ }
414
+
415
+ } // END if zoom Plugin enabled
416
+
417
+ // chapter track processing, only available for VideoJS
418
+ // ---------------------------------------------------------------------
419
+ if (vjsObject.core.galleryItems[vjsObject.core.index].video !== undefined) {
420
+ videoData = JSON.parse(vjsObject.core.galleryItems[vjsObject.core.index].video);
421
+ }
422
+
423
+ // chapter tracks only available for VideoJS (local video/mp4)
424
+ // ---------------------------------------------------------------------
425
+ if (videoData.tracks && videoData.tracks.length > 0) {
426
+ for (var i=0; i<videoData.tracks.length; i++) {
427
+ if (videoData.tracks[i].kind == 'chapters') {
428
+ trackSrc = videoData.tracks[i].src;
429
+ chapterTracksEnabled = true;
430
+ }
431
+ }
432
+ } // END if videoData tracks
433
+
434
+ if (chapterTracksEnabled) {
435
+ var parser = new WebVTTParser();
436
+ var markers = [];
437
+
438
+ function cb_load (data /* ,textStatus, jqXHR */ ) {
439
+ var tree = parser.parse(data, 'metadata');
440
+ var marker;
441
+
442
+ // add chapter tracks to markers array
443
+ for (var i=0; i<tree.cues.length; i++) {
444
+ marker = { time: tree.cues[i].startTime, label: tree.cues[i].text };
445
+ markers.push(marker);
446
+ }
447
+ }; // END function cb_load
448
+
449
+ // load chapter tracks
450
+ // -----------------------------------------------------------------
451
+ loadVtt(trackSrc, cb_load);
452
+
453
+ // add chapter tracks on play
454
+ videojsPlayer.on("play", function() {
455
+ videojsPlayer.currentTime(videoStart);
456
+
457
+ var total = videojsPlayer.duration();
458
+ var timeline = $(videojsPlayer.controlBar.progressControl.children_[0].el_);
459
+
460
+ // add chapter tracks on timeline (delayed)
461
+ setTimeout (function() {
462
+ var markers_loaded = setInterval (function () {
463
+ if (markers.length) {
464
+ for (var i=0; i<markers.length; i++) {
465
+ var left = (markers[i].time / total * 100) + '%';
466
+ var time = markers[i].time;
467
+ var el = $('<div class="vjs-chapter-marker" style="left: ' +left+ '" data-time="' +time+ '"> <span>' +markers[i].label+ '</span></div>');
468
+
469
+ el.click(function() {
470
+ videojsPlayer.currentTime($(this).data('time'));
471
+ });
472
+
473
+ timeline.append(el);
474
+ }
475
+ clearInterval(markers_loaded);
476
+ }
477
+ }, 10); // END markers_loaded
478
+ }, 1000 ); // END setTimeout
479
+
480
+ }); // END on "play"
481
+
482
+ } // END if chapterTracksEnabled
483
+
484
+ }; // END vjsProcessExtendedButtonsAndPlugins
219
485
 
220
486
  /**
221
487
  * Video module for lightGallery
@@ -250,7 +516,6 @@
250
516
  this.settings = __assign(__assign({}, videoSettings), this.core.settings);
251
517
  return this;
252
518
  }
253
-
254
519
  Video.prototype.init = function () {
255
520
  var _this = this;
256
521
  /**
@@ -269,7 +534,6 @@
269
534
  // @desc fired immediately after each slide transition.
270
535
  this.core.LGel.on(lGEvents.afterSlide + ".video", this.onAfterSlide.bind(this));
271
536
  };
272
-
273
537
  /**
274
538
  * @desc Event triggered when a slide is completely loaded
275
539
  *
@@ -294,7 +558,6 @@
294
558
  this.loadAndPlayVideo(index);
295
559
  }
296
560
  };
297
-
298
561
  /**
299
562
  * @desc Event triggered when video url or poster found
300
563
  * Append video HTML is poster is not given
@@ -306,7 +569,7 @@
306
569
  var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;
307
570
  if (!hasPoster) {
308
571
  // All functions are called separately if poster exist in loadVideoOnPosterClick function
309
- this.appendVideos(this.core.getSlideItem(index), {
572
+ this.appendVideo(this.core.getSlideItem(index), {
310
573
  src: src,
311
574
  addClass: 'lg-object',
312
575
  index: index,
@@ -314,12 +577,8 @@
314
577
  });
315
578
  // Automatically navigate to next slide once video reaches the end.
316
579
  this.gotoNextSlideOnVideoEnd(src, index);
317
- } else {
318
- // jadams
319
- var slideItem = this.core.getSlideItem(index);
320
580
  }
321
581
  };
322
-
323
582
  /**
324
583
  * @desc fired immediately before each slide transition.
325
584
  * Pause the previous video
@@ -335,7 +594,6 @@
335
594
  this.pauseVideo(prevIndex);
336
595
  }
337
596
  };
338
-
339
597
  /**
340
598
  * @desc fired immediately after each slide transition.
341
599
  * Play video if autoplayVideoOnSlide option is enabled.
@@ -358,7 +616,6 @@
358
616
  }
359
617
  }
360
618
  };
361
-
362
619
  Video.prototype.loadAndPlayVideo = function (index) {
363
620
  var $slide = this.core.getSlideItem(index);
364
621
  var currentGalleryItem = this.core.galleryItems[index];
@@ -376,7 +633,6 @@
376
633
  Video.prototype.playVideo = function (index) {
377
634
  this.controlVideo(index, 'play');
378
635
  };
379
-
380
636
  /**
381
637
  * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
382
638
  * @param {number} index - Index of the slide
@@ -387,154 +643,112 @@
387
643
 
388
644
  // jadams
389
645
  Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {
390
- var video = '';
391
- var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
392
- var currentGalleryItem = this.core.galleryItems[index];
393
- var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
394
- videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
395
- var commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n msallowfullscreen";
646
+ var currentGalleryHtml, currentGalleryItem, videoInfo,
647
+ videoTitle, video, video_api, commonIframeProps;
648
+
649
+ videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
650
+ currentGalleryItem = this.core.galleryItems[index];
651
+
652
+ if (currentGalleryItem.subHtml.includes('<h2>')) {
653
+ currentGalleryHtml = currentGalleryItem.subHtml.split("</h2>");
654
+ videoTitle = currentGalleryHtml[0].replace('<h2>','');
655
+ } else if (currentGalleryItem.subHtml.includes('<h5>')) {
656
+ // for backward compatibility reasons
657
+ currentGalleryHtml = currentGalleryItem.subHtml.split("</h5>");
658
+ videoTitle = currentGalleryHtml[0].replace('<h5>','');
659
+ }
660
+
661
+ videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
662
+ commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen";
396
663
 
397
664
  if (videoInfo.youtube) {
398
- var videoId = 'lg-youtube' + index;
399
- var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
665
+ var videoId = 'lg-youtube' + index;
666
+ var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
400
667
  var isYouTubeNoCookieURL = isYouTubeNoCookie(src);
401
- var youtubeURL = isYouTubeNoCookieURL
402
- ? '//www.youtube-nocookie.com/'
403
- : '//www.youtube.com/';
404
-
405
- // var video = `
406
- // <video
407
- // id="${videoId}"
408
- // class="lg-video-object lg-youtube vjs-theme-uno video-js">
409
- // data-setup='{
410
- // "fluid" : true,
411
- // "techOrder": [
412
- // "youtube", "html5"
413
- // ],
414
- // "sources": [{
415
- // "type": "video/youtube",
416
- // "src": "//youtube.com/watch?v=nV8UZJNBY6"
417
- // }],
418
- // "controlBar": {
419
- // "pictureInPictureToggle": false,
420
- // "volumePanel": {
421
- // "inline": false
422
- // }
423
- // }
424
- // }'>
425
- // Your browser does not support HTML5 video
426
- // </video>
427
- // `;
428
-
429
- var video_new = `
668
+ var youtubeURL = isYouTubeNoCookieURL ? '//youtube-nocookie.com/' : '//youtube.com/';
669
+ var ytVideoID = videoInfo.youtube[1];
670
+
671
+ var video_iframe = `
430
672
  <iframe
431
673
  id="${videoId}"
432
674
  class="lg-video-object lg-youtube ${addClass}"
433
- allow="autoplay"
434
- title="${videoTitle}""
435
- src="${youtubeURL}/embed${videoInfo.youtube[1]}${youTubeParams}"
675
+ src="${youtubeURL}/embed/${ytVideoID}${youTubeParams}"
436
676
  ${commonIframeProps}>
437
677
  </iframe>
438
678
  `;
439
679
 
440
- video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-youtube " + addClass + "\" " + videoTitle + " src=\"" + youtubeURL + "embed/" + (videoInfo.youtube[1] + youTubeParams) + "\" " + commonIframeProps + "></iframe>";
680
+ var video_vjs = `
681
+ <video
682
+ id="${videoId}"
683
+ class="video-js lg-video-object lg-youtube vjs-theme-uno">
684
+ <source
685
+ type="video/youtube",
686
+ src="//youtube.com/watch?v=${ytVideoID}"
687
+ >
688
+
689
+ Your browser does not support HTML5 video.
690
+ </video>
691
+ `;
441
692
 
442
- }
443
- else if (videoInfo.vimeo) {
693
+ video_api = 'youtube';
694
+ video = (video_api === 'iframe') ? video_iframe : video_vjs;
695
+ // END videoInfo youtube
696
+ } else if (videoInfo.vimeo) {
444
697
  var videoId = 'lg-vimeo' + index;
445
698
  var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);
446
699
 
447
700
  video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-vimeo " + addClass + "\" " + videoTitle + " src=\"//player.vimeo.com/video/" + (videoInfo.vimeo[1] + playerParams) + "\" " + commonIframeProps + "></iframe>";
448
- }
449
- // jadams: added Wistia Player
450
- else if (videoInfo.wistia) {
701
+ } else if (videoInfo.wistia) {
451
702
  var wistiaId = 'lg-wistia' + index;
452
703
  var playerParams = param(this.settings.wistiaPlayerParams);
453
704
  playerParams = playerParams ? '?' + playerParams : '';
454
705
 
455
- video = "<iframe allow=\"autoplay\" id=\"" + wistiaId + "\" src=\"//fast.wistia.net/embed/" + videoInfo.wistia[3] + (videoInfo.wistia[4] + playerParams) + "\" " + videoTitle + " class=\"wistia_embed lg-video-object lg-wistia " + addClass + "\" name=\"wistia_embed\" " + commonIframeProps + "></iframe>";
456
- }
457
- // jadams: added Dailymotion Player
458
- else if (videoInfo.dailymotion) {
706
+ video = "<iframe allow=\"autoplay\" id=\"" + wistiaId + "\" src=\"//fast.wistia.net/embed/iframe/" + (videoInfo.wistia[4] + playerParams) + "\" " + videoTitle + " class=\"wistia_embed lg-video-object lg-wistia " + addClass + "\" name=\"wistia_embed\" " + commonIframeProps + "></iframe>";
707
+ } else if (videoInfo.dailymotion) {
459
708
  var dailymotionId = 'lg-dailymotion' + index;
460
709
  var playerParams = param(this.settings.dailymotionPlayerParams);
461
710
  playerParams = playerParams ? '?' + playerParams : '';
462
711
 
463
- video = "<iframe allow=\"autoplay\" id=\"" + dailymotionId + "\" src=\"//www.dailymotion.com/embed/video/" + (videoInfo.dailymotion[1] + playerParams) + "\" " + videoTitle + " class=\"dailymotion_embed lg-video-object lg-dailymotion " + addClass + "\" name=\"dailymotion_embed\" " + commonIframeProps + "></iframe>";
464
- }
465
- // jadams, 2024-01-22: added TicToc Player
466
- else if (videoInfo.tiktoc) {
467
- var tictocId = 'lg-tictoc' + index;
468
- var playerParams = getTikTokURLParams(this.settings.TicTocPlayerParams);
712
+ video = `
713
+ <iframe
714
+ id="${dailymotionId}"
715
+ src="//dailymotion.com/embed/video/${videoInfo.dailymotion[1]}?api=1 ${playerParams}"
716
+ ${videoTitle}
717
+ class="dailymotion_embed lg-video-object lg-dailymotiion ${addClass}"
718
+ name="dailymotion_embed"
719
+ ${commonIframeProps}>
720
+ </iframe>
721
+ `;
469
722
 
470
- video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-tictoc " + addClass + "\" " + videoTitle + " src=\"//tiktok.com/embed/" + (videoInfo.tiktoc[1]) + "\" " + videoTitle + commonIframeProps + "></iframe>";
471
- }
472
- else if (videoInfo.html5) {
473
- var html5VideoMarkup = '';
474
- for (var i = 0; i < html5Video.source.length; i++) {
475
- html5VideoMarkup += "<source src=\"" + html5Video.source[i].src + "\" type=\"" + html5Video.source[i].type + "\">";
476
- }
477
- if (html5Video.tracks) {
723
+ } else if (videoInfo.html5) {
724
+ var html5VideoMarkup = '';
725
+ for (var i = 0; i < html5Video.source.length; i++) {
726
+ var type = html5Video.source[i].type;
727
+ var typeAttr = type ? "type=\"" + type + "\"" : '';
728
+ html5VideoMarkup += "<source src=\"" + html5Video.source[i].src + "\" " + typeAttr + ">";
729
+ }
730
+ if (html5Video.tracks) {
478
731
  var _loop_1 = function (i) {
479
- var trackAttributes = '';
480
- var track = html5Video.tracks[i];
481
- Object.keys(track || {}).forEach(function (key) {
482
- trackAttributes += key + "=\"" + track[key] + "\" ";
483
- });
484
- html5VideoMarkup += "<track " + trackAttributes + ">";
732
+ var trackAttributes = '';
733
+ var track = html5Video.tracks[i];
734
+ Object.keys(track || {}).forEach(function (key) {
735
+ trackAttributes += key + "=\"" + track[key] + "\" ";
736
+ });
737
+ html5VideoMarkup += "<track " + trackAttributes + ">";
485
738
  };
486
739
  for (var i = 0; i < html5Video.tracks.length; i++) {
487
- _loop_1(i);
740
+ _loop_1(i);
488
741
  }
489
- }
490
-
491
- var html5VideoAttrs_1 = '';
492
- var videoAttributes_1 = html5Video.attributes || {};
493
- var html5VideoAttrs = html5VideoAttrs_1;
494
-
495
- Object.keys(videoAttributes_1 || {}).forEach(function (key) {
742
+ }
743
+ var html5VideoAttrs_1 = '';
744
+ var videoAttributes_1 = html5Video.attributes || {};
745
+ Object.keys(videoAttributes_1 || {}).forEach(function (key) {
496
746
  html5VideoAttrs_1 += key + "=\"" + videoAttributes_1[key] + "\" ";
497
- });
498
-
499
- var videojsTheme = (this.settings.videojsTheme) ? this.settings.videojsTheme : '';
500
- var videojsSettings = (this.settings.videojs) ? 'video-js' : '';
501
-
502
- // jadams: template string
503
- video = `
504
- <video class="lg-video-object lg-html5 ${videojsTheme} ${videojsSettings} " ${html5VideoAttrs}>
505
- ${html5VideoMarkup}
506
- Your browser does not support HTML5 video.
507
- </video>
508
- `;
509
-
510
- // var video = `
511
- // <video
512
- // id="${videoId}"
513
- // class="lg-video-object lg-youtube vjs-theme-uno video-js">
514
- // data-setup='{
515
- // "fluid" : true,
516
- // "techOrder": [
517
- // "youtube", "html5"
518
- // ],
519
- // "sources": [{
520
- // "type": "video/youtube",
521
- // "src": "//youtube.com/watch?v=nV8UZJNBY6"
522
- // }],
523
- // "controlBar": {
524
- // "pictureInPictureToggle": false,
525
- // "volumePanel": {
526
- // "inline": false
527
- // }
528
- // }
529
- // }'>
530
- // Your browser does not support HTML5 video
531
- // </video>
532
- // `;
533
-
534
- // video = "<video class=\"lg-video-object lg-html5 " + (this.settings.videojs && this.settings.videojsTheme
535
- // ? this.settings.videojsTheme + ' '
536
- // : '') + " " + (this.settings.videojs ? ' video-js' : '') + "\" " + html5VideoAttrs_1 + ">\n " + html5VideoMarkup + "\n Your browser does not support HTML5 video.\n </video>";
747
+ });
537
748
 
749
+ video = "<video class=\"lg-video-object lg-html5 " + (this.settings.videojs && this.settings.videojsTheme
750
+ ? this.settings.videojsTheme + ' '
751
+ : '') + " " + (this.settings.videojs ? ' video-js' : '') + "\" " + html5VideoAttrs_1 + ">\n " + html5VideoMarkup + "\n Your browser does not support HTML5 video.\n </video>";
538
752
  }
539
753
 
540
754
  return video;
@@ -546,32 +760,82 @@
546
760
  * @param {HTMLElement} el - slide element
547
761
  * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo
548
762
  */
549
- Video.prototype.appendVideos = function (el, videoParams) {
550
- var _a;
551
- var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
763
+ Video.prototype.appendVideo = function (el, videoParams) {
764
+ var vjsPlayer;
765
+ var _a = {};
766
+ var videojsEnabled = false;
767
+ var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
768
+
552
769
  el.find('.lg-video-cont').append(videoHtml);
553
770
  var $videoElement = el.find('.lg-video-object').first();
771
+
772
+ // check the HTML Element for the active player (failsafe)
773
+ // if NOT available, something went totally wrong
774
+ if (!$videoElement.get()) {
775
+ return;
776
+ }
777
+
554
778
  if (videoParams.html5Video) {
555
779
  $videoElement.on('mousedown.lg.video', function (e) {
556
780
  e.stopPropagation();
557
781
  });
558
782
  }
559
- if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {
783
+
784
+ _a = this.core.galleryItems[videoParams.index].__slideVideoInfo;
785
+ _a.videojs = { enabled: false };
786
+ videojsEnabled = videoHtml.includes('iframe');
787
+ _a.videojs.enabled = (videojsEnabled) ? false : true;
788
+
789
+ // jadams, 2025-06-13: process html5
790
+ if (this.settings.videojs && (_a === null || _a === void 0 ? void 0 : _a.html5)) {
560
791
  try {
561
- return videojs($videoElement.get(), this.settings.videojsOptions);
792
+ if (_a.videojs.enabled) {
793
+ vjsPlayer = videojs($videoElement.get(), this.settings.videojsOptions);
794
+ this.settings.vjsPlayer = vjsPlayer;
795
+ _a.videojs.player = vjsPlayer;
796
+
797
+ return vjsPlayer;
798
+ }
562
799
  }
563
800
  catch (e) {
564
- console.warn('lightGallery: Make sure you have included videojs');
801
+ // jadams:
802
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
565
803
  }
566
804
  }
567
- };
568
805
 
806
+ // jadams, 2025-06-13: process youtube
807
+ if (this.settings.videojs && (_a === null || _a === void 0 ? void 0 : _a.youtube)) {
808
+ try {
809
+ if (_a.videojs.enabled) {
810
+ vjsPlayer = videojs($videoElement.get(), this.settings.videojsOptions);
811
+ this.settings.vjsPlayer = vjsPlayer;
812
+ _a.videojs.player = vjsPlayer;
813
+
814
+ return vjsPlayer;
815
+ }
816
+ }
817
+ catch (e) {
818
+ // jadams:
819
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
820
+ }
821
+ }
822
+
823
+ }; // END appendVideo
824
+
825
+ // jadams
569
826
  Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {
570
827
  var _this = this;
571
828
  var $videoElement = this.core
572
829
  .getSlideItem(index)
573
830
  .find('.lg-video-object')
574
831
  .first();
832
+
833
+ // try to get HTML Element for the active player (failsafe)
834
+ // if NOT available, something went totally wrong
835
+ if (!$videoElement.get()) {
836
+ return;
837
+ }
838
+
575
839
  var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
576
840
  if (this.settings.gotoNextSlideOnVideoEnd) {
577
841
  if (videoInfo.html5) {
@@ -587,8 +851,8 @@
587
851
  });
588
852
  }
589
853
  catch (e) {
590
- // jadams:
591
- console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
854
+ // jadams
855
+ console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');
592
856
  }
593
857
  }
594
858
  else if (videoInfo.wistia) {
@@ -605,269 +869,60 @@
605
869
  });
606
870
  }
607
871
  catch (e) {
608
- // jadams:
609
- console.warn('lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
872
+ // jadams
873
+ console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
610
874
  }
611
875
  }
612
876
  }
613
877
  };
614
878
 
879
+ // jadams: 2025-06-11: Add (extended) VideoJS control elements
880
+ // for HTML5 video over VJS (to be extended for e.g.YouTube)
881
+ // ---------------------------------------------------------------------
615
882
  Video.prototype.controlVideo = function (index, action) {
616
- const vjsOptions = j1.modules.videojs.options;
617
- var trackSrc,
618
- $videoElement, videoInfo, videoStart, videoData, videoId,
619
- videojsPlayer, playbackRates,
620
- hotKeysPlugin, skipButtonsPlugin, zoomPlugin;
621
-
622
- var playbackRatesDefaults = vjsOptions.playbackRates.values;
623
- var chapterTracksEnabled = false;
624
-
625
- var hotKeysPluginDefaults = {
626
- volumeStep: vjsOptions.plugins.hotKeys.volumeStep,
627
- seekStep: vjsOptions.plugins.hotKeys.seekStep,
628
- enableMute: vjsOptions.plugins.hotKeys.enableMute,
629
- enableVolumeScroll: vjsOptions.plugins.hotKeys.enableVolumeScroll,
630
- enableHoverScroll: vjsOptions.plugins.hotKeys.enableHoverScroll,
631
- enableFullscreen: vjsOptions.plugins.hotKeys.enableFullscreen,
632
- enableNumbers: vjsOptions.plugins.hotKeys.enableNumbers,
633
- enableJogStyle: vjsOptions.plugins.hotKeys.enableJogStyle,
634
- alwaysCaptureHotkeys: vjsOptions.plugins.hotKeys.alwaysCaptureHotkeys,
635
- captureDocumentHotkeys: vjsOptions.plugins.hotKeys.captureDocumentHotkeys,
636
- enableModifiersForNumbers: vjsOptions.plugins.hotKeys.enableModifiersForNumbers,
637
- enableInactiveFocus: vjsOptions.plugins.hotKeys.enableInactiveFocus,
638
- skipInitialFocus: vjsOptions.plugins.hotKeys.skipInitialFocus
639
- };
640
-
641
- var skipButtonsPluginDefaults = {
642
- backward: vjsOptions.plugins.skipButtons.backward,
643
- forward: vjsOptions.plugins.skipButtons.forward,
644
- backwardIndex: 0,
645
- forwardIndex: 1
646
- };
647
-
648
- var zoomPluginDefaults = {
649
- moveX: vjsOptions.plugins.zoomButtons.moveX,
650
- moveY: vjsOptions.plugins.zoomButtons.moveY,
651
- rotate: vjsOptions.plugins.zoomButtons.rotate,
652
- zoom: vjsOptions.plugins.zoomButtons.zoom
653
- };
654
-
655
- videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
883
+ var $videoElement, videoInfo, videoId;
884
+ var videojsPlayer = 'not_set';
885
+
886
+ // load the lgQuery element for the active player
656
887
  $videoElement = this.core
657
888
  .getSlideItem(index)
658
889
  .find('.lg-video-object')
659
890
  .first()
660
891
 
661
- // chapter tracks only available for VJS
662
- //
663
- if (this.core.galleryItems[this.core.index].video !== undefined && videoInfo.html5) {
664
- videoData = JSON.parse(this.core.galleryItems[this.core.index].video);
665
-
666
- if (videoData.tracks !== undefined && videoData.tracks.length > 0) {
667
- for (var i=0; i<videoData.tracks.length; i++) {
668
- if (videoData.tracks[i].kind == 'chapters') {
669
- trackSrc = videoData.tracks[i].src;
670
- chapterTracksEnabled = true;
671
- }
672
- }
673
- } // END if videoData.tracks
674
-
675
- if ($videoElement.selector !== undefined) {
676
- videoId = $videoElement.selector.id;
677
- videojsPlayer = videojs(videoId);
678
- } else {
679
- videojsPlayer = 'unknown';
680
- }
681
-
682
- if (videojsPlayer !== 'unknown') {
683
-
684
- // added VJS Plugins hotKeys|skipButtons|zoom, playbackRates
685
- // -------------------------------------------------------------
686
- hotKeysPlugin = this.settings.videojsOptions.controlBar.hotKeysPlugin;
687
- skipButtonsPlugin = this.settings.videojsOptions.controlBar.skipButtonsPlugin;
688
- zoomPlugin = this.settings.videojsOptions.controlBar.zoomPlugin;
689
- playbackRates = (this.settings.videojsOptions.controlBar.playbackRates !== undefined) ? this.settings.videojsOptions.controlBar.playbackRates : playbackRatesDefaults;
690
-
691
- // jadams, 2024-01-22: added video start position
692
- // -------------------------------------------------------------
693
- if (this.settings.videojsOptions.videoStart !== undefined) {
694
- videoStart = this.settings.videojsOptions.videoStart[index];
695
- videojsPlayer.on("play", function() {
696
- var startFromSecond = new Date('1970-01-01T' + videoStart + 'Z').getTime() / 1000;
697
- videojsPlayer.currentTime(startFromSecond);
698
- }); // END on event play
699
- } // END if videoStart
700
-
701
- // add playbackRates (only available for VJS)
702
- if (videojsPlayer.playbackRates !== undefined) {
703
- videojsPlayer.playbackRates(playbackRates);
704
- }
705
-
706
- // add hotkeys Plugin (only available for VJS)
707
- if (hotKeysPlugin !== undefined && hotKeysPlugin.enabled && videojsPlayer.hotKeys !== undefined) {
708
-
709
- // merge objects
710
- hotKeysPlugin.options = __assign(__assign({}, hotKeysPluginDefaults), hotKeysPlugin.options);
711
-
712
- // prevent multiple plugin instances
713
- var hotKeysActive = false;
714
- if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.hotKeys !== undefined) {
715
- hotKeysActive = videojsPlayer.activePlugins_.hotKeys;
716
- }
717
-
718
- if (!hotKeysActive) {
719
- videojsPlayer.hotKeys({
720
- volumeStep: hotKeysPlugin.options.volumeStep,
721
- seekStep: hotKeysPlugin.options.seekStep,
722
- enableMute: hotKeysPlugin.options.enableMute,
723
- enableFullscreen: hotKeysPlugin.options.enableFullscreen,
724
- enableNumbers: hotKeysPlugin.options.enableNumbers,
725
- enableVolumeScroll: hotKeysPlugin.options.enableVolumeScroll,
726
- enableHoverScroll: hotKeysPlugin.options.enableHoverScroll,
727
- alwaysCaptureHotkeys: hotKeysPlugin.options.alwaysCaptureHotkeys,
728
- captureDocumentHotkeys: hotKeysPlugin.options.captureDocumentHotkeys,
729
- documentHotkeysFocusElementFilter: hotKeysPlugin.options.documentHotkeysFocusElementFilter,
730
-
731
- // Mimic VLC seek behavior (default to: 15)
732
- seekStep: function(e) {
733
- if (e.ctrlKey && e.altKey) {
734
- return 5*60;
735
- } else if (e.ctrlKey) {
736
- return 60;
737
- } else if (e.altKey) {
738
- return 10;
739
- } else {
740
- return 15;
741
- }
742
- }
743
-
744
- });
745
- } // END if hotKeysActive
746
-
747
- } // END if hotKeysPlugin enabled
748
-
749
- // add skipButtons Plugin (only available for VJS)
750
- // -------------------------------------------------------------
751
- if (skipButtonsPlugin !== undefined && skipButtonsPlugin.enabled && videojsPlayer.skipButtons !== undefined) {
752
- // merge objects
753
- skipButtonsPlugin.options = __assign(__assign({}, skipButtonsPluginDefaults), skipButtonsPlugin.options);
754
-
755
- // prevent multiple plugin instances
756
- var skipButtonsActive = false;
757
- if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.skipButtons !== undefined) {
758
- skipButtonsActive = videojsPlayer.activePlugins_.skipButtons;
759
- }
760
-
761
- if (!skipButtonsActive) {
762
- videojsPlayer.skipButtons({
763
- backward: skipButtonsPlugin.options.backward,
764
- forward: skipButtonsPlugin.options.forward,
765
- backwardIndex: skipButtonsPlugin.options.backwardIndex,
766
- forwardIndex: skipButtonsPlugin.options.forwardIndex
767
- });
768
- }
769
-
770
- } // END if skipButtons Plugin enabled
771
-
772
- // add zoom Plugin (only available for VJS)
773
- // -----------------------------------------------------------------
774
- if (zoomPlugin !== undefined && zoomPlugin.enabled && videojsPlayer.zoomButtons !== undefined) {
775
- // merge objects
776
- zoomPlugin.options = __assign(__assign({}, zoomPluginDefaults), zoomPlugin.options);
777
-
778
- // prevent multiple plugin instances
779
- var zoomButtonsActive = false;
780
- if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.zoomButtons !== undefined) {
781
- zoomButtonsActive = videojsPlayer.activePlugins_.zoomButtons;
782
- }
783
-
784
- if (!zoomButtonsActive) {
785
- videojsPlayer.zoomButtons({
786
- moveX: zoomPlugin.options.moveX,
787
- moveY: zoomPlugin.options.moveY,
788
- rotate: zoomPlugin.options.rotate,
789
- zoom: zoomPlugin.options.zoom
790
- });
791
- }
792
-
793
- } // END if zoom Plugin enabled
794
-
795
- // chapter track processing (only available for VJS)
796
- // -----------------------------------------------------------------
797
- if (chapterTracksEnabled) {
798
- var parser = new WebVTTParser();
799
- var markers = [];
800
-
801
- function cb_load (data /* ,textStatus, jqXHR */ ) {
802
- var tree = parser.parse(data, 'metadata');
803
- var marker;
804
-
805
- // add chapter tracks to markers array
806
- for (var i=0; i<tree.cues.length; i++) {
807
- marker = { time: tree.cues[i].startTime, label: tree.cues[i].text };
808
- markers.push(marker);
809
- }
810
- }; // END function cb_load
811
-
812
- // load chapter tracks
813
- // -------------------------------------------------------------
814
- loadVtt(trackSrc, cb_load);
815
-
816
- // add chapter tracks on play
817
- videojsPlayer.on("play", function() {
818
- videojsPlayer.currentTime(videoStart);
819
-
820
- var total = videojsPlayer.duration();
821
- var timeline = $(videojsPlayer.controlBar.progressControl.children_[0].el_);
822
-
823
- // add chapter tracks on timeline (delayed)
824
- setTimeout (function() {
825
- var markers_loaded = setInterval (function () {
826
- if (markers.length) {
827
- for (var i=0; i<markers.length; i++) {
828
- var left = (markers[i].time / total * 100) + '%';
829
- var time = markers[i].time;
830
- var el = $('<div class="vjs-chapter-marker" style="left: ' +left+ '" data-time="' +time+ '"> <span>' +markers[i].label+ '</span></div>');
892
+ // try to get HTML Element for the active player (failsafe)
893
+ // if NOT available, something went totally wrong
894
+ if (!$videoElement.get()) {
895
+ return;
896
+ }
831
897
 
832
- el.click(function() {
833
- videojsPlayer.currentTime($(this).data('time'));
834
- });
898
+ // load the INFO object for the active player
899
+ videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
835
900
 
836
- timeline.append(el);
837
- }
838
- clearInterval(markers_loaded);
839
- }
840
- }, 10); // END markers_loaded
841
- }, 1000 ); // END setTimeout
901
+ // process video of type 'html5' for extended VJS settings
902
+ // -----------------------------------------------------------------
903
+ // if (this.core.galleryItems[this.core.index].video !== undefined && (videoInfo.html5 || videoInfo.youtube)) {
904
+ if (videoInfo.html5 || videoInfo.youtube) {
842
905
 
843
- }); // END on "play"
906
+ // if ($videoElement.selector.id !== undefined) {
907
+ // videoId = $videoElement.selector.id;
908
+ // videojsPlayer = videojs(videoId);
909
+ // }
844
910
 
845
- } // END if chapterTracksEnabled
911
+ if ($videoElement.selector.player !== undefined) {
912
+ videojsPlayer = $videoElement.selector.player;
913
+ }
846
914
 
915
+ if (videojsPlayer !== 'not_set') {
916
+ vjsProcessExtendedButtonsAndPlugins(this, videojsPlayer, videoInfo);
847
917
  } // END if videojsPlayer is defined
848
918
 
849
919
  } // END if videoInfo.html5
850
920
 
851
- if (!$videoElement.get())
852
- return;
853
- if (videoInfo.youtube) {
854
- try {
855
- $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
856
- }
857
- catch (e) {
858
- console.error("lightGallery:- " + e);
859
- }
860
- }
861
- else if (videoInfo.vimeo) {
862
- try {
863
- new Vimeo.Player($videoElement.get())[action]();
864
- }
865
- catch (e) {
866
- console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
867
- }
868
- }
869
- else if (videoInfo.html5) {
921
+ // check responses of the (active) player loaded
922
+ // -----------------------------------------------------------------
923
+ if (videoInfo.html5) {
870
924
  if (this.settings.videojs) {
925
+ // VideoJS API detected
871
926
  try {
872
927
  videojs($videoElement.get())[action]();
873
928
  }
@@ -876,10 +931,35 @@
876
931
  }
877
932
  }
878
933
  else {
934
+ // iFrame API detected (??? supported ???)
879
935
  $videoElement.get()[action]();
936
+ } // END html5
937
+ } else if (videoInfo.youtube) {
938
+ if (this.settings.videojs) {
939
+ // VideoJS API detected
940
+ try {
941
+ videojs($videoElement.get())[action]();
942
+ }
943
+ catch (e) {
944
+ console.warn('lightGallery: Make sure you have included videojs');
945
+ }
946
+ } else {
947
+ // iFrame API detected
948
+ try {
949
+ $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
950
+ }
951
+ catch (e) {
952
+ console.error("lightGallery:- " + e);
953
+ }
954
+ } // END youtube
955
+ } else if (videoInfo.vimeo) {
956
+ try {
957
+ new Vimeo.Player($videoElement.get())[action]();
880
958
  }
881
- }
882
- else if (videoInfo.wistia) {
959
+ catch (e) {
960
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
961
+ } // END vimeo
962
+ } else if (videoInfo.wistia) {
883
963
  try {
884
964
  window._wq = window._wq || [];
885
965
  // @todo Find a way to destroy wistia player instance
@@ -892,8 +972,8 @@
892
972
  }
893
973
  catch (e) {
894
974
  console.warn('lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
895
- }
896
- }
975
+ } // END wistia
976
+ } // END if videoInfo
897
977
 
898
978
  }; // END controlVideo
899
979
 
@@ -901,7 +981,7 @@
901
981
  var _this = this;
902
982
  // check slide has poster
903
983
  if (!$el.hasClass('lg-video-loaded')) {
904
- // check if video element present
984
+ // check already video element present
905
985
  if (!$el.hasClass('lg-has-video')) {
906
986
  $el.addClass('lg-has-video');
907
987
  var _html = void 0;
@@ -911,7 +991,7 @@
911
991
  _html =
912
992
  typeof video === 'string' ? JSON.parse(video) : video;
913
993
  }
914
- var videoJsPlayer_1 = this.appendVideos($el, {
994
+ var videoJsPlayer_1 = this.appendVideo($el, {
915
995
  src: _src,
916
996
  addClass: '',
917
997
  index: this.core.index,
@@ -944,12 +1024,10 @@
944
1024
  this.playVideo(this.core.index);
945
1025
  }
946
1026
  };
947
-
948
1027
  Video.prototype.onVideoLoadAfterPosterClick = function ($el, index) {
949
1028
  $el.addClass('lg-video-loaded');
950
1029
  this.playVideo(index);
951
1030
  };
952
-
953
1031
  Video.prototype.destroy = function () {
954
1032
  this.core.LGel.off('.lg.video');
955
1033
  this.core.LGel.off('.video');