j1-template 2024.3.23 → 2024.3.25

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 (301) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/apps/amplitudehtml +1147 -0
  3. data/assets/data/apps/gallery.html +342 -0
  4. data/assets/data/{masonry.html → apps/masonry.html} +22 -9
  5. data/assets/data/apps/swiper.html +901 -0
  6. data/assets/data/gallery_app.html +102 -14
  7. data/assets/data/masonry_app.html +521 -0
  8. data/assets/theme/j1/adapter/js/gallery.js +13 -2
  9. data/assets/theme/j1/core/css/themes/unolight/bootstrap.css +29 -0
  10. data/assets/theme/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  11. data/assets/theme/j1/core/css/vendor.css +1 -1
  12. data/assets/theme/j1/core/css/vendor.min.css +1 -1
  13. data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.css +21 -13
  14. data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.min.css +1 -2
  15. data/assets/theme/j1/modules/lightGallery/js/lightgallery.js +48 -28
  16. data/assets/theme/j1/modules/lightGallery/js/lightgallery.min.js +1 -8
  17. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js +463 -298
  18. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.min.js +1 -8
  19. data/assets/theme/j1/modules/rtable/css/theme/uno/rtable.css +11 -1
  20. data/assets/theme/j1/modules/videojs/css/themes/uno.css +53 -31
  21. data/assets/theme/j1/modules/videojs/css/themes/uno.min.css +1 -1
  22. data/assets/theme/j1/modules/videojs/css/videojs.css +2 -3
  23. data/assets/theme/j1/modules/videojs/css/videojs.min.css +1 -1
  24. data/assets/theme/j1/modules/videojs/plugins/controls/aspect-ratio-panel/!examples/index.html +4 -9
  25. data/assets/theme/j1/modules/videojs/plugins/controls/hotkeys/!examples/example.html +1 -1
  26. data/assets/theme/j1/modules/videojs/plugins/controls/persist-settings/!examples/index.html +3 -7
  27. data/assets/theme/j1/modules/videojs/plugins/controls/playbackrate-adjuster/!examples/index.html +3 -8
  28. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.css +55 -55
  29. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.min.css +2 -1
  30. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/js/zoom.js +590 -382
  31. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/js/zoom.min.js +1 -1
  32. data/assets/theme/j1/modules/videojs/plugins/j1_core/template.min.js +31 -0
  33. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/index.html +32 -0
  34. data/assets/theme/j1/modules/videojs/plugins/players/dm/js/dailymotion.0.js +647 -0
  35. data/assets/theme/j1/modules/videojs/plugins/players/dm/js/dailymotion.1.js +653 -0
  36. data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/{player → iframe_api}/index.html +6 -6
  37. data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/videojs_api/index.html +38 -0
  38. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/v2.21.0/vimeo.js +3562 -0
  39. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/v2.21.0/vimeo.min.js +36 -0
  40. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/vimeo.js +451 -1849
  41. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/vimeo.min.js +2 -14
  42. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/LICENSE +21 -0
  43. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/README.md +54 -0
  44. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/old/vimeo.js +666 -0
  45. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/old/vimeo.min.js +28 -0
  46. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.js +2318 -548
  47. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.min.js +12 -18
  48. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/index.html +31 -0
  49. data/assets/theme/j1/modules/videojs/plugins/players/yt/js/youtube.js +12 -5
  50. data/assets/theme/j1/modules/videojs/plugins/players/yt/js/youtube.min.js +1 -1
  51. data/lib/j1/version.rb +1 -1
  52. data/lib/starter_web/Gemfile +1 -1
  53. data/lib/starter_web/README.md +5 -5
  54. data/lib/starter_web/_config.yml +2 -2
  55. data/lib/starter_web/_data/blocks/banner.yml +3 -3
  56. data/lib/starter_web/_data/j1_config.yml +1 -1
  57. data/lib/starter_web/_data/layouts/home.yml +1 -1
  58. data/lib/starter_web/_data/modules/attics.yml +11 -0
  59. data/lib/starter_web/_data/modules/authentication.yml +1 -2
  60. data/lib/starter_web/_data/modules/carousel.yml +1 -1
  61. data/lib/starter_web/_data/modules/defaults/masonry.yml +116 -23
  62. data/lib/starter_web/_data/modules/gallery.yml +197 -238
  63. data/lib/starter_web/_data/modules/log4javascript.yml +1 -1
  64. data/lib/starter_web/_data/modules/masonry.yml +36 -14
  65. data/lib/starter_web/_data/modules/navigator.yml +1 -1
  66. data/lib/starter_web/_data/modules/navigator_menu.yml +12 -8
  67. data/lib/starter_web/_data/templates/feed.xml +1 -1
  68. data/lib/starter_web/_includes/attributes.asciidoc +7 -0
  69. data/lib/starter_web/_plugins/asciidoctor/dailymotion-block.rb +206 -24
  70. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  71. data/lib/starter_web/assets/image/module/attic/1920x1280/admin-dashboard-bootstrap.jpg +0 -0
  72. data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-redl.jpg +0 -0
  73. data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-shatov.jpg +0 -0
  74. data/lib/starter_web/assets/image/module/attic/1920x1280/alexey-ruban.jpg +0 -0
  75. data/lib/starter_web/assets/image/module/attic/1920x1280/andrea-badino.jpg +0 -0
  76. data/lib/starter_web/assets/image/module/attic/1920x1280/bootstrap-modal.jpg +0 -0
  77. data/lib/starter_web/assets/image/module/attic/1920x1280/bp-miller.jpg +0 -0
  78. data/lib/starter_web/assets/image/module/attic/1920x1280/brad-neathery.jpg +0 -0
  79. data/lib/starter_web/assets/image/module/attic/1920x1280/brigitta-schneiter.jpg +0 -0
  80. data/lib/starter_web/assets/image/module/attic/1920x1280/build-with-gemini.jpg +0 -0
  81. data/lib/starter_web/assets/image/module/attic/1920x1280/clem-onojeghuo.jpg +0 -0
  82. data/lib/starter_web/assets/image/module/attic/1920x1280/crawford-jolly.jpg +0 -0
  83. data/lib/starter_web/assets/image/module/attic/1920x1280/eleni-afiontzi.jpg +0 -0
  84. data/lib/starter_web/assets/image/module/attic/1920x1280/fly-d.jpg +0 -0
  85. data/lib/starter_web/assets/image/module/attic/1920x1280/guillaume-bolduc.jpg +0 -0
  86. data/lib/starter_web/assets/image/module/attic/1920x1280/ideas-start-here-1920x1280.jpg +0 -0
  87. data/lib/starter_web/assets/image/module/attic/1920x1280/isaac-davis.jpg +0 -0
  88. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-launch.jpg +0 -0
  89. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-mockup.jpg +0 -0
  90. data/lib/starter_web/assets/image/module/attic/1920x1280/john-schnobrich-2.jpg +0 -0
  91. data/lib/starter_web/assets/image/module/attic/1920x1280/josep-martins.jpg +0 -0
  92. data/lib/starter_web/assets/image/module/attic/1920x1280/josh-liu.jpg +0 -0
  93. data/lib/starter_web/assets/image/module/attic/1920x1280/kelly-sikkemal.jpg +0 -0
  94. data/lib/starter_web/assets/image/module/attic/1920x1280/kira-auf-der-heide.jpg +0 -0
  95. data/lib/starter_web/assets/image/module/attic/1920x1280/kristopher-roller.jpg +0 -0
  96. data/lib/starter_web/assets/image/module/attic/1920x1280/markus-spiske.jpg +0 -0
  97. data/lib/starter_web/assets/image/module/attic/1920x1280/martin-sanchez.jpg +0 -0
  98. data/lib/starter_web/assets/image/module/attic/1920x1280/material_symbols.jpg +0 -0
  99. data/lib/starter_web/assets/image/module/attic/1920x1280/matthaeus.jpg +0 -0
  100. data/lib/starter_web/assets/image/module/attic/1920x1280/melanie-deziel.jpg +0 -0
  101. data/lib/starter_web/assets/image/module/attic/1920x1280/milad-fakurian.jpg +0 -0
  102. data/lib/starter_web/assets/image/module/attic/1920x1280/mohammad-rahmani.jpg +0 -0
  103. data/lib/starter_web/assets/image/module/attic/1920x1280/nasa.jpg +0 -0
  104. data/lib/starter_web/assets/image/module/attic/1920x1280/quino-al-2.jpg +0 -0
  105. data/lib/starter_web/assets/image/module/attic/1920x1280/stories-ink-tattoo-care.jpg +0 -0
  106. data/lib/starter_web/assets/image/module/attic/1920x1280/towfiqu-barbhuiya.jpg +0 -0
  107. data/lib/starter_web/assets/image/page/tour/bootswatch-themes.jpg +0 -0
  108. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +1 -1
  109. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +2 -2
  110. data/lib/starter_web/collections/posts/public/featured/_posts/2023-10-18-url-types.adoc +2 -2
  111. data/lib/starter_web/config.ru +1 -1
  112. data/lib/starter_web/dot.gitattributes +1 -1
  113. data/lib/starter_web/index.html +8 -7
  114. data/lib/starter_web/package.json +1 -1
  115. data/lib/starter_web/pages/public/about/features.adoc +5 -5
  116. data/lib/starter_web/pages/public/about/reporting_issues.adoc +5 -5
  117. data/lib/starter_web/pages/public/about/site.adoc +14 -10
  118. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +1 -1
  119. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +1 -1
  120. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +1 -1
  121. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +1 -1
  122. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +1 -1
  123. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +1 -1
  124. data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +1 -1
  125. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +1 -1
  126. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +1 -1
  127. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +1 -1
  128. data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
  129. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
  130. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
  131. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
  132. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +1 -1
  133. data/lib/starter_web/pages/public/learn/bookshelf/viewer_all_books.adoc +1 -1
  134. data/lib/starter_web/pages/public/learn/where_to_go.adoc +1 -1
  135. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +3 -3
  136. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +3 -3
  137. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +3 -3
  138. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -3
  139. data/lib/starter_web/pages/public/panels/intro_panel/_includes/attributes.asciidoc +1 -1
  140. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +1 -4
  141. data/lib/starter_web/pages/public/plans/plans.adoc +1 -1
  142. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +6 -6
  143. data/lib/starter_web/pages/public/tools/tester/app_tester_amplitudejs_yt.adoc +7 -3
  144. data/lib/starter_web/pages/public/tools/tester/app_tester_swiperjs.adoc +7 -3
  145. data/lib/starter_web/pages/public/tools/tester/videojs_macro_tester.adoc +122 -34
  146. data/lib/starter_web/pages/public/tour/_includes/attributes.asciidoc +1 -2
  147. data/lib/starter_web/pages/public/tour/_includes/documents/419_advanced_modals_demo.asciidoc +1 -1
  148. data/lib/starter_web/pages/public/tour/_includes/documents/themes_bootstrap.asciidoc +1 -1
  149. data/lib/starter_web/pages/public/tour/asciidoc_extensions.adoc +7 -3
  150. data/lib/starter_web/pages/public/tour/bootstrap_themes.adoc +62 -7
  151. data/lib/starter_web/pages/public/tour/icon_fonts.adoc +4 -8
  152. data/lib/starter_web/pages/public/tour/modal_extentions.adoc +2 -2
  153. data/lib/starter_web/pages/public/tour/responsive_tables.adoc +21 -15
  154. data/lib/starter_web/pages/public/tour/typography.adoc +5 -5
  155. data/lib/starter_web/pages/public/tour/video_data.adoc +51 -26
  156. metadata +34 -149
  157. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/lg-transitions.css +0 -984
  158. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/lg-transitions.min.css +0 -26
  159. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/lightgallery-bundle.css +0 -1627
  160. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/lightgallery-bundle.min.css +0 -25
  161. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/animation-w.png +0 -0
  162. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/customize-w.png +0 -0
  163. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/dynamic-w.png +0 -0
  164. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/facebook-icon.svg +0 -10
  165. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/googleplus-icon.svg +0 -30
  166. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/html5-w.png +0 -0
  167. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/linked-in.png +0 -0
  168. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/module-w.png +0 -0
  169. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/play-button-hover.svg +0 -94
  170. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/play-button.png +0 -0
  171. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/play-button.svg +0 -93
  172. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/responsive-w.png +0 -0
  173. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/thumb-w.png +0 -0
  174. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/touch-w.png +0 -0
  175. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/twitter-icon.svg +0 -15
  176. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/twitter.png +0 -0
  177. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/video1-w.png +0 -0
  178. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/zoom-w.png +0 -0
  179. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/icons/zoom.png +0 -0
  180. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/uno.css +0 -140
  181. data/assets/theme/j1/modules/lightGallery/!v2.7.2/css/themes/uno/uno.min.css +0 -19
  182. data/assets/theme/j1/modules/lightGallery/!v2.7.2/fonts/lg.svg +0 -54
  183. data/assets/theme/j1/modules/lightGallery/!v2.7.2/fonts/lg.ttf +0 -0
  184. data/assets/theme/j1/modules/lightGallery/!v2.7.2/fonts/lg.woff +0 -0
  185. data/assets/theme/j1/modules/lightGallery/!v2.7.2/fonts/lg.woff2 +0 -0
  186. data/assets/theme/j1/modules/lightGallery/!v2.7.2/images/loading.gif +0 -0
  187. data/assets/theme/j1/modules/lightGallery/!v2.7.2/img/loading.gif +0 -0
  188. data/assets/theme/j1/modules/lightGallery/!v2.7.2/img/video-play.png +0 -0
  189. data/assets/theme/j1/modules/lightGallery/!v2.7.2/img/vimeo-play.png +0 -0
  190. data/assets/theme/j1/modules/lightGallery/!v2.7.2/img/youtube-play.png +0 -0
  191. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/lightgallery.js +0 -2782
  192. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/lightgallery.min.js +0 -26
  193. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/parser/webvtt/LICENSE.md +0 -44
  194. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/parser/webvtt/README.md +0 -37
  195. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/parser/webvtt/parser.js +0 -890
  196. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/parser/webvtt/parser.min.js +0 -8
  197. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/j1/j1-video.js +0 -402
  198. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/j1/j1-video.min.js +0 -7
  199. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/j1/lg-video.1.js +0 -585
  200. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-autoplay.js +0 -275
  201. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-autoplay.min.js +0 -26
  202. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-comment.js +0 -230
  203. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-comment.min.js +0 -26
  204. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-fullscreen.js +0 -160
  205. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-fullscreen.min.js +0 -26
  206. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-hash.js +0 -223
  207. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-hash.min.js +0 -27
  208. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-medium-zoom.js +0 -157
  209. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-medium-zoom.min.js +0 -26
  210. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-pager.js +0 -164
  211. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-pager.min.js +0 -26
  212. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-rotate.js +0 -299
  213. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-rotate.min.js +0 -26
  214. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-share.js +0 -244
  215. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-share.min.js +0 -27
  216. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-thumbnail.js +0 -509
  217. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-thumbnail.min.js +0 -26
  218. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-video.js +0 -909
  219. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-video.min.js +0 -26
  220. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-vimeo-thumbnail.js +0 -207
  221. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-vimeo-thumbnail.min.js +0 -26
  222. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-zoom.js +0 -999
  223. data/assets/theme/j1/modules/lightGallery/!v2.7.2/js/plugins/lg-zoom.min.js +0 -26
  224. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-thumbnail.0.js +0 -495
  225. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-thumbnail.1.js +0 -513
  226. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-video.0.js +0 -553
  227. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-video.1.js +0 -585
  228. data/assets/theme/j1/modules/lightGallery/js/plugins/j1/lg-video.2.js +0 -914
  229. data/assets/theme/j1/modules/videojs/!v8.12.0/css/font/README.md +0 -151
  230. data/assets/theme/j1/modules/videojs/!v8.12.0/css/font/VideoJS.svg +0 -150
  231. data/assets/theme/j1/modules/videojs/!v8.12.0/css/font/video-js-cdn.css +0 -2012
  232. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/city.css +0 -147
  233. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/city.min.css +0 -5
  234. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/fantasy.css +0 -113
  235. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/fantasy.min.css +0 -5
  236. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/forest.css +0 -166
  237. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/forest.min.css +0 -5
  238. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/sea.css +0 -72
  239. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/sea.min.css +0 -5
  240. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/uno.css +0 -311
  241. data/assets/theme/j1/modules/videojs/!v8.12.0/css/themes/uno.min.css +0 -19
  242. data/assets/theme/j1/modules/videojs/!v8.12.0/css/videojs.css +0 -1686
  243. data/assets/theme/j1/modules/videojs/!v8.12.0/css/videojs.min.css +0 -13
  244. data/assets/theme/j1/modules/videojs/!v8.12.0/js/video.js +0 -65226
  245. data/assets/theme/j1/modules/videojs/!v8.12.0/js/video.min.js +0 -55
  246. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-controls.html +0 -18
  247. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-javascript.html +0 -28
  248. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-playlist.html +0 -19
  249. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/global-parameters.html +0 -30
  250. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/simple.html +0 -20
  251. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/switch.html +0 -39
  252. data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/index.html +0 -34
  253. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/global-parameters.html +0 -34
  254. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/simple.html +0 -22
  255. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/switch.html +0 -39
  256. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-controls.html +0 -20
  257. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-javascript.html +0 -29
  258. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-list.html +0 -21
  259. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-playlist.html +0 -21
  260. data/lib/starter_web/_data/modules/gallery_app.yml +0 -1002
  261. data/lib/starter_web/_data/modules/gallery_playlists.yml +0 -534
  262. data/lib/starter_web/assets/image/module/attic/1920x1280/alina-grubnyak.jpg +0 -0
  263. data/lib/starter_web/assets/image/module/attic/1920x1280/bruno-figueiredo.jpg +0 -0
  264. data/lib/starter_web/assets/image/module/attic/1920x1280/harpal-singh.jpg +0 -0
  265. data/lib/starter_web/assets/image/module/attic/1920x1280/hayden-mills-2.jpg +0 -0
  266. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-1.jpg +0 -0
  267. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-2.jpg +0 -0
  268. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-3.jpg +0 -0
  269. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg +0 -0
  270. data/lib/starter_web/assets/image/module/attic/1920x1280/recha-oktaviani.jpg +0 -0
  271. data/lib/starter_web/assets/image/module/attic/1920x1280/tiny_desk.jpg +0 -0
  272. data/lib/starter_web/assets/image/module/attic/admin-dashboard-bootstrap-1280x600.jpg +0 -0
  273. data/lib/starter_web/assets/image/module/attic/alice-donovan-rouse-2.jpg +0 -0
  274. data/lib/starter_web/assets/image/module/attic/building-blocks-1920x1280.jpg +0 -0
  275. data/lib/starter_web/assets/image/module/attic/christina-1920x1280.jpg +0 -0
  276. data/lib/starter_web/assets/image/module/attic/franck-1920x1280.jpg +0 -0
  277. data/lib/starter_web/assets/image/module/attic/giammarco-boscaro-1920x1280.jpg +0 -0
  278. data/lib/starter_web/assets/image/module/attic/ideas-start-here-1920x1280-bw.jpg +0 -0
  279. data/lib/starter_web/assets/image/module/attic/ideas-start-here-1920x1280.jpg +0 -0
  280. data/lib/starter_web/assets/image/module/attic/jessica-ruscello-1920x1280.jpg +0 -0
  281. data/lib/starter_web/assets/image/module/attic/joanna-kosinska-1920x1280.jpg +0 -0
  282. data/lib/starter_web/assets/image/module/attic/leon-1920x1280.jpg +0 -0
  283. data/lib/starter_web/assets/image/module/attic/lianhao-1920x1280.jpg +0 -0
  284. data/lib/starter_web/assets/image/module/attic/library-1920x1280.jpg +0 -0
  285. data/lib/starter_web/assets/image/module/attic/markus-krisetya-1920x1280.jpg +0 -0
  286. data/lib/starter_web/assets/image/module/attic/markus-spiske-1920x1280.jpg +0 -0
  287. data/lib/starter_web/assets/image/module/attic/markus-spiske4-1920x1280.jpg +0 -0
  288. data/lib/starter_web/assets/image/module/attic/matthaeus-1920x1280.jpg +0 -0
  289. data/lib/starter_web/assets/image/module/attic/matthew-dockery-1920x1280.jpg +0 -0
  290. data/lib/starter_web/assets/image/module/attic/no-time-1920x1280.jpg +0 -0
  291. data/lib/starter_web/assets/image/module/attic/rirri-1920x1280.jpg +0 -0
  292. data/lib/starter_web/assets/image/module/attic/shubham-dhage-1920x1280.jpg +0 -0
  293. data/lib/starter_web/assets/image/module/attic/shutterstock_sponsor-1920x1280.jpg +0 -0
  294. data/lib/starter_web/assets/image/module/attic/sigmund-1920x1280.jpg +0 -0
  295. data/lib/starter_web/assets/image/module/attic/szabo-viktor-1920x1280.jpg +0 -0
  296. data/lib/starter_web/assets/image/module/attic/themes-1920x1280-bw.jpg +0 -0
  297. data/lib/starter_web/assets/image/module/attic/tldr-1920x800.jpg +0 -0
  298. data/lib/starter_web/assets/image/module/attic/vladislav-klapin-1920x1280.jpg +0 -0
  299. data/lib/starter_web/assets/image/module/attic/yellow-cactus-1920x1280.jpg +0 -0
  300. /data/assets/theme/j1/modules/videojs/plugins/players/vm/{LICENSE → js/old/LICENSE} +0 -0
  301. /data/assets/theme/j1/modules/videojs/plugins/players/vm/{README.md → js/old/README.md} +0 -0
