j1-template 2023.2.6 → 2023.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +2 -1
  3. data/_includes/themes/j1/layouts/content_generator_post.html +2 -2
  4. data/_includes/themes/j1/layouts/layout_metadata_generator.html +41 -38
  5. data/_includes/themes/j1/procedures/blocks/footer/boxes/about_box.proc +1 -1
  6. data/_includes/themes/j1/procedures/blocks/footer/boxes/contacts_box.proc +1 -1
  7. data/_includes/themes/j1/procedures/blocks/footer/boxes/issue.proc +1 -1
  8. data/_includes/themes/j1/procedures/blocks/footer/boxes/links_box.proc +1 -1
  9. data/_includes/themes/j1/procedures/blocks/footer/boxes/news_box.proc +1 -1
  10. data/_includes/themes/j1/procedures/layouts/default_writer.proc +1 -3
  11. data/_includes/themes/j1/procedures/layouts/module_writer.proc +7 -23
  12. data/_includes/themes/j1/procedures/layouts/resource_writer.proc +8 -8
  13. data/_layouts/compress.html +26 -21
  14. data/_layouts/default.html +36 -30
  15. data/assets/data/banner.html +5 -2
  16. data/assets/data/footer.html +15 -3
  17. data/assets/data/masterslider.html +1 -0
  18. data/assets/data/menu.html +4 -4
  19. data/assets/data/panel.html +6 -3
  20. data/assets/data/quicklinks.html +138 -149
  21. data/assets/error_pages/HTTP204.html +3 -3
  22. data/assets/error_pages/HTTP400.html +3 -3
  23. data/assets/error_pages/HTTP401.html +3 -3
  24. data/assets/error_pages/HTTP403.html +3 -3
  25. data/assets/error_pages/HTTP404.html +3 -3
  26. data/assets/error_pages/HTTP444.html +3 -3
  27. data/assets/error_pages/HTTP445.html +3 -3
  28. data/assets/error_pages/HTTP446.html +5 -5
  29. data/assets/error_pages/HTTP447.html +7 -7
  30. data/assets/error_pages/HTTP448.html +7 -7
  31. data/assets/error_pages/HTTP500.html +3 -3
  32. data/assets/error_pages/HTTP501.html +3 -3
  33. data/assets/error_pages/HTTP502.html +3 -3
  34. data/assets/error_pages/HTTP503.html +3 -3
  35. data/assets/themes/j1/adapter/js/advertising.js +109 -116
  36. data/assets/themes/j1/adapter/js/analytics.js +1 -1
  37. data/assets/themes/j1/adapter/js/asciidoctor.js +1 -1
  38. data/assets/themes/j1/adapter/js/attic.js +22 -14
  39. data/assets/themes/j1/adapter/js/bmd.js +1 -1
  40. data/assets/themes/j1/adapter/js/carousel.js +5 -4
  41. data/assets/themes/j1/adapter/js/clipboard.js +1 -1
  42. data/assets/themes/j1/adapter/js/comments.js +5 -5
  43. data/assets/themes/j1/adapter/js/cookieConsent.js +1 -1
  44. data/assets/themes/j1/adapter/js/customFunctions.js +1 -1
  45. data/assets/themes/j1/adapter/js/customModule.js +1 -1
  46. data/assets/themes/j1/adapter/js/dropdowns.js +4 -2
  47. data/assets/themes/j1/adapter/js/fab.js +9 -6
  48. data/assets/themes/j1/adapter/js/framer.js +1 -1
  49. data/assets/themes/j1/adapter/js/iconPicker.js +227 -0
  50. data/assets/themes/j1/adapter/js/j1.js +401 -76
  51. data/assets/themes/j1/adapter/js/justifiedGallery.js +9 -3
  52. data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +2 -2
  53. data/assets/themes/j1/adapter/js/lightbox.js +4 -3
  54. data/assets/themes/j1/adapter/js/logger.js +1 -1
  55. data/assets/themes/j1/adapter/js/lunr.js +1 -1
  56. data/assets/themes/j1/adapter/js/masonry.js +4 -3
  57. data/assets/themes/j1/adapter/js/masterslider.js +30 -57
  58. data/assets/themes/j1/adapter/js/mmenu.js +2 -2
  59. data/assets/themes/j1/adapter/js/navigator.js +7 -5
  60. data/assets/themes/j1/adapter/js/nbinteract.js +9 -9
  61. data/assets/themes/j1/adapter/js/particles.js +2 -2
  62. data/assets/themes/j1/adapter/js/rangeSlider.js +2 -2
  63. data/assets/themes/j1/adapter/js/rouge.js +2 -2
  64. data/assets/themes/j1/adapter/js/rtable.js +1 -1
  65. data/assets/themes/j1/adapter/js/rtextResizer.js +1 -1
  66. data/assets/themes/j1/adapter/js/scroller.js +97 -109
  67. data/assets/themes/j1/adapter/js/slick.js +28 -18
  68. data/assets/themes/j1/adapter/js/themeToggler.js +259 -0
  69. data/assets/themes/j1/adapter/js/themer.js +17 -8
  70. data/assets/themes/j1/adapter/js/toccer.js +9 -6
  71. data/assets/themes/j1/adapter/js/translator.js +4 -2
  72. data/assets/themes/j1/adapter/js/waves.js +6 -4
  73. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +1322 -417
  74. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +3 -3
  75. data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +1983 -1266
  76. data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +3 -3
  77. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +10268 -9402
  78. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +10 -10
  79. data/assets/themes/j1/core/css/vendor.css +0 -14
  80. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  81. data/assets/themes/j1/modules/advertising/js/adInitializer.js +160 -0
  82. data/assets/themes/j1/modules/backstretch/js/backstretch.js +6 -4
  83. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  84. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js +1 -1
  85. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +1 -1
  86. data/assets/themes/j1/modules/iconPicker/README.md +266 -0
  87. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.css +419 -0
  88. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.min.css +17 -0
  89. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.json +467 -0
  90. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.min.json +1 -0
  91. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.json +169 -0
  92. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.min.json +1 -0
  93. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.json +1136 -0
  94. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.min.json +1 -0
  95. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.json +1772 -0
  96. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.min.json +1 -0
  97. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.json +292 -0
  98. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.min.json +1 -0
  99. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.json +7312 -0
  100. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.min.json +1 -0
  101. data/assets/themes/j1/modules/iconPicker/images/magnifying-glass-solid.svg +1 -0
  102. data/assets/themes/j1/modules/iconPicker/images/star-of-life-solid.svg +3 -0
  103. data/assets/themes/j1/modules/iconPicker/images/xmark-solid.svg +3 -0
  104. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +493 -0
  105. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.min.js +17 -0
  106. data/assets/themes/j1/modules/jquery/AUTHORS.txt +372 -0
  107. data/assets/themes/j1/modules/jquery/LICENSE.txt +43 -0
  108. data/assets/themes/j1/modules/jquery/css/images/ui-icons_444444_256x240.png +0 -0
  109. data/assets/themes/j1/modules/jquery/css/images/ui-icons_555555_256x240.png +0 -0
  110. data/assets/themes/j1/modules/jquery/css/images/ui-icons_777620_256x240.png +0 -0
  111. data/assets/themes/j1/modules/jquery/css/images/ui-icons_777777_256x240.png +0 -0
  112. data/assets/themes/j1/modules/jquery/css/images/ui-icons_cc0000_256x240.png +0 -0
  113. data/assets/themes/j1/modules/jquery/css/images/ui-icons_ffffff_256x240.png +0 -0
  114. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.css +92 -92
  115. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.min.css +4 -4
  116. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.css +88 -88
  117. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.min.css +2 -2
  118. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.css +4 -4
  119. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.min.css +2 -2
  120. data/assets/themes/j1/modules/jquery/js/jquery-ui.js +13683 -13678
  121. data/assets/themes/j1/modules/jquery/js/jquery-ui.min.js +3 -3
  122. data/assets/themes/j1/modules/jquery/js/jquery.js +1029 -1203
  123. data/assets/themes/j1/modules/jquery/js/jquery.min.js +2 -2
  124. data/assets/themes/j1/modules/jquery/js/jquery.min.map +1 -1
  125. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.css +1315 -0
  126. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.min.css +7 -0
  127. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.css +886 -0
  128. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.min.css +5 -0
  129. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.css +446 -0
  130. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.min.css +5 -0
  131. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.js +37 -0
  132. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.min.js +17 -0
  133. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.js +42 -0
  134. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.min.js +17 -0
  135. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.js +19057 -0
  136. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.min.js +6 -0
  137. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.js +10872 -0
  138. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.js +2 -0
  139. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.map +1 -0
  140. data/assets/themes/j1/modules/jquery-3.5.1/js/require.js +2145 -0
  141. data/assets/themes/j1/modules/jquery-3.5.1/js/require.min.js +5 -0
  142. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.js +2 -2
  143. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
  144. data/assets/themes/j1/modules/masterslider/css/theme/uno.css +9 -9
  145. data/assets/themes/j1/modules/masterslider/css/theme/uno.min.css +1 -1
  146. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +2 -2
  147. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
  148. data/assets/themes/j1/modules/rouge/css/uno.dark/theme.css +136 -47
  149. data/assets/themes/j1/modules/rouge/css/uno.light/theme.css +9 -9
  150. data/assets/themes/j1/modules/scroller/js/scroller.js +76 -69
  151. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  152. data/assets/themes/j1/modules/translator/js/translator.js +1 -1
  153. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  154. data/lib/j1/version.rb +1 -1
  155. data/lib/starter_web/Gemfile +2 -2
  156. data/lib/starter_web/README.md +5 -5
  157. data/lib/starter_web/_config.yml +4 -1
  158. data/lib/starter_web/_data/blocks/banner.yml +8 -5
  159. data/lib/starter_web/_data/blocks/defaults/footer.yml +3 -3
  160. data/lib/starter_web/_data/blocks/footer.yml +9 -5
  161. data/lib/starter_web/_data/blocks/panel.yml +41 -38
  162. data/lib/starter_web/_data/j1_config.yml +68 -58
  163. data/lib/starter_web/_data/layouts/collection.yml +1 -0
  164. data/lib/starter_web/_data/layouts/default.yml +1 -1
  165. data/lib/starter_web/_data/layouts/home.yml +9 -9
  166. data/lib/starter_web/_data/layouts/news_panel_posts.yml +1 -0
  167. data/lib/starter_web/_data/layouts/page.yml +2 -1
  168. data/lib/starter_web/_data/layouts/post.yml +1 -0
  169. data/lib/starter_web/_data/layouts/raw.yml +1 -0
  170. data/lib/starter_web/_data/modules/advertising.yml +134 -61
  171. data/lib/starter_web/_data/modules/analytics.yml +2 -2
  172. data/lib/starter_web/_data/modules/attics.yml +4 -7
  173. data/lib/starter_web/_data/modules/defaults/advertising.yml +2 -1
  174. data/lib/starter_web/_data/modules/defaults/attics.yml +3 -3
  175. data/lib/starter_web/_data/modules/defaults/iconPicker.yml +42 -0
  176. data/lib/starter_web/_data/modules/defaults/navigator.yml +15 -13
  177. data/lib/starter_web/_data/modules/defaults/theme_toggler.yml +42 -0
  178. data/lib/starter_web/_data/modules/iconPicker.yml +64 -0
  179. data/lib/starter_web/_data/modules/masonry.yml +1 -1
  180. data/lib/starter_web/_data/modules/masterslider.yml +5 -5
  181. data/lib/starter_web/_data/modules/navigator_menu.yml +150 -41
  182. data/lib/starter_web/_data/modules/scroller.yml +8 -8
  183. data/lib/starter_web/_data/modules/theme_toggler.yml +29 -0
  184. data/lib/starter_web/_data/modules/themer.yml +0 -6
  185. data/lib/starter_web/_data/resources.yml +53 -52
  186. data/lib/starter_web/_data/templates/feed.xml +1 -1
  187. data/lib/starter_web/_includes/attributes.asciidoc +57 -50
  188. data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +47 -0
  189. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  190. data/lib/starter_web/assets/images/icons/mdi/mdi.svg +1 -0
  191. data/lib/starter_web/assets/images/icons/mdi/mdil.svg +1 -0
  192. data/lib/starter_web/assets/images/modules/attics/1920x1280/alexander-redl.jpg +0 -0
  193. data/lib/starter_web/assets/images/modules/attics/1920x1280/alina-grubnyak.jpg +0 -0
  194. data/lib/starter_web/assets/images/modules/attics/1920x1280/andrea-badino.jpg +0 -0
  195. data/lib/starter_web/assets/images/modules/attics/1920x1280/brad-neathery.jpg +0 -0
  196. data/lib/starter_web/assets/images/modules/attics/1920x1280/bruno-figueiredo.jpg +0 -0
  197. data/lib/starter_web/assets/images/modules/attics/1920x1280/clem-onojeghuo.jpg +0 -0
  198. data/lib/starter_web/assets/images/modules/attics/1920x1280/core_web_vitals_best.png +0 -0
  199. data/lib/starter_web/assets/images/modules/attics/1920x1280/crawford-jolly.jpg +0 -0
  200. data/lib/starter_web/assets/images/modules/attics/1920x1280/eleni-afiontzi.jpg +0 -0
  201. data/lib/starter_web/assets/images/modules/attics/1920x1280/fly-d.jpg +0 -0
  202. data/lib/starter_web/assets/images/modules/attics/1920x1280/guillaume-bolduc.jpg +0 -0
  203. data/lib/starter_web/assets/images/modules/attics/1920x1280/harpal-singh.jpg +0 -0
  204. data/lib/starter_web/assets/images/modules/attics/1920x1280/hayden-mills-2.jpg +0 -0
  205. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-1.jpg +0 -0
  206. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-2.jpg +0 -0
  207. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-3.jpg +0 -0
  208. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-starter-mockup-1.jpg +0 -0
  209. data/lib/starter_web/assets/images/modules/attics/1920x1280/john-schnobrich-2.jpg +0 -0
  210. data/lib/starter_web/assets/images/modules/attics/1920x1280/josep-martins.jpg +0 -0
  211. data/lib/starter_web/assets/images/modules/attics/1920x1280/josh-liu.jpg +0 -0
  212. data/lib/starter_web/assets/images/modules/attics/1920x1280/kelly-sikkemal.jpg +0 -0
  213. data/lib/starter_web/assets/images/modules/attics/1920x1280/kira-auf-der-heide.jpg +0 -0
  214. data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.jpg +0 -0
  215. data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.webp +0 -0
  216. data/lib/starter_web/assets/images/modules/attics/1920x1280/matthaeus.jpg +0 -0
  217. data/lib/starter_web/assets/images/modules/attics/1920x1280/melanie-deziel.jpg +0 -0
  218. data/lib/starter_web/assets/images/modules/attics/1920x1280/milad-fakurian.jpg +0 -0
  219. data/lib/starter_web/assets/images/modules/attics/1920x1280/mohammad-rahmani.jpg +0 -0
  220. data/lib/starter_web/assets/images/modules/attics/1920x1280/nasa.jpg +0 -0
  221. data/lib/starter_web/assets/images/modules/attics/1920x1280/quino-al-2.jpg +0 -0
  222. data/lib/starter_web/assets/images/modules/attics/1920x1280/recha-oktaviani.jpg +0 -0
  223. data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280.jpg +0 -0
  224. data/lib/starter_web/assets/images/modules/attics/christina-1920x1280.jpg +0 -0
  225. data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200.jpg +0 -0
  226. data/lib/starter_web/assets/images/modules/attics/katie-moum-1920x1280.jpg +0 -0
  227. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best.jpg +0 -0
  228. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best.png +0 -0
  229. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best_full.png +0 -0
  230. data/lib/starter_web/assets/images/pages/html_validator/appdevtools-html-validator.jpg +0 -0
  231. data/lib/starter_web/assets/images/pages/html_validator/freeformatter-html-validator.jpg +0 -0
  232. data/lib/starter_web/assets/images/pages/html_validator/w3c-nu-checker.jpg +0 -0
  233. data/lib/starter_web/assets/images/pages/html_validator/w3c-validator.jpg +0 -0
  234. data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +8 -9
  235. data/lib/starter_web/collections/_biography/becoming.adoc +22 -9
  236. data/lib/starter_web/collections/_biography/born-to-run.adoc +27 -9
  237. data/lib/starter_web/collections/_biography/forty-autumns.adoc +19 -12
  238. data/lib/starter_web/collections/_biography/not-dead-yet.adoc +24 -14
  239. data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +23 -14
  240. data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +24 -11
  241. data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +14 -10
  242. data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +11 -8
  243. data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +7 -8
  244. data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +17 -14
  245. data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +12 -13
  246. data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +15 -15
  247. data/lib/starter_web/collections/_people/diana-petersen.adoc +2 -0
  248. data/lib/starter_web/collections/_people/larry-parker.adoc +2 -0
  249. data/lib/starter_web/collections/_people/parveen-anand.adoc +2 -0
  250. data/lib/starter_web/collections/_portfolio/branding.adoc +5 -0
  251. data/lib/starter_web/collections/_portfolio/graphic_design.adoc +5 -0
  252. data/lib/starter_web/collections/_portfolio/identity.adoc +5 -0
  253. data/lib/starter_web/collections/_portfolio/illustration.adoc +5 -0
  254. data/lib/starter_web/collections/_portfolio/photography.adoc +5 -0
  255. data/lib/starter_web/collections/_portfolio/web_design.adoc +5 -0
  256. data/lib/starter_web/collections/_romance/breath-of-snow-and-ashes-a.adoc +8 -5
  257. data/lib/starter_web/collections/_romance/dressmaker-the.adoc +14 -14
  258. data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +12 -9
  259. data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +14 -11
  260. data/lib/starter_web/collections/_romance/outlander-novel.adoc +48 -25
  261. data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +30 -15
  262. data/lib/starter_web/index.html +6 -14
  263. data/lib/starter_web/package.json +3 -3
  264. data/lib/starter_web/pages/public/about/features.adoc +1 -4
  265. data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -3
  266. data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +0 -5
  267. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +0 -4
  268. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +0 -5
  269. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +0 -5
  270. data/lib/starter_web/pages/public/blog/navigator/index.html +2 -6
  271. data/lib/starter_web/pages/public/features/general.adoc +0 -4
  272. data/lib/starter_web/pages/public/features/template.adoc +0 -4
  273. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +1 -3
  274. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
  275. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
  276. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -2
  277. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +75 -66
  278. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +58 -0
  279. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/accordion.asciidoc +34 -0
  280. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/alerts.asciidoc +15 -0
  281. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/badges.asciidoc +9 -0
  282. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/body.asciidoc +14 -0
  283. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/breadcrumbs.asciidoc +14 -0
  284. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/buttons.asciidoc +75 -0
  285. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/cards.asciidoc +22 -0
  286. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/carousel.asciidoc +37 -0
  287. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/close.asciidoc +15 -0
  288. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/code.asciidoc +14 -0
  289. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/color_system.asciidoc +353 -0
  290. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/components.asciidoc +69 -0
  291. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/dropdowns.asciidoc +53 -0
  292. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/figures.asciidoc +5 -0
  293. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/forms.asciidoc +270 -0
  294. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/grid.asciidoc +49 -0
  295. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/links.asciidoc +21 -0
  296. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/list_groups.asciidoc +28 -0
  297. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/modals.asciidoc +43 -0
  298. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navbar.asciidoc +45 -0
  299. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navs.asciidoc +28 -0
  300. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/offcanvas.asciidoc +16 -0
  301. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/options.asciidoc +30 -0
  302. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/pagination.asciidoc +40 -0
  303. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/paragraph.asciidoc +5 -0
  304. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/placeholders.asciidoc +5 -0
  305. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/popovers.asciidoc +28 -0
  306. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/position.asciidoc +8 -0
  307. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/progress_bars.asciidoc +12 -0
  308. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spacing.asciidoc +14 -0
  309. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spinners.asciidoc +12 -0
  310. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tables.asciidoc +55 -0
  311. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/thumbnails.asciidoc +9 -0
  312. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/toasts.asciidoc +18 -0
  313. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tooltips.asciidoc +28 -0
  314. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/typography.asciidoc +115 -0
  315. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/z_index.asciidoc +26 -0
  316. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/_table.asciidoc +9 -0
  317. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/accordion.asciidoc +87 -0
  318. data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +262 -0
  319. data/lib/starter_web/pages/public/learn/cheatsheet/gem.adoc +255 -0
  320. data/lib/starter_web/pages/public/learn/cheatsheet/git.adoc +1458 -0
  321. data/lib/starter_web/pages/public/learn/cheatsheet/j1.adoc +63 -0
  322. data/lib/starter_web/pages/public/learn/cheatsheet/yaml.adoc +514 -0
  323. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +59 -0
  324. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/100_chapter.asciidoc +541 -0
  325. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/200_chapter.asciidoc +33 -0
  326. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/build_command_options.asciidoc +72 -0
  327. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/files_and_folders.asciidoc +66 -0
  328. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_configuration_options.asciidoc +63 -0
  329. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_variables.asciidoc +26 -0
  330. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/page_variables.asciidoc +54 -0
  331. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/serve_command_options.asciidoc +45 -0
  332. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/site_variables.asciidoc +59 -0
  333. data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +442 -0
  334. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +1 -1
  335. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +3 -4
  336. data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +2 -2
  337. data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +10 -10
  338. data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.adoc +0 -2
  339. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +8 -2
  340. data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +3 -7
  341. data/lib/starter_web/pages/public/learn/where_to_go.adoc +39 -45
  342. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +2 -6
  343. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +0 -1
  344. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -6
  345. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +2 -6
  346. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +0 -2
  347. data/lib/starter_web/pages/public/plans/plans.adoc +0 -2
  348. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +93 -7
  349. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  350. data/lib/starter_web/utilsrv/package.json +1 -1
  351. metadata +133 -24
  352. data/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  353. data/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  354. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.css +0 -1711
  355. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.min.css +0 -1
  356. data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +0 -127
  357. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +0 -460
  358. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +0 -97
  359. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +0 -15
  360. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +0 -115
  361. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +0 -15
  362. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +0 -97
  363. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +0 -15
  364. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +0 -125
  365. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +0 -15
  366. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  367. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  368. /data/lib/starter_web/assets/images/{promo → quotes/promo}/home/screenshot.jpg +0 -0
  369. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-faq.jpg +0 -0
  370. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-generator.jpg +0 -0
  371. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-generator.png +0 -0
  372. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-og.png +0 -0
  373. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/scalable/jekyll-faq.psd +0 -0
