j1-template 2023.2.7 → 2023.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (363) 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 -9401
  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 -1
  265. data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -1
  266. data/lib/starter_web/pages/public/blog/navigator/index.html +2 -2
  267. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +1 -1
  268. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
  269. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
  270. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
  271. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +75 -65
  272. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +58 -0
  273. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/accordion.asciidoc +34 -0
  274. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/alerts.asciidoc +15 -0
  275. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/badges.asciidoc +9 -0
  276. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/body.asciidoc +14 -0
  277. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/breadcrumbs.asciidoc +14 -0
  278. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/buttons.asciidoc +75 -0
  279. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/cards.asciidoc +22 -0
  280. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/carousel.asciidoc +37 -0
  281. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/close.asciidoc +15 -0
  282. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/code.asciidoc +14 -0
  283. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/color_system.asciidoc +353 -0
  284. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/components.asciidoc +69 -0
  285. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/dropdowns.asciidoc +53 -0
  286. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/figures.asciidoc +5 -0
  287. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/forms.asciidoc +270 -0
  288. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/grid.asciidoc +49 -0
  289. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/links.asciidoc +21 -0
  290. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/list_groups.asciidoc +28 -0
  291. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/modals.asciidoc +43 -0
  292. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navbar.asciidoc +45 -0
  293. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navs.asciidoc +28 -0
  294. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/offcanvas.asciidoc +16 -0
  295. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/options.asciidoc +30 -0
  296. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/pagination.asciidoc +40 -0
  297. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/paragraph.asciidoc +5 -0
  298. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/placeholders.asciidoc +5 -0
  299. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/popovers.asciidoc +28 -0
  300. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/position.asciidoc +8 -0
  301. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/progress_bars.asciidoc +12 -0
  302. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spacing.asciidoc +14 -0
  303. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spinners.asciidoc +12 -0
  304. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tables.asciidoc +55 -0
  305. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/thumbnails.asciidoc +9 -0
  306. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/toasts.asciidoc +18 -0
  307. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tooltips.asciidoc +28 -0
  308. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/typography.asciidoc +115 -0
  309. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/z_index.asciidoc +26 -0
  310. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/_table.asciidoc +9 -0
  311. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/accordion.asciidoc +87 -0
  312. data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +262 -0
  313. data/lib/starter_web/pages/public/learn/cheatsheet/gem.adoc +255 -0
  314. data/lib/starter_web/pages/public/learn/cheatsheet/git.adoc +1458 -0
  315. data/lib/starter_web/pages/public/learn/cheatsheet/j1.adoc +63 -0
  316. data/lib/starter_web/pages/public/learn/cheatsheet/yaml.adoc +514 -0
  317. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +59 -0
  318. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/100_chapter.asciidoc +541 -0
  319. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/200_chapter.asciidoc +33 -0
  320. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/build_command_options.asciidoc +72 -0
  321. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/files_and_folders.asciidoc +66 -0
  322. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_configuration_options.asciidoc +63 -0
  323. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_variables.asciidoc +26 -0
  324. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/page_variables.asciidoc +54 -0
  325. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/serve_command_options.asciidoc +45 -0
  326. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/site_variables.asciidoc +59 -0
  327. data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +442 -0
  328. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +1 -1
  329. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +3 -4
  330. data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +2 -2
  331. data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +10 -10
  332. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +8 -1
  333. data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +3 -3
  334. data/lib/starter_web/pages/public/learn/where_to_go.adoc +39 -45
  335. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +2 -2
  336. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -2
  337. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +2 -2
  338. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +93 -4
  339. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  340. data/lib/starter_web/utilsrv/package.json +1 -1
  341. metadata +133 -24
  342. data/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  343. data/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  344. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.css +0 -1711
  345. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.min.css +0 -1
  346. data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +0 -127
  347. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +0 -460
  348. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +0 -97
  349. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +0 -15
  350. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +0 -115
  351. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +0 -15
  352. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +0 -97
  353. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +0 -15
  354. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +0 -125
  355. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +0 -15
  356. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  357. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  358. /data/lib/starter_web/assets/images/{promo → quotes/promo}/home/screenshot.jpg +0 -0
  359. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-faq.jpg +0 -0
  360. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-generator.jpg +0 -0
  361. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-generator.png +0 -0
  362. /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-og.png +0 -0
  363. /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