@@ -27,7 +27,8 @@
27
27
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
28
28
  typeof define === 'function' && define.amd ? define(factory) :
29
29
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgVideo = factory());
30
- }(this, (function () { 'use strict';
30
+ }(this, (function () {
31
+ 'use strict';
31
32
 
32
33
  /*! *****************************************************************************
33
34
  Copyright (c) Microsoft Corporation.
@@ -105,6 +106,11 @@
105
106
  autoplayStop: 'lgAutoplayStop',
106
107
  };
107
108
 
109
+
110
+ var isEmpty = function (obj) {
111
+ return Object.keys(obj).length === 0;
112
+ };
113
+
108
114
  var param = function (obj) {
109
115
  return Object.keys(obj)
110
116
  .map(function (k) {
@@ -216,7 +222,305 @@
216
222
  }
217
223
  });
218
224
 
219
- } // END loadVtt
225
+ }; // END loadVtt
226
+
227
+ // jadams
228
+ // -------------------------------------------------------------------------
229
+ // vjsProcessExtendedButtonsAndPlugins
230
+ // Loads a given WEBVTT file (from data path) and process loaded
231
+ // data in callback cb (function)
232
+ // -------------------------------------------------------------------------
233
+ var vjsProcessExtendedButtonsAndPlugins = function (vjsObject, videojsPlayer, videoInfo) {
234
+ const vjsOptions = j1.modules.videojs.options;
235
+ var dependency_met_module_ready, videoInfo, videoStart, videojsPlayer,
236
+ playbackRates, hotKeysPlugin, skipButtonsPlugin, zoomPlugin,
237
+ trackSrc;
238
+
239
+ dependency_met_module_ready = setInterval (() => {
240
+ var isModuleInitialised = (j1.adapter.gallery.getState() === 'finished') ? true : false;
241
+ var isVideojsOptions = (isEmpty(vjsObject.settings.videojsOptions)) ? false : true;
242
+
243
+ if (isModuleInitialised && isVideojsOptions) {
244
+ var videoData = { tracks: false };
245
+ var playbackRatesDefaults = vjsOptions.playbackRates.values;
246
+
247
+ // disable chapterTracks by default
248
+ videojsPlayer.chapterTracksEnabled = false;
249
+
250
+ var hotKeysPluginDefaults = {
251
+ volumeStep: vjsOptions.plugins.hotKeys.volumeStep,
252
+ seekStep: vjsOptions.plugins.hotKeys.seekStep,
253
+ enableMute: vjsOptions.plugins.hotKeys.enableMute,
254
+ enableVolumeScroll: vjsOptions.plugins.hotKeys.enableVolumeScroll,
255
+ enableHoverScroll: vjsOptions.plugins.hotKeys.enableHoverScroll,
256
+ enableFullscreen: vjsOptions.plugins.hotKeys.enableFullscreen,
257
+ enableNumbers: vjsOptions.plugins.hotKeys.enableNumbers,
258
+ enableJogStyle: vjsOptions.plugins.hotKeys.enableJogStyle,
259
+ alwaysCaptureHotkeys: vjsOptions.plugins.hotKeys.alwaysCaptureHotkeys,
260
+ captureDocumentHotkeys: vjsOptions.plugins.hotKeys.captureDocumentHotkeys,
261
+ enableModifiersForNumbers: vjsOptions.plugins.hotKeys.enableModifiersForNumbers,
262
+ enableInactiveFocus: vjsOptions.plugins.hotKeys.enableInactiveFocus,
263
+ skipInitialFocus: vjsOptions.plugins.hotKeys.skipInitialFocus
264
+ };
265
+
266
+ var skipButtonsPluginDefaults = {
267
+ backward: vjsOptions.plugins.skipButtons.backward,
268
+ forward: vjsOptions.plugins.skipButtons.forward,
269
+ backwardIndex: 0,
270
+ forwardIndex: 1
271
+ };
272
+
273
+ var zoomPluginDefaults = {
274
+ moveX: vjsOptions.plugins.zoomButtons.moveX,
275
+ moveY: vjsOptions.plugins.zoomButtons.moveY,
276
+ rotate: vjsOptions.plugins.zoomButtons.rotate,
277
+ zoom: vjsOptions.plugins.zoomButtons.zoom
278
+ };
279
+
280
+ // jadams, 2025-06-11: added customControlContainer
281
+ // -------------------------------------------------------------
282
+ var vjsPlayerControlBar = videojsPlayer.controlBar;
283
+
284
+ // create customControlContainer for progressControlSilder|time (display) elements
285
+ const customProgressContainer = vjsPlayerControlBar.addChild('Component', {
286
+ el: videojs.dom.createEl('div', {
287
+ className: 'vjs-theme-uno custom-progressbar-container'
288
+ })
289
+ });
290
+
291
+ // move progressControlSlider into customControlContainer
292
+ const progressControlSlider = vjsPlayerControlBar.progressControl;
293
+ if (progressControlSlider) {
294
+ customProgressContainer.el().appendChild(progressControlSlider.el());
295
+ }
296
+
297
+ // move currentTimeDisplay BEFORE the progressControlSilder
298
+ const currentTimeDisplay = vjsPlayerControlBar.currentTimeDisplay;
299
+ if (currentTimeDisplay) {
300
+ customProgressContainer.el().insertBefore(currentTimeDisplay.el(), progressControlSlider.el());
301
+ }
302
+
303
+ // move the durationDisplay AFTER the progressControlSilder
304
+ const durationDisplay = vjsPlayerControlBar.durationDisplay;
305
+ if (durationDisplay) {
306
+ customProgressContainer.el().appendChild(durationDisplay.el());
307
+ }
308
+
309
+ // configure VideoJS (extended) Plugins
310
+ // -------------------------------------------------------------
311
+ if (!isEmpty(vjsObject.settings.videojsOptions)) {
312
+
313
+ hotKeysPlugin = vjsObject.settings.videojsOptions.hotKeysPlugin;
314
+ skipButtonsPlugin = vjsObject.settings.videojsOptions.controlBar.skipButtonsPlugin;
315
+ zoomPlugin = vjsObject.settings.videojsOptions.controlBar.zoomPlugin;
316
+ playbackRates = vjsObject.settings.videojsOptions.controlBar.playbackRates;
317
+
318
+ // jadams, 2024-01-22: added video start position
319
+ // ---------------------------------------------------------
320
+ if (vjsObject.settings.videojsOptions.videoStart !== undefined) {
321
+ videoStart = vjsObject.settings.videojsOptions.videoStart[index];
322
+ videojsPlayer.on("play", function() {
323
+ var startFromSecond = new Date('1970-01-01T' + videoStart + 'Z').getTime() / 1000;
324
+ videojsPlayer.currentTime(startFromSecond);
325
+ }); // END on event play
326
+ } // END if videoStart
327
+
328
+ // add playbackRates, only available for VideoJS
329
+ // ---------------------------------------------------------
330
+ videojsPlayer.playbackRates(playbackRates);
331
+
332
+ // add hotkeys Plugin, only available for VideoJS
333
+ // ---------------------------------------------------------
334
+ if (hotKeysPlugin !== undefined && hotKeysPlugin.enabled && videojsPlayer.hotKeys !== undefined) {
335
+
336
+ // merge objects
337
+ hotKeysPlugin.options = __assign(__assign({}, hotKeysPluginDefaults), hotKeysPlugin.options);
338
+
339
+ // prevent multiple plugin instances
340
+ var hotKeysActive = false;
341
+ if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.hotKeys !== undefined) {
342
+ hotKeysActive = videojsPlayer.activePlugins_.hotKeys;
343
+ }
344
+
345
+ if (!hotKeysActive) {
346
+ videojsPlayer.hotKeys({
347
+ volumeStep: hotKeysPlugin.options.volumeStep,
348
+ seekStep: hotKeysPlugin.options.seekStep,
349
+ enableMute: hotKeysPlugin.options.enableMute,
350
+ enableFullscreen: hotKeysPlugin.options.enableFullscreen,
351
+ enableNumbers: hotKeysPlugin.options.enableNumbers,
352
+ enableVolumeScroll: hotKeysPlugin.options.enableVolumeScroll,
353
+ enableHoverScroll: hotKeysPlugin.options.enableHoverScroll,
354
+ alwaysCaptureHotkeys: hotKeysPlugin.options.alwaysCaptureHotkeys,
355
+ captureDocumentHotkeys: hotKeysPlugin.options.captureDocumentHotkeys,
356
+ documentHotkeysFocusElementFilter: hotKeysPlugin.options.documentHotkeysFocusElementFilter,
357
+
358
+ // Mimic VLC seek behavior (default to: 15)
359
+ seekStep: function(e) {
360
+ if (e.ctrlKey && e.altKey) {
361
+ return 5*60;
362
+ } else if (e.ctrlKey) {
363
+ return 60;
364
+ } else if (e.altKey) {
365
+ return 10;
366
+ } else {
367
+ return 15;
368
+ }
369
+ }
370
+
371
+ });
372
+ } // END if hotKeysActive
373
+
374
+ } // END if hotKeysPlugin enabled
375
+
376
+ // add skipButtons Plugin, only available for VideoJS
377
+ // ---------------------------------------------------------
378
+ if (skipButtonsPlugin !== undefined && skipButtonsPlugin.enabled && videojsPlayer.skipButtons !== undefined) {
379
+ // merge objects
380
+ skipButtonsPlugin.options = __assign(__assign({}, skipButtonsPluginDefaults), skipButtonsPlugin.options);
381
+
382
+ // prevent multiple plugin instances
383
+ var skipButtonsActive = false;
384
+ if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.skipButtons !== undefined) {
385
+ skipButtonsActive = videojsPlayer.activePlugins_.skipButtons;
386
+ }
387
+
388
+ if (!skipButtonsActive) {
389
+ videojsPlayer.skipButtons({
390
+ backward: skipButtonsPlugin.options.backward,
391
+ forward: skipButtonsPlugin.options.forward,
392
+ backwardIndex: skipButtonsPlugin.options.backwardIndex,
393
+ forwardIndex: skipButtonsPlugin.options.forwardIndex
394
+ });
395
+ }
396
+
397
+ } // END if skipButtons Plugin enabled
398
+
399
+ // add zoom Plugin (only available for VJS|local video/mp4)
400
+ // ---------------------------------------------------------
401
+ if (videoInfo.youtube) {
402
+ // zoom pluging NOT supported for YouTube
403
+ zoomPlugin.enabled = false;
404
+ }
405
+
406
+ if (zoomPlugin !== undefined && zoomPlugin.enabled && videojsPlayer.zoomButtons !== undefined) {
407
+ // merge objects
408
+ zoomPlugin.options = __assign(__assign({}, zoomPluginDefaults), zoomPlugin.options);
409
+
410
+ // prevent multiple plugin instances
411
+ var zoomButtonsActive = false;
412
+ if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.zoomButtons !== undefined) {
413
+ zoomButtonsActive = videojsPlayer.activePlugins_.zoomButtons;
414
+ }
415
+
416
+ if (!zoomButtonsActive) {
417
+ videojsPlayer.zoomButtons({
418
+ moveX: zoomPlugin.options.moveX,
419
+ moveY: zoomPlugin.options.moveY,
420
+ rotate: zoomPlugin.options.rotate,
421
+ zoom: zoomPlugin.options.zoom
422
+ });
423
+ }
424
+
425
+ } // END if zoom Plugin enabled
426
+
427
+ // chapter tracks only available for VideoJS (local video/mp4)
428
+ // ---------------------------------------------------------
429
+ if (vjsObject.core.galleryItems[vjsObject.core.index].video !== undefined) {
430
+ videoData = JSON.parse(vjsObject.core.galleryItems[vjsObject.core.index].video);
431
+ }
432
+
433
+ // load tracks
434
+ // TODO: chapterTracksEnabled needs to be indivialized
435
+ // per player
436
+ // ---------------------------------------------------------
437
+ if (videoData.tracks && videoData.tracks.length > 0) {
438
+ for (var i=0; i<videoData.tracks.length; i++) {
439
+ if (videoData.tracks[i].kind == 'chapters') {
440
+ trackSrc = videoData.tracks[i].src;
441
+ videojsPlayer.chapterTracksEnabled = true;
442
+ }
443
+ }
444
+ } // END load tracks
445
+
446
+ // process (chapter) tracks if tracks available
447
+ // ---------------------------------------------------------
448
+ if (videojsPlayer.chapterTracksEnabled) {
449
+ var parser = new WebVTTParser();
450
+ var markers = [];
451
+
452
+ function cb_load (data /* ,textStatus, jqXHR */ ) {
453
+ var tree = parser.parse(data, 'metadata');
454
+ var marker;
455
+
456
+ // add chapter tracks to markers array
457
+ for (var i=0; i<tree.cues.length; i++) {
458
+ marker = { time: tree.cues[i].startTime, label: tree.cues[i].text };
459
+ markers.push(marker);
460
+ }
461
+ }; // END function cb_load
462
+
463
+ // load chapter tracks
464
+ // -----------------------------------------------------
465
+ loadVtt(trackSrc, cb_load);
466
+
467
+ // add chapter tracks on player is playing
468
+ // -----------------------------------------------------
469
+ videojsPlayer.on("play", function() {
470
+ videojsPlayer.currentTime(videoStart);
471
+
472
+ var total = videojsPlayer.duration();
473
+ var timeline = $(videojsPlayer.controlBar.progressControl.children_[0].el_);
474
+
475
+ // remove old|previous markers
476
+ timeline.find('.vjs-chapter-marker').remove();
477
+
478
+ // add chapter tracks on timeline (delayed)
479
+ setTimeout (function() {
480
+ var markers_loaded = setInterval (function () {
481
+ if (markers.length) {
482
+ // make sure, that previous markers deleted
483
+ timeline.find('.vjs-chapter-marker').remove();
484
+
485
+ for (var i=0; i<markers.length; i++) {
486
+ var left = (markers[i].time / total * 100) + '%';
487
+ var time = markers[i].time;
488
+ var el = $('<div class="vjs-chapter-marker" style="left: ' +left+ '" data-time="' +time+ '"> <span>' +markers[i].label+ '</span></div>');
489
+
490
+ el.click(function() {
491
+ videojsPlayer.currentTime($(this).data('time'));
492
+ });
493
+
494
+ timeline.append(el);
495
+ }
496
+ clearInterval(markers_loaded);
497
+ }
498
+ }, 10); // END markers_loaded
499
+ }, 100 ); // END setTimeout
500
+
501
+ });
502
+ } else {
503
+ // remove chapter tracks on playing
504
+ // -----------------------------------------------------
505
+ videojsPlayer.on("play", function() {
506
+ videojsPlayer.chapterTracksEnabled = false;
507
+ var timeline = $(videojsPlayer.controlBar.progressControl.children_[0].el_);
508
+
509
+ // remove existing markers
510
+ timeline.find('.vjs-chapter-marker').remove();
511
+
512
+ });
513
+
514
+ } // END remove chapter tracks
515
+
516
+ } // END if videojsOptions
517
+
518
+ clearInterval(dependency_met_module_ready);
519
+ } // END if isModuleInitialised
520
+
521
+ }, 10); // END dependency_met_page_ready
522
+
523
+ }; // END vjsProcessExtendedButtonsAndPlugins
220
524
 