@@ -47,11 +47,15 @@ regenerate: true
47
47
 
48
48
  {% comment %} Set config data
49
49
  -------------------------------------------------------------------------------- {% endcomment %}
50
- {% assign banner_config_defaults = blocks.defaults.banner.defaults %}
51
- {% assign banner_config_settings = blocks.banner.settings %}
52
- {% assign panel_config_defaults = blocks.defaults.panel.defaults %}
53
- {% assign panel_config_settings = blocks.panel.settings %}
54
- {% assign footer_config_defaults = blocks.defaults.footer.defaults %}
50
+ {% assign banner_defaults = blocks.defaults.banner.defaults %}
51
+ {% assign banner_settings = blocks.banner.settings %}
52
+
53
+ {% assign panel_defaults = blocks.defaults.panel.defaults %}
54
+ {% assign panel_settings = blocks.panel.settings %}
55
+
56
+ {% assign footer_defaults = blocks.defaults.footer.defaults %}
57
+ {% assign footer_settings = blocks.footer.settings %}
58
+
55
59
  {% assign toccer_defaults = modules.defaults.toccer.defaults %}
56
60
 
57
61
  {% assign cookie_defaults = modules.defaults.cookies.defaults %}
@@ -74,19 +78,21 @@ regenerate: true
74
78
  {% assign toccer_options = toccer_defaults | merge: toccer_settings %}
75
79
  {% assign themer_options = themer_defaults| merge: themer_settings %}
76
80
  {% assign cookie_options = cookie_defaults | merge: cookie_settings %}
81
+ {% assign footer_options = footer_defaults | merge: footer_settings %}
77
82
 
78
83
  {% assign authentication_options = authentication_defaults | merge: authentication_settings %}
79
84
 
80
- {% assign footer_id = footer_config_defaults.container-id %}
81
- {% assign footer_data_path = footer_config_defaults.data_path %}
82
- {% assign banner_data_path = banner_config_defaults.data_path %}
83
- {% assign panel_data_path = panel_config_defaults.data_path %}
85
+
86
+
87
+ {% assign footer_id = footer_options.active_footer %}
88
+ {% assign footer_data_path = footer_defaults.data_path %}
89
+ {% assign banner_data_path = banner_defaults.data_path %}
90
+ {% assign panel_data_path = panel_defaults.data_path %}
84
91
 
85
92
  {% assign themer_enabled = modules.themer_options.enabled %}
86
93
  {% assign themer_reloadPageOnChange = modules.themer_options.reloadPageOnChange %}
87
94
  {% assign themer_hideOnReload = modules.themer_options.hideOnReload %}
88
95
 
89
-
90
96
  {% comment %} Detect prod mode