221
525
  /**
222
526
  * Video module for lightGallery
@@ -304,7 +608,7 @@
304
608
  var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;
305
609
  if (!hasPoster) {
306
610
  // All functions are called separately if poster exist in loadVideoOnPosterClick function
307
- this.appendVideos(this.core.getSlideItem(index), {
611
+ this.appendVideo(this.core.getSlideItem(index), {
308
612
  src: src,
309
613
  addClass: 'lg-object',
310
614
  index: index,
@@ -378,58 +682,56 @@
378
682
 
379
683
  // jadams
380
684
  Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {
381
- var video = '';
382
- var videoInfo = this.core.galleryItems[index]
383
- .__slideVideoInfo || {};
384
- var currentGalleryItem = this.core.galleryItems[index];
385
- var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
386
- videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
387
- var commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen";
388
-
685
+ var currentGalleryHtml, currentGalleryItem, videoInfo,
686
+ videoTitle, video, video_api, commonIframeProps;
687
+
688
+ videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
689
+ currentGalleryItem = this.core.galleryItems[index];
690
+
691
+ if (currentGalleryItem.subHtml.includes('<h2>')) {
692
+ currentGalleryHtml = currentGalleryItem.subHtml.split("</h2>");
693
+ videoTitle = currentGalleryHtml[0].replace('<h2>','');
694
+ } else if (currentGalleryItem.subHtml.includes('<h5>')) {
695
+ // for backward compatibility reasons
696
+ currentGalleryHtml = currentGalleryItem.subHtml.split("</h5>");
697
+ videoTitle = currentGalleryHtml[0].replace('<h5>','');
698
+ }
699
+
700
+ videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
701
+ commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen";
702
+
389
703
  if (videoInfo.youtube) {
390
- var videoId = 'lg-youtube' + index;
391
- var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
704
+ var videoId = 'lg-youtube' + index;
705
+ var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
392
706
  var isYouTubeNoCookieURL = isYouTubeNoCookie(src);
393
- var youtubeURL = isYouTubeNoCookieURL
394
- ? '//www.youtube-nocookie.com/'
395
- : '//www.youtube.com/';
396
-
397
- // var video = `
398
- // <video
399
- // id="${videoId}"
400
- // class="lg-video-object lg-youtube vjs-theme-uno video-js">
401
- // data-setup='{
402
- // "fluid" : true,
403
- // "techOrder": [
404
- // "youtube", "html5"
405
- // ],
406
- // "sources": [{
407
- // "type": "video/youtube",
408
- // "src": "//youtube.com/watch?v=nV8UZJNBY6"
409
- // }],
410
- // "controlBar": {
411
- // "pictureInPictureToggle": false,
412
- // "volumePanel": {
413
- // "inline": false
414
- // }
415
- // }
416
- // }'>
417
- // Your browser does not support HTML5 video
418
- // </video>
419
- // `;
420
-
421
- var video_new = `
707
+ var youtubeURL = isYouTubeNoCookieURL ? '//youtube-nocookie.com/' : '//youtube.com/';
708
+ var ytVideoID = videoInfo.youtube[1];
709
+
710
+ var video_iframe = `
422
711
  <iframe
423
712
  id="${videoId}"
424
713
  class="lg-video-object lg-youtube ${addClass}"
425
- allow="autoplay"
426
- title="${videoTitle}""
427
- src="${youtubeURL}/embed${videoInfo.youtube[1]}${youTubeParams}"
714
+ src="${youtubeURL}/embed/${ytVideoID}${youTubeParams}"
428
715
  ${commonIframeProps}>
429
716
  </iframe>
430
717
  `;
431
718
 
432
- video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-youtube " + addClass + "\" " + videoTitle + " src=\"" + youtubeURL + "embed/" + (videoInfo.youtube[1] + youTubeParams) + "\" " + commonIframeProps + "></iframe>";
719
+ var video_vjs = `
720
+ <video
721
+ id="${videoId}"
722
+ class="video-js lg-video-object lg-youtube vjs-theme-uno">
723
+ <source
724
+ type="video/youtube",
725
+ src="//youtube.com/watch?v=${ytVideoID}"
726
+ >
727
+
728
+ Your browser does not support HTML5 video.
729
+ </video>
730
+ `;
731
+
732
+ video_api = 'youtube';
733
+ video = (video_api === 'iframe') ? video_iframe : video_vjs;
734
+ // END videoInfo youtube
433
735
  } else if (videoInfo.vimeo) {
434
736
  var videoId = 'lg-vimeo' + index;
435
737
  var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);
@@ -497,26 +799,67 @@
497
799
  * @param {HTMLElement} el - slide element
498
800
  * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo
499
801
  */