91
97
  -------------------------------------------------------------------------------- {% endcomment %}
92
98
  {% assign production = false %}
@@ -117,9 +123,6 @@ regenerate: true
117
123
  # J1 Theme is licensed under the MIT License.
118
124
  # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
119
125
  # -----------------------------------------------------------------------------
120
- # TODO:
121
- #
122
- # -----------------------------------------------------------------------------
123
126
  # Adapter generated: {{site.time}}
124
127
  # -----------------------------------------------------------------------------
125
128
  */
@@ -145,7 +148,7 @@ var j1 = (function (options) {
145
148
  var scrollerSettings = {};
146
149
  var scrollerOptions = {};
147
150
  var scrollerDefaults = {};
148
- var _this;
151
+ var _this = j1;;
149
152
  var settings;
150
153
  var json_data;
151
154
  var ep;
@@ -153,6 +156,8 @@ var j1 = (function (options) {
153
156
  var referrer;
154
157
  var documentHeight;
155
158
 
159
+ var banner = [];
160
+
156
161
  var scrollOffset;
157
162
  var scrollOffsetCorrection;
158
163
 
@@ -347,7 +352,6 @@ var j1 = (function (options) {
347
352
  eventNo: 0,
348
353
  pageType: 'unknown',
349
354
  pageBaseHeight: 0,
350
- // totalGrowthRatio: 0,
351
355
  currentPageHeight: 0,
352
356
  previousPageHeight: 0,
353
357
  currentGrowthRatio: 0,
@@ -408,12 +412,8 @@ var j1 = (function (options) {
408
412
  }
409
413
  }
410
414
 
411
- var dependencies_met_page_loaded = setInterval (function () {
412
- if (j1.getState() == 'finished') {
413
- j1.registerEvents(logger);
414
- }
415
- clearInterval(dependencies_met_page_loaded);
416
- }, 25); // END dependencies_met_page_loaded
415
+ logger.info('\n' + 'register monitors');
416
+ j1.registerMonitors();
417
417
 
418
418
  // detect middleware (mode 'app') and update user session cookie
419
419
  // -----------------------------------------------------------------------
@@ -470,7 +470,7 @@ var j1 = (function (options) {
470
470
  clearInterval(dependencies_met_page_displayed);
471
471
  }
472
472
  }
473
- }, 25);
473
+ }, 10);
474
474
  })
475
475
  .catch(function(error) {
476
476
  // jadams, 2018-08-31
@@ -492,6 +492,104 @@ var j1 = (function (options) {
492
492
  expires: 0
493
493
  });
494
494
 
495
+ // -----------------------------------------------------------------
496
+ // load|initialize page resources for block elements
497
+ // NOTE: asynchronous calls should be rewitten to xhrData
498
+ // NOTE: Find $('#content').hide() conterpart in themer adapter
499
+ // -----------------------------------------------------------------
500
+ var dependencies_met_page_ready = setInterval (function (options) {
501
+ var pageState = $('#no_flicker').css("display");
502
+ var pageVisible = (pageState == 'block') ? true : false;
503
+ var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true: false;
504
+ var banner_blocks = document.querySelectorAll('[id^="banner"]').length;
505
+ var panel_blocks = document.querySelectorAll('[id^="panel"]').length;
506
+ var footer_blocks = document.querySelectorAll('[id^="footer"]').length;
507
+ var banners_exits = (banner_blocks > 0) ? true : false;
508
+ var panels_exists = (panel_blocks > 0) ? true : false;
509
+ var footer_exists = (footer_blocks > 0) ? true : false;
510
+ var banner_state;
511
+ var panel_state;
512
+ var footer_state;
513
+
514
+ if (j1.getState() === 'finished' && pageVisible && atticFinished) {
515
+ logger.info('\n' + 'load block elements');
516
+ if (banners_exits) {j1.initBanner(settings);}
517
+ if (panels_exists) {j1.initPanel(settings)};
518
+ if (footer_exists) {j1.initFooter(settings);}
519
+
520
+ if (banner_blocks || panel_blocks) {
521
+ // pages having banners or panels
522
+
523
+ var dependencies_met_blocks_ready = setInterval (function (settings) {
524
+ if (footer_exists) {
525
+ footer_state = j1.getXhrDataState('#{{footer_id}}');
526
+ } else {
527
+ // pages w/o footer
528
+ footer_state = 'success';
529
+ }
530
+
531
+ // check bannern if HTML content loaded successfully
532
+ //
533
+ if (banners_exits) {
534
+ Object.entries(j1.xhrDataState).forEach(entry => {
535
+ const [key, value] = entry;
536
+ if (key.includes('banner')) {
537
+ banner_state = value;
538
+ }
539
+ });
540
+ } else {
541
+ // pages w/o banners
542
+ banner_state = 'success';
543
+ }
544
+
545
+ // check panels if HTML content loaded successfully
546
+ //
547
+ if (panels_exists) {
548
+ Object.entries(j1.xhrDataState).forEach(entry => {
549
+ const [key, value] = entry;
550
+ if (key.includes('panel')) {
551
+ panel_state = value;
552
+ }
553
+ });
554
+ } else {
555
+ // pages w/o panels
556
+ panel_state = 'success';
557
+ }
558
+
559
+ // show the content section for 'block content' to optimze CLS
560
+ //
561
+ if (banner_state == 'success' && panel_state == 'success' && footer_state == 'success') {
562
+ // show the content|footer
563
+ //
564
+ $('#content').show();
565
+ $('#{{footer_id}}').show();
566
+
567
+ clearInterval(dependencies_met_page_ready);
568
+ clearInterval(dependencies_met_blocks_ready);
569
+ }
570
+ }, 10);
571
+ } else {
572
+ // pages w/o banners or panels
573
+
574
+ if (footer_exists) {
575
+ footer_state = j1.getXhrDataState('#{{footer_id}}');
576
+ } else {
577
+ // pages w/o footer
578
+ footer_state = 'success';
579
+ }
580
+
581
+ // show the content|footer
582
+ //
583
+ if ( footer_state == 'success') {
584
+ $('#content').show();
585
+ $('#{{footer_id}}').show();
586
+
587
+ clearInterval(dependencies_met_page_ready);
588
+ }
589
+ }
590
+ }
591
+ }, 10);
592
+
495
593
  j1.setState(curr_state);
496
594
  logger.debug('\n' + 'state: ' + j1.getState());
497
595
  }, detectTimeout);