500
- Video.prototype.appendVideos = function (el, videoParams) {
501
- var _a;
502
- var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
802
+ Video.prototype.appendVideo = function (el, videoParams) {
803
+ var vjsPlayer;
804
+ var _a = {};
805
+ var videojsEnabled = false;
806
+ var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
807
+
503
808
  el.find('.lg-video-cont').append(videoHtml);
504
809
  var $videoElement = el.find('.lg-video-object').first();
810
+
811
+ // check the HTML Element for the active player (failsafe)
812
+ // if NOT available, something went totally wrong
813
+ if (!$videoElement.get()) {
814
+ return;
815
+ }
816
+
505
817
  if (videoParams.html5Video) {
506
818
  $videoElement.on('mousedown.lg.video', function (e) {
507
819
  e.stopPropagation();
508
820
  });
509
821
  }
510
- if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {
822
+
823
+ _a = this.core.galleryItems[videoParams.index].__slideVideoInfo;
824
+ _a.videojs = { enabled: false };
825
+ videojsEnabled = videoHtml.includes('iframe');
826
+ _a.videojs.enabled = (videojsEnabled) ? false : true;
827
+
828
+ // jadams, 2025-06-13: process html5
829
+ if (this.settings.videojs && (_a === null || _a === void 0 ? void 0 : _a.html5)) {
511
830
  try {
512
- return videojs($videoElement.get(), this.settings.videojsOptions);
831
+ if (_a.videojs.enabled) {
832
+ vjsPlayer = videojs($videoElement.get(), this.settings.videojsOptions);
833
+ this.settings.vjsPlayer = vjsPlayer;
834
+ _a.videojs.player = vjsPlayer;
835
+
836
+ return vjsPlayer;
837
+ }
513
838
  }
514
839
  catch (e) {
515
840
  // jadams:
516
841
  console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
517
842
  }
518
843
  }
519
- };
844
+
845
+ // jadams, 2025-06-13: process youtube
846
+ if (this.settings.videojs && (_a === null || _a === void 0 ? void 0 : _a.youtube)) {
847
+ try {
848
+ if (_a.videojs.enabled) {
849
+ vjsPlayer = videojs($videoElement.get(), this.settings.videojsOptions);
850
+ this.settings.vjsPlayer = vjsPlayer;
851
+ _a.videojs.player = vjsPlayer;
852
+
853
+ return vjsPlayer;
854
+ }
855
+ }
856
+ catch (e) {
857
+ // jadams:
858
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
859
+ }
860
+ }
861
+
862
+ }; // END appendVideo
520
863
 
521
864
  // jadams
522
865
  Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {
@@ -525,6 +868,13 @@
525
868
  .getSlideItem(index)
526
869
  .find('.lg-video-object')
527
870
  .first();
871
+
872
+ // try to get HTML Element for the active player (failsafe)
873
+ // if NOT available, something went totally wrong
874
+ if (!$videoElement.get()) {
875
+ return;
876
+ }
877
+
528
878
  var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
529
879
  if (this.settings.gotoNextSlideOnVideoEnd) {
530
880
  if (videoInfo.html5) {
@@ -565,263 +915,53 @@
565
915
  }
566
916
  };
567
917
 
568
- // jadams
918
+ // jadams: 2025-06-11: Add (extended) VideoJS control elements
919
+ // for HTML5 video over VJS (to be extended for e.g.YouTube)
920
+ // ---------------------------------------------------------------------
569
921
  Video.prototype.controlVideo = function (index, action) {
570
- const vjsOptions = j1.modules.videojs.options;
571
- var trackSrc,
572
- $videoElement, videoInfo, videoStart, videoData, videoId,
573
- videojsPlayer, playbackRates,
574
- hotKeysPlugin, skipButtonsPlugin, zoomPlugin;
575
-
576
- var playbackRatesDefaults = vjsOptions.playbackRates.values;
577
- var chapterTracksEnabled = false;
578
-
579
- var hotKeysPluginDefaults = {
580
- volumeStep: vjsOptions.plugins.hotKeys.volumeStep,
581
- seekStep: vjsOptions.plugins.hotKeys.seekStep,
582
- enableMute: vjsOptions.plugins.hotKeys.enableMute,
583
- enableVolumeScroll: vjsOptions.plugins.hotKeys.enableVolumeScroll,
584
- enableHoverScroll: vjsOptions.plugins.hotKeys.enableHoverScroll,
585
- enableFullscreen: vjsOptions.plugins.hotKeys.enableFullscreen,
586
- enableNumbers: vjsOptions.plugins.hotKeys.enableNumbers,
587
- enableJogStyle: vjsOptions.plugins.hotKeys.enableJogStyle,
588
- alwaysCaptureHotkeys: vjsOptions.plugins.hotKeys.alwaysCaptureHotkeys,
589
- captureDocumentHotkeys: vjsOptions.plugins.hotKeys.captureDocumentHotkeys,
590
- enableModifiersForNumbers: vjsOptions.plugins.hotKeys.enableModifiersForNumbers,
591
- enableInactiveFocus: vjsOptions.plugins.hotKeys.enableInactiveFocus,
592
- skipInitialFocus: vjsOptions.plugins.hotKeys.skipInitialFocus
593
- };
594
-
595
- var skipButtonsPluginDefaults = {
596
- backward: vjsOptions.plugins.skipButtons.backward,
597
- forward: vjsOptions.plugins.skipButtons.forward,
598
- backwardIndex: 0,
599
- forwardIndex: 1
600
- };
601
-
602
- var zoomPluginDefaults = {
603
- moveX: vjsOptions.plugins.zoomButtons.moveX,
604
- moveY: vjsOptions.plugins.zoomButtons.moveY,
605
- rotate: vjsOptions.plugins.zoomButtons.rotate,
606
- zoom: vjsOptions.plugins.zoomButtons.zoom
607
- };
608
-
609
- videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
922
+ var $videoElement, videoInfo, videoId;
923
+ var videojsPlayer = 'not_set';
924
+
925
+ // load the lgQuery element for the active player
610
926
  $videoElement = this.core
611
927
  .getSlideItem(index)
612
928
  .find('.lg-video-object')
613
929
  .first()
614
930
 
615
- // chapter tracks only available for VJS
616
- //
617
- if (this.core.galleryItems[this.core.index].video !== undefined && videoInfo.html5) {
618
- videoData = JSON.parse(this.core.galleryItems[this.core.index].video);
619
-
620
- if (videoData.tracks !== undefined && videoData.tracks.length > 0) {
621
- for (var i=0; i<videoData.tracks.length; i++) {
622
- if (videoData.tracks[i].kind == 'chapters') {
623
- trackSrc = videoData.tracks[i].src;
624
- chapterTracksEnabled = true;
625
- }
626
- }
627
- } // END if videoData.tracks
628
-
629
- if ($videoElement.selector !== undefined) {
630
- videoId = $videoElement.selector.id;
631
- videojsPlayer = videojs(videoId);
632
- } else {
633
- videojsPlayer = 'unknown';
634
- }
635
-
636
- if (videojsPlayer !== 'unknown') {
637
-
638
- // added VJS Plugins hotKeys|skipButtons|zoom, playbackRates
639
- // -------------------------------------------------------------
640
- hotKeysPlugin = this.settings.videojsOptions.controlBar.hotKeysPlugin;
641
- skipButtonsPlugin = this.settings.videojsOptions.controlBar.skipButtonsPlugin;
642
- zoomPlugin = this.settings.videojsOptions.controlBar.zoomPlugin;
643
- playbackRates = (this.settings.videojsOptions.controlBar.playbackRates !== undefined) ? this.settings.videojsOptions.controlBar.playbackRates : playbackRatesDefaults;
644
-
645
- // jadams, 2024-01-22: added video start position
646
- // -------------------------------------------------------------
647
- if (this.settings.videojsOptions.videoStart !== undefined) {
648
- videoStart = this.settings.videojsOptions.videoStart[index];
649
- videojsPlayer.on("play", function() {
650
- var startFromSecond = new Date('1970-01-01T' + videoStart + 'Z').getTime() / 1000;
651
- videojsPlayer.currentTime(startFromSecond);
652
- }); // END on event play
653
- } // END if videoStart
654
-
655
- // add playbackRates (only available for VJS)
656
- if (videojsPlayer.playbackRates !== undefined) {
657
- videojsPlayer.playbackRates(playbackRates);
658
- }
659
-
660
- // add hotkeys Plugin (only available for VJS)
661
- if (hotKeysPlugin !== undefined && hotKeysPlugin.enabled && videojsPlayer.hotKeys !== undefined) {
662
-
663
- // merge objects
664
- hotKeysPlugin.options = __assign(__assign({}, hotKeysPluginDefaults), hotKeysPlugin.options);
665
-
666
- // prevent multiple plugin instances
667
- var hotKeysActive = false;
668
- if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.hotKeys !== undefined) {
669
- hotKeysActive = videojsPlayer.activePlugins_.hotKeys;
670
- }
671
-
672
- if (!hotKeysActive) {
673
- videojsPlayer.hotKeys({
674
- volumeStep: hotKeysPlugin.options.volumeStep,
675
- seekStep: hotKeysPlugin.options.seekStep,
676
- enableMute: hotKeysPlugin.options.enableMute,
677
- enableFullscreen: hotKeysPlugin.options.enableFullscreen,
678
- enableNumbers: hotKeysPlugin.options.enableNumbers,
679
- enableVolumeScroll: hotKeysPlugin.options.enableVolumeScroll,
680
- enableHoverScroll: hotKeysPlugin.options.enableHoverScroll,
681
- alwaysCaptureHotkeys: hotKeysPlugin.options.alwaysCaptureHotkeys,
682
- captureDocumentHotkeys: hotKeysPlugin.options.captureDocumentHotkeys,
683
- documentHotkeysFocusElementFilter: hotKeysPlugin.options.documentHotkeysFocusElementFilter,
684
-
685
- // Mimic VLC seek behavior (default to: 15)
686
- seekStep: function(e) {
687
- if (e.ctrlKey && e.altKey) {
688
- return 5*60;
689
- } else if (e.ctrlKey) {
690
- return 60;
691
- } else if (e.altKey) {
692
- return 10;
693
- } else {
694
- return 15;
695
- }
696
- }
697
-
698
- });
699
- } // END if hotKeysActive
700
-
701
- } // END if hotKeysPlugin enabled
702
-
703
- // add skipButtons Plugin (only available for VJS)
704
- // -------------------------------------------------------------
705
- if (skipButtonsPlugin !== undefined && skipButtonsPlugin.enabled && videojsPlayer.skipButtons !== undefined) {
706
- // merge objects
707
- skipButtonsPlugin.options = __assign(__assign({}, skipButtonsPluginDefaults), skipButtonsPlugin.options);
708
-
709
- // prevent multiple plugin instances
710
- var skipButtonsActive = false;
711
- if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.skipButtons !== undefined) {
712
- skipButtonsActive = videojsPlayer.activePlugins_.skipButtons;
713
- }
714
-
715
- if (!skipButtonsActive) {
716
- videojsPlayer.skipButtons({
717
- backward: skipButtonsPlugin.options.backward,
718
- forward: skipButtonsPlugin.options.forward,
719
- backwardIndex: skipButtonsPlugin.options.backwardIndex,
720
- forwardIndex: skipButtonsPlugin.options.forwardIndex
721
- });
722
- }
723
-
724
- } // END if skipButtons Plugin enabled
725
-
726
- // add zoom Plugin (only available for VJS)
727
- // -----------------------------------------------------------------
728
- if (zoomPlugin !== undefined && zoomPlugin.enabled && videojsPlayer.zoomButtons !== undefined) {
729
- // merge objects
730
- zoomPlugin.options = __assign(__assign({}, zoomPluginDefaults), zoomPlugin.options);
731
-
732
- // prevent multiple plugin instances
733
- var zoomButtonsActive = false;
734
- if (videojsPlayer.activePlugins_ !== undefined && videojsPlayer.activePlugins_.zoomButtons !== undefined) {
735
- zoomButtonsActive = videojsPlayer.activePlugins_.zoomButtons;
736
- }
737
-
738
- if (!zoomButtonsActive) {
739
- videojsPlayer.zoomButtons({
740
- moveX: zoomPlugin.options.moveX,
741
- moveY: zoomPlugin.options.moveY,
742
- rotate: zoomPlugin.options.rotate,
743
- zoom: zoomPlugin.options.zoom
744
- });
745
- }
746
-
747
- } // END if zoom Plugin enabled
748
-
749
- // chapter track processing (only available for VJS)
750
- // -----------------------------------------------------------------
751
- if (chapterTracksEnabled) {
752
- var parser = new WebVTTParser();
753
- var markers = [];
754
-
755
- function cb_load (data /* ,textStatus, jqXHR */ ) {
756
- var tree = parser.parse(data, 'metadata');
757
- var marker;
758
-
759
- // add chapter tracks to markers array
760
- for (var i=0; i<tree.cues.length; i++) {
761
- marker = { time: tree.cues[i].startTime, label: tree.cues[i].text };
762
- markers.push(marker);
763
- }
764
- }; // END function cb_load
765
-
766
- // load chapter tracks
767
- // -------------------------------------------------------------
768
- loadVtt(trackSrc, cb_load);
769
-
770
- // add chapter tracks on play
771
- videojsPlayer.on("play", function() {
772
- videojsPlayer.currentTime(videoStart);
773
-
774
- var total = videojsPlayer.duration();
775
- var timeline = $(videojsPlayer.controlBar.progressControl.children_[0].el_);
776
-
777
- // add chapter tracks on timeline (delayed)
778
- setTimeout (function() {
779
- var markers_loaded = setInterval (function () {
780
- if (markers.length) {
781
- for (var i=0; i<markers.length; i++) {
782
- var left = (markers[i].time / total * 100) + '%';
783
- var time = markers[i].time;
784
- var el = $('<div class="vjs-chapter-marker" style="left: ' +left+ '" data-time="' +time+ '"> <span>' +markers[i].label+ '</span></div>');
931
+ // try to get HTML Element for the active player (failsafe)
932
+ // if NOT available, something went totally wrong
933
+ if (!$videoElement.get()) {
934
+ return;
935
+ }
785
936
 
786
- el.click(function() {
787
- videojsPlayer.currentTime($(this).data('time'));
788
- });
937
+ // load the INFO object for the active player
938
+ videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
789
939
 
790
- timeline.append(el);
791
- }
792
- clearInterval(markers_loaded);
793
- }
794
- }, 10); // END markers_loaded
795
- }, 1000 ); // END setTimeout
940
+ // process video of type 'html5' for extended VJS settings
941
+ // -----------------------------------------------------------------
942
+ // if (this.core.galleryItems[this.core.index].video !== undefined && (videoInfo.html5 || videoInfo.youtube)) {
943
+ if (videoInfo.html5 || videoInfo.youtube) {
796
944
 
797
- }); // END on "play"
945
+ // if ($videoElement.selector.id !== undefined) {
946
+ // videoId = $videoElement.selector.id;
947
+ // videojsPlayer = videojs(videoId);
948
+ // }
798
949
 
799
- } // END if chapterTracksEnabled
950
+ if ($videoElement.selector.player !== undefined) {
951
+ videojsPlayer = $videoElement.selector.player;
952
+ }
800
953
 
954
+ if (videojsPlayer !== 'not_set') {
955
+ vjsProcessExtendedButtonsAndPlugins(this, videojsPlayer, videoInfo);
801
956
  } // END if videojsPlayer is defined
802
957
 
803
958
  } // END if videoInfo.html5
804
959
 
805
- if (!$videoElement.get())
806
- return;
807
- if (videoInfo.youtube) {
808
- try {
809
- $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
810
- }
811
- catch (e) {
812
- console.error("lightGallery:- " + e);
813
- }
814
- }
815
- else if (videoInfo.vimeo) {
816
- try {
817
- new Vimeo.Player($videoElement.get())[action]();
818
- }
819
- catch (e) {
820
- console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
821
- }
822
- }
823
- else if (videoInfo.html5) {
960
+ // check responses of the (active) player loaded
961
+ // -----------------------------------------------------------------
962
+ if (videoInfo.html5) {
824
963
  if (this.settings.videojs) {
964
+ // VideoJS API detected
825
965
  try {
826
966
  videojs($videoElement.get())[action]();
827
967
  }
@@ -830,10 +970,35 @@
830
970
  }
831
971
  }
832
972
  else {
973
+ // iFrame API detected (??? supported ???)
833
974
  $videoElement.get()[action]();
975
+ } // END html5
976
+ } else if (videoInfo.youtube) {
977
+ if (this.settings.videojs) {
978
+ // VideoJS API detected
979
+ try {
980
+ videojs($videoElement.get())[action]();
981
+ }
982
+ catch (e) {
983
+ console.warn('lightGallery: Make sure you have included videojs');
984
+ }
985
+ } else {
986
+ // iFrame API detected
987
+ try {
988
+ $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
989
+ }
990
+ catch (e) {
991
+ console.error("lightGallery:- " + e);
992
+ }
993
+ } // END youtube
994
+ } else if (videoInfo.vimeo) {
995
+ try {
996
+ new Vimeo.Player($videoElement.get())[action]();
834
997
  }
835
- }
836
- else if (videoInfo.wistia) {
998
+ catch (e) {
999
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
1000
+ } // END vimeo
1001
+ } else if (videoInfo.wistia) {
837
1002
  try {
838
1003
  window._wq = window._wq || [];
839
1004
  // @todo Find a way to destroy wistia player instance
@@ -846,8 +1011,8 @@
846
1011
  }
847
1012
  catch (e) {
848
1013
  console.warn('lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
849
- }
850
- }
1014
+ } // END wistia
1015
+ } // END if videoInfo
851
1016
 
852
1017
  }; // END controlVideo
853
1018
 
@@ -865,7 +1030,7 @@
865
1030
  _html =
866
1031
  typeof video === 'string' ? JSON.parse(video) : video;
867
1032
  }
868
- var videoJsPlayer_1 = this.appendVideos($el, {
1033
+ var videoJsPlayer_1 = this.appendVideo($el, {
869
1034
  src: _src,
870
1035
  addClass: '',
871
1036
  index: this.core.index,