@@ -523,7 +621,7 @@ var j1 = (function (options) {
523
621
  // Save last page access
524
622
  // see: https://stackoverflow.com/questions/3528324/how-to-get-the-previous-url-in-javascript
525
623
  // see: https://developer.mozilla.org/de/docs/Web/API/Window/history
526
- //
624
+ // -----------------------------------------------------------------------
527
625
  user_session.timestamp = timestamp_now;
528
626
  referrer = new liteURL(document.referrer);
529
627
  current_page = window.location.pathname;
@@ -555,10 +653,100 @@ var j1 = (function (options) {
555
653
  // -----------------------------------------------------------------------
556
654
  // load|initialize page resources for block elements
557
655
  // NOTE: asynchronous calls should be rewitten to xhrData
656
+ // NOTE: Find $('#content').hide() conterpart in themer adapter
558
657
  // -----------------------------------------------------------------------
559
- j1.initBanner(settings);
560
- j1.initPanel(settings);
561
- j1.initFooter(settings);
658
+ var dependencies_met_page_ready = setInterval (function (options) {
659
+ var pageState = $('#no_flicker').css("display");
660
+ var pageVisible = (pageState == 'block') ? true : false;
661
+ var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true: false;
662
+ var banner_blocks = document.querySelectorAll('[id^="banner"]').length;
663
+ var panel_blocks = document.querySelectorAll('[id^="panel"]').length;
664
+ var footer_blocks = document.querySelectorAll('[id^="footer"]').length;
665
+ var banners_exits = (banner_blocks > 0) ? true : false;
666
+ var panels_exists = (panel_blocks > 0) ? true : false;
667
+ var footer_exists = (footer_blocks > 0) ? true : false;
668
+ var banner_state;
669
+ var panel_state;
670
+ var footer_state;
671
+
672
+ if (j1.getState() === 'finished' && pageVisible && atticFinished) {
673
+ logger.info('\n' + 'load block elements');
674
+ if (banners_exits) {j1.initBanner(settings);}
675
+ if (panels_exists) {j1.initPanel(settings)};
676
+ if (footer_exists) {j1.initFooter(settings);}
677
+
678
+ if (banner_blocks || panel_blocks) {
679
+ // pages having banners or panels
680
+
681
+ var dependencies_met_blocks_ready = setInterval (function (settings) {
682
+ if (footer_exists) {
683
+ footer_state = j1.getXhrDataState('#{{footer_id}}');
684
+ } else {
685
+ // pages w/o footer
686
+ footer_state = 'success';
687
+ }
688
+
689
+ // check bannern if HTML content loaded successfully
690
+ //
691
+ if (banners_exits) {
692
+ Object.entries(j1.xhrDataState).forEach(entry => {
693
+ const [key, value] = entry;
694
+ if (key.includes('banner')) {
695
+ banner_state = value;
696
+ }
697
+ });
698
+ } else {
699
+ // pages w/o banners
700
+ banner_state = 'success';
701
+ }
702
+
703
+ // check panels if HTML content loaded successfully
704
+ //
705
+ if (panels_exists) {
706
+ Object.entries(j1.xhrDataState).forEach(entry => {
707
+ const [key, value] = entry;
708
+ if (key.includes('panel')) {
709
+ panel_state = value;
710
+ }
711
+ });
712
+ } else {
713
+ // pages w/o panels
714
+ panel_state = 'success';
715
+ }
716
+
717
+ // show the content section for 'block content' to optimze CLS
718
+ //
719
+ if (banner_state == 'success' && panel_state == 'success' && footer_state == 'success') {
720
+ // show the content|footer
721
+ //
722
+ $('#content').show();
723
+ $('#{{footer_id}}').show();
724
+
725
+ clearInterval(dependencies_met_page_ready);
726
+ clearInterval(dependencies_met_blocks_ready);
727
+ }
728
+ }, 10);
729
+ } else {
730
+ // pages w/o banners or panels
731
+
732
+ if (footer_exists) {
733
+ footer_state = j1.getXhrDataState('#{{footer_id}}');
734
+ } else {
735
+ // pages w/o footer
736
+ footer_state = 'success';
737
+ }
738
+
739
+ // show the content|footer
740
+ //
741
+ if ( footer_state == 'success') {
742
+ $('#content').show();
743
+ $('#{{footer_id}}').show();
744
+
745
+ clearInterval(dependencies_met_page_ready);
746
+ }
747
+ }
748
+ }
749
+ }, 10);
562
750
 
563
751
  state = 'running';
564
752
  logger.debug('\n' + 'state: ' + state);
@@ -603,7 +791,7 @@ var j1 = (function (options) {
603
791
  var cb_load_closure = function(banner_id) {
604
792
  return function ( responseTxt, statusTxt, xhr ) {
605
793
  if ( statusTxt == 'success' ) {
606
- var logger = log4javascript.getLogger('j1.adapter.xhrData');
794
+ // var logger = log4javascript.getLogger('j1.adapter.xhrData');
607
795
  logText = '\n' + 'loading banner completed on id: ' +banner_id;
608
796
  logger.info(logText);
609
797
  j1.setXhrDataState(banner_id, statusTxt);
@@ -624,7 +812,7 @@ var j1 = (function (options) {
624
812
 
625
813
  {% comment %} Collect all banner id|s configured
626
814
  -------------------------------------------------------------------------- {% endcomment %}
627
- {% for items in banner_config_settings %}
815
+ {% for items in banner_settings %}
628
816
  {% assign key = items[0] %}
629
817
  {% assign value = items[1] %}
630
818
 
@@ -665,7 +853,7 @@ var j1 = (function (options) {
665
853
  {% assign banner_config = nil %}
666
854
 
667
855
  {% endfor %} {% comment %} END banner_config {% endcomment %}
668
- {% endfor %} {% comment %} END banner_config_settings {% endcomment %}
856
+ {% endfor %} {% comment %} END banner_settings {% endcomment %}
669
857
 
670
858
  {% comment %} REGISTER exceptions container
671
859
  -------------------------------------------------------------------------- {% endcomment %}
@@ -726,7 +914,7 @@ var j1 = (function (options) {
726
914
  j1.setXhrDataState(panel_id, statusTxt);
727
915
  j1.setXhrDomState(panel_id, statusTxt);
728
916
  // Set|Log status
729
- state = 'Error';
917
+ state = 'error';
730
918
  logger.error('\n' + 'state: ' + state);
731
919
  }
732
920
  };
@@ -734,7 +922,7 @@ var j1 = (function (options) {
734
922
 
735
923
  {% comment %} Collect all panel id|s configured
736
924
  -------------------------------------------------------------------------- {% endcomment %}
737
- {% for items in panel_config_settings %}
925
+ {% for items in panel_settings %}
738
926
  {% assign key = items[0] %}
739
927
  {% assign value = items[1] %}
740
928
 
@@ -774,7 +962,7 @@ var j1 = (function (options) {
774
962
 
775
963
  {% endfor %} {% comment %} END panels {% endcomment %}
776
964
  {% endfor %} {% comment %} END panel_config {% endcomment %}
777
- {% endfor %} {% comment %} END panel_config_settings {% endcomment %}
965
+ {% endfor %} {% comment %} END panel_settings {% endcomment %}
778
966
 
779
967
  if (panel.length) {
780
968
  for (var i in panel) {
@@ -836,7 +1024,7 @@ var j1 = (function (options) {
836
1024
 
837
1025
  var id = '#' + '{{footer_id}}';
838
1026
  var selector = $(id);
839
- if ( selector.length ) {
1027
+ if (selector.length) {
840
1028
  var footer_data_path = '{{footer_data_path}} ' + id;
841
1029
  selector.load(footer_data_path, cb_load_closure(id));
842
1030
  } else {
@@ -894,6 +1082,12 @@ var j1 = (function (options) {
894
1082
  var meta_personalization = $('meta[name=personalization]').attr('content');
895
1083
  var personalization = (meta_personalization === 'true') ? true: false;
896
1084
 
1085
+ const cb = (list) => {
1086
+ list.getEntries().forEach(entry => {
1087
+ console.log(entry);
1088
+ });
1089
+ }
1090
+
897
1091
  // if personalized content detected, page requires user consent
898
1092
  // -----------------------------------------------------------------------
899
1093
  if (personalization && !user_consent.personalization) {
@@ -970,6 +1164,7 @@ var j1 = (function (options) {
970
1164
 
971
1165
  // display the page loaded is managed by module "themer"
972
1166
  // $('#no_flicker').css('display', 'block');
1167
+ // $('#no_flicker').show();
973
1168
 
974
1169
  // jadams, 2021-12-06: Check if access to cookies for this site failed.
975
1170
  // Possibly, a third-party domain or an attacker tries to access it.
@@ -1069,10 +1264,11 @@ var j1 = (function (options) {
1069
1264
  setTimeout (function() {
1070
1265
  // scroll to an anchor in current page if given in URL
1071
1266
  j1.scrollToAnchor();
1072
- }, {{template_config.page_on_load_timeout}} );
1267
+ }, {{template_config.page_on_load_timeout}});
1268
+
1073
1269
  clearInterval(dependencies_met_page_ready);
1074
1270
  }
1075
- }, 25);
1271
+ }, 10);
1076
1272
 
1077
1273
  // set|log status
1078
1274
  state = 'finished';
@@ -1113,6 +1309,7 @@ var j1 = (function (options) {
1113
1309
 
1114
1310
  // display the page loaded is managed by module "themer"
1115
1311
  // $('#no_flicker').css('display', 'block');
1312
+ // $('#no_flicker').show();
1116
1313
 
1117
1314
  // jadams, 2021-12-06: Check if access to cookies for this site failed.
1118
1315
  // Possibly, a third-party domain or an attacker tries to access it.
@@ -1254,15 +1451,14 @@ var j1 = (function (options) {
1254
1451
  var pageState = $('#no_flicker').css("display");
1255
1452
  var pageVisible = (pageState == 'block') ? true: false;
1256
1453
  if ( j1.getState() === 'finished' && pageVisible ) {
1257
- // TODO: Hide GoogleTranslator
1258
- // $('.skiptranslate').hide();
1259
1454
  setTimeout (function() {
1260
1455
  // scroll to an anchor in current page if given in URL
1261
1456
  j1.scrollToAnchor();
1262
- }, {{template_config.page_on_load_timeout}} );
1457
+ }, {{template_config.page_on_load_timeout}});
1458
+
1263
1459
  clearInterval(dependencies_met_page_ready);
1264
1460
  }
1265
- }, 25);
1461
+ }, 10);
1266
1462
 
1267
1463
  // set|log status
1268
1464
  state = 'finished';
@@ -1679,12 +1875,10 @@ var j1 = (function (options) {
1679
1875
  // -------------------------------------------------------------------------
1680
1876
  // MAX-AGE Cookies: To leave cookies for a specific time, set the expires
1681
1877
  // part into a FUTUTE date. FOR GDPR compliance, MAX-AGE is 365 days.
1682
- // TODO:
1683
- // Change attribute "Secure" to true, if HTTPS is used.
1684
- // Checks and config changes are to be done.
1878
+ // TODO: Change attribute "Secure" to true, if HTTPS is used.
1879
+ // Checks and config changes are to be done.
1685
1880
  // -------------------------------------------------------------------------
1686
- // TODO:
1687
- // Handling of attribute "SameSite".
1881
+ // TODO: Handling of attribute "SameSite".
1688
1882
  // Config to use this attribute should be configurable
1689
1883
  // (what config file?).
1690
1884
  // Disabled use for now in general.
@@ -2061,7 +2255,7 @@ var j1 = (function (options) {
2061
2255
  return false;
2062
2256
  }
2063
2257
  }
2064
- }, 25);
2258
+ }, 10);
2065
2259
  },
2066
2260
 
2067
2261
  // -------------------------------------------------------------------------
@@ -2119,7 +2313,7 @@ var j1 = (function (options) {
2119
2313
  return false;
2120
2314
  }
2121
2315
  }
2122
- }, 25);
2316
+ }, 10);
2123
2317
  },
2124
2318
 
2125
2319
  // -------------------------------------------------------------------------
@@ -2480,7 +2674,7 @@ var j1 = (function (options) {
2480
2674
  }
2481
2675
 
2482
2676
  }
2483
- }, 25);
2677
+ }, 10);
2484
2678
  },
2485
2679
 
2486
2680
  // -------------------------------------------------------------------------
@@ -2506,20 +2700,125 @@ var j1 = (function (options) {
2506
2700
  }, // END stringToBoolean
2507
2701
 
2508
2702
  // -------------------------------------------------------------------------
2509
- // registerEvents()
2703
+ // registerMonitors()
2510
2704
  //
2511
2705
  // -------------------------------------------------------------------------
2512
- registerEvents: function (logger) {
2706
+ registerMonitors: function () {
2707
+ var cls;
2708
+ var lcp
2709
+ var cumulated_cls = 0;
2710
+ var cumulated_lcp = 0;
2711
+ const development = ('{{environment}}'.includes('prod')) ? false : true;
2712
+
2713
+ // PerformanceObserver to monitor the 'LCP' of a page load
2714
+ // see: https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint
2715
+ //
2716
+ const performanceObserverLCP = new PerformanceObserver((entryList) => {
2717
+ const entries = entryList.getEntries();
2718
+
2719
+ // logger API used for deveöopment only
2720
+ //
2721
+ if (development) {
2722
+ var logger = log4javascript.getLogger('PerformanceObserver');
2723
+ }
2724
+
2725
+ // Use the latest LCP candidate
2726
+ const lastEntry = entries[entries.length - 1];
2727
+ var lastEntryText = JSON.stringify(lastEntry, null, 2);
2728
+
2729
+ cumulated_lcp += lastEntry.renderTime;
2730
+ var lcp_full = cumulated_lcp/1000;
2731
+ lcp = lcp_full.toFixed(3);
2732
+
2733
+ var url = lastEntry.url;
2734
+ var pathname = url.replace( /^[a-zA-Z]{3,5}\:\/{2}[a-zA-Z0-9_.:-]+\//, '' );
2735
+
2736
+ if (development && lastEntry.url != '') {
2737
+ logger.debug('\n' + 'Largest Contentful Paint (LCP), url:', pathname);
2738
+ } else {
2739
+ console.debug(`Largest Contentful Paint (LCP), url: ${pathname}`);
2740
+ }
2513
2741
 
2514
- // Add ResizeObserver to monitor the page height of dynamic pages
2742
+ if (development) {
2743
+ if (lcp > 2.5) {
2744
+ logger.warn('\n' + 'Largest Contentful Paint (LCP), cumulated:', lcp);
2745
+ } else {
2746
+ logger.info('\n' + 'Largest Contentful Paint (LCP), cumulated:', lcp);
2747
+ }
2748
+ } else {
2749
+ if (lcp > 2.5) {
2750
+ console.warn(`Largest Contentful Paint (LCP), cumulated: ${lcp}`);
2751
+ } else {
2752
+ console.debug(`Largest Contentful Paint (LCP), cumulated: ${lcp}`);
2753
+ }
2754
+ }
2755
+
2756
+ }); // END performanceObserverLCP
2757
+
2758
+ // PerformanceObserver to monitor the 'CLS' of a page load
2759
+ //
2760
+ const performanceObserverCLS = new PerformanceObserver(entryList => {
2761
+ var entries = entryList.getEntries() || [];
2762
+
2763
+ // logger API used for deveöopment only
2764
+ //
2765
+ if (development) {
2766
+ var logger = log4javascript.getLogger('PerformanceObserver');
2767
+ }
2768
+
2769
+ entries.forEach(entry => {
2770
+
2771
+ if (entry.sources) {
2772
+
2773
+ // omit entries likely caused by user input
2774
+ if (!entry.hadRecentInput) {
2775
+ // cumulate values
2776
+ cumulated_cls += entry.value;
2777
+ cls = cumulated_cls.toFixed(3);
2778
+ }
2779
+
2780
+ for (const {node, currentRect, previousRect} of entry.sources) {
2781
+ if (node.hasOwnProperty('firstElementChild') && typeof node.firstElementChild != 'null' && typeof node.firstElementChild != 'undefined') {
2782
+ var id = '';
2783
+ try {
2784
+ id = node.firstElementChild.id;
2785
+ }
2786
+ catch(err) {
2787
+ id = 'missing';
2788
+ }
2789
+
2790
+ if (development && id !== 'missing' && id !== '' && cls > 0.01) {
2791
+ if (cls > 0.1) {
2792
+ logger.warn('\n' + 'Cumulative Layout Shift (CLS), entry id: ', id);
2793
+ logger.warn('\n' + 'Cumulative Layout Shift (CLS): ', cls);
2794
+ } else {
2795
+ logger.info('\n' + 'Cumulative Layout Shift (CLS), entry id: ', id);
2796
+ logger.info('\n' + 'Cumulative Layout Shift (CLS): ', cls);
2797
+ }
2798
+ }
2799
+ } // END if typeof
2800
+ } // END for
2801
+ } // END if entry.sources
2802
+
2803
+ }); // END forEach entry
2804
+
2805
+ }); // END performanceObserverCLS
2806
+
2807
+ // ResizeObserver to monitor the changes on page height (dynamic pages)
2515
2808
  // see: https://stackoverflow.com/questions/14866775/detect-document-height-change
2516
2809
  //
2517
- const observer = new ResizeObserver(entries => {
2810
+ const resizeObserver = new ResizeObserver(entries => {
2518
2811
  var scrollOffsetCorrection = scrollerOptions.smoothscroll.offsetCorrection;
2519
2812
  const body = document.body,
2520
2813
  html = document.documentElement,
2521
2814
  scrollOffset = j1.getScrollOffset(scrollOffsetCorrection);
2522
2815
 
2816
+ // logger API used for deveöopment only
2817
+ //
2818
+ if (development) {
2819
+ var logger = log4javascript.getLogger('ResizeObserver');
2820
+ }
2821
+
2523
2822
  // get the page height from the DOM
2524
2823
  //
2525
2824
  var documentHeight = Math.max (
@@ -2532,9 +2831,11 @@ var j1 = (function (options) {
2532
2831
 
2533
2832
  j1['pageMonitor'].eventNo += 1;
2534
2833
 
2535
- // Skip first Observer events as data returne found unusable
2834
+ // skip first Observer event
2835
+ //
2536
2836
  if (j1['pageMonitor'].eventNo == 2) {
2537
2837
  // Set initial data from second event
2838
+ //
2538
2839
  j1['pageMonitor'].pageBaseHeight = document.body.scrollHeight;
2539
2840
  j1['pageMonitor'].currentPageHeight = document.body.scrollHeight;
2540
2841
  j1['pageMonitor'].previousPageHeight = document.body.scrollHeight;
@@ -2545,7 +2846,7 @@ var j1 = (function (options) {
2545
2846
  growthRatio = 0.00;
2546
2847
  } else {
2547
2848
  // collect 'pageHeight' from 'entries'
2548
- // NOTE: each entry is an instance of ResizeObserverEntry
2849
+ //
2549
2850
  for (const entry of entries) {
2550
2851
  pageBaseHeight = j1['pageMonitor'].pageBaseHeight;
2551
2852
  if (pageBaseHeight > 0) {
@@ -2555,6 +2856,7 @@ var j1 = (function (options) {
2555
2856
  j1['pageMonitor'].currentPageHeight = pageHeight;
2556
2857
 
2557
2858
  // total growth ratio
2859
+ //
2558
2860
  pageGrowthRatio = pageHeight / pageBaseHeight * 100;
2559
2861
  pageGrowthRatio = pageGrowthRatio.toFixed(2);
2560
2862
 
@@ -2564,34 +2866,56 @@ var j1 = (function (options) {
2564
2866
  growthRatio = growthRatio.toFixed(2);
2565
2867
  j1['pageMonitor'].growthRatio = growthRatio;
2566
2868
  }
2567
- }
2568
- // detect the page 'type'
2569
- if (growthRatio >= 10) {
2570
- j1['pageMonitor'].pageType = 'dynamic';
2869
+ } // END for entries
2571
2870
 
2572
- // logger.debug('\n' + 'Observer: previousPageHeight|currentPageHeight (px): ', j1['pageMonitor'].previousPageHeight + '|' + pageHeight);
2573
- // logger.debug('\n' + 'Observer: growthRatio relative|absolute (%): ', growthRatio + '|' + pageGrowthRatio);
2871
+ // detect the 'page type'
2872
+ //
2873
+ if (growthRatio >= 5) {
2874
+ j1['pageMonitor'].pageType = 'dynamic';
2574
2875
 
2575
- logger.debug('\n' + 'Observer: page growthRatio (%): ', j1['pageMonitor'].growthRatio);
2576
- logger.debug('\n' + 'Observer: page detected as: dynamic');
2876
+ if (development) {
2877
+ logger.debug('\n' + 'growthRatio: ' + j1['pageMonitor'].growthRatio + '%');
2878
+ logger.debug('\n' + 'page detected as: dynamic');
2879
+ }
2577
2880
 
2578
2881
  } else {
2579
2882
  // set the page type to 'static' if low growth detected
2580
2883
  //
2581
- logger.debug('\n' + 'Observer: page growthRatio (%): ', j1['pageMonitor'].growthRatio);
2582
- j1['pageMonitor'].pageType = 'static';
2583
- logger.debug('\n' + 'Observer: page detected as: static');
2584
- }
2585
- } // END Observer data evaluation
2586
- }); // END Observer
2587
-
2588
- // monitor the page growth if visible
2589
- var dependencies_met_page_finished = setInterval (function () {
2590
- if (j1.getState() == 'finished') {
2591
- observer.observe(document.querySelector('body')); // observer.observe(document.querySelector('#content'));
2592
- clearInterval(dependencies_met_page_finished);
2593
- }
2594
- }, 25);
2884
+ if (typeof j1['pageMonitor'].growthRatio != 'undefined' && j1['pageMonitor'].growthRatio > 0) {
2885
+ j1['pageMonitor'].pageType = 'static';
2886
+ if (development) {
2887
+ logger.debug('\n' + 'growthRatio: ' + j1['pageMonitor'].growthRatio + '%');
2888
+ logger.debug('\n' + 'page detected as: static');
2889
+ }
2890
+ }
2891
+ } // END if growthRatio
2892
+
2893
+ } // END if j1['pageMonitor']
2894
+
2895
+ }); // END resizeObserver
2896
+
2897
+ // -----------------------------------------------------------------------
2898
+ // run all observers for page monitoring
2899
+ // -----------------------------------------------------------------------
2900
+
2901
+ // monitor 'LCP'
2902
+ //
2903
+ performanceObserverLCP.observe({
2904
+ type: 'largest-contentful-paint',
2905
+ buffered: true
2906
+ });
2907
+
2908
+ // monitor 'CLS'
2909
+ //
2910
+ performanceObserverCLS.observe({
2911
+ type: 'layout-shift',
2912
+ buffered: true
2913
+ });
2914
+
2915
+ // monitor 'GROWTH'
2916
+ resizeObserver.observe(
2917
+ document.querySelector('body')
2918
+ );
2595
2919
 
2596
2920
  // -----------------------------------------------------------------------
2597
2921
  // final updates before browser page|tab
@@ -2652,7 +2976,8 @@ var j1 = (function (options) {
2652
2976
  }
2653
2977
  });
2654
2978
 
2655
- } // END registerEvents
2979
+ } // END registerMonitors
2980
+
2656
2981
  };
2657
2982
  }) (j1, window);
2658
2983