j1-template 2020.0.4 → 2020.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_collection.html +1 -1
  4. data/_includes/themes/j1/layouts/content_generator_page.html +1 -1
  5. data/_includes/themes/j1/layouts/content_generator_post.html +4 -4
  6. data/_includes/themes/j1/modules/navigator/generator.html +22 -12
  7. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  8. data/{lib/starter_web/apps → apps}/public/cc/cc.yml +0 -0
  9. data/{lib/starter_web/apps → apps}/public/cc/index.adoc +0 -0
  10. data/assets/data/menu.html +2 -1
  11. data/assets/data/mmenu.html +3 -3
  12. data/assets/data/mmenu_sidebar.html +1 -1
  13. data/assets/data/mmenu_toc.html +1 -1
  14. data/assets/data/quicklinks.html +0 -3
  15. data/assets/data/ssm.html +231 -0
  16. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/algolia.js +3 -3
  17. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/attic.js +4 -4
  18. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/carousel.js +3 -3
  19. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/cookie_consent.js +0 -0
  20. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/framer.js +3 -3
  21. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/gallery_customizer.js +0 -0
  22. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/j1.js +18 -39
  23. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/justified_gallery.js +0 -0
  24. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/lightbox.js +0 -0
  25. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/logger.js +0 -0
  26. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/mmenu.js +45 -25
  27. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/navigator.js +21 -3
  28. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/searcher.js +0 -0
  29. data/assets/themes/j1/adapter/js/ssm.js +538 -0
  30. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/themer.js +1 -1
  31. data/{lib/starter_web/assets → assets}/themes/j1/adapter/js/toccer.js +46 -156
  32. data/assets/themes/j1/core/css/globals.css +1 -1
  33. data/assets/themes/j1/core/css/theme_extensions.css +680 -116
  34. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  35. data/assets/themes/j1/core/css/uno.css +690 -116
  36. data/assets/themes/j1/core/css/uno.min.css +1 -1
  37. data/assets/themes/j1/core/css/vendor.css +4 -1
  38. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  39. data/assets/themes/j1/core/js/template.js +40 -30
  40. data/assets/themes/j1/core/js/template.js.map +1 -1
  41. data/assets/themes/j1/core/js/template.min.js +1 -1
  42. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/css/carousel.css +0 -0
  43. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/css/carousel.min.css +0 -0
  44. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/css/carousel_transitions.css +0 -0
  45. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/css/carousel_transitions.min.css +0 -0
  46. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/css/theme/uno.css +0 -0
  47. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/css/theme/uno.min.css +0 -0
  48. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/images/ajax-loader.gif +0 -0
  49. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/images/grabbing.png +0 -0
  50. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/images/owl-logo.png +0 -0
  51. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/images/owl.video.play.png +0 -0
  52. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/js/carousel.js +0 -0
  53. data/{lib/starter_web/assets → assets}/themes/j1/extensions/carousel/js/carousel.min.js +0 -0
  54. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iconify/js/iconify.min.js +0 -0
  55. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/frame.absolute.html +0 -0
  56. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/frame.content.html +0 -0
  57. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/frame.hover.html +0 -0
  58. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/frame.nested.html +0 -0
  59. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/frame.textarea.html +0 -0
  60. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/frame.tolerance.html +0 -0
  61. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/index.html +0 -0
  62. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/examples/two.html +0 -0
  63. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.js +0 -0
  64. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.map +0 -0
  65. data/{lib/starter_web/assets → assets}/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.min.js +0 -0
  66. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/LICENSE +0 -0
  67. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/README.md +0 -0
  68. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/css/justifiedGallery.css +0 -0
  69. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/css/justifiedGallery.min.css +0 -0
  70. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/css/theme/uno.css +0 -0
  71. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/js/justifiedGallery.3.7.0.js +0 -0
  72. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/js/justifiedGallery.js +0 -0
  73. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/js/justifiedGallery.min.js +0 -0
  74. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/less/.csslintrc +0 -0
  75. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v3.7.0/less/justifiedGallery.less +0 -0
  76. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v4.0.0/css/justifiedGallery.css +0 -0
  77. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v4.0.0/css/justifiedGallery.min.css +0 -0
  78. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v4.0.0/css/theme/uno.css +0 -0
  79. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v4.0.0/js/jquery.justifiedGallery.js +0 -0
  80. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/_versions/v4.0.0/js/jquery.justifiedGallery.min.js +0 -0
  81. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/css/justifiedGallery.css +0 -0
  82. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/css/justifiedGallery.min.css +0 -0
  83. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/css/theme/uno.css +0 -0
  84. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/css/theme/uno.min.css +0 -0
  85. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/js/justifiedGallery.js +0 -0
  86. data/{lib/starter_web/assets → assets}/themes/j1/extensions/justified_gallery/js/justifiedGallery.min.js +0 -0
  87. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/core/lg-fb-comment-box.css +0 -0
  88. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/core/lg-fb-comment-box.min.css +0 -0
  89. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/core/lg-transitions.css +0 -0
  90. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/core/lg-transitions.min.css +0 -0
  91. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/core/lightgallery.css +0 -0
  92. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/core/lightgallery.min.css +0 -0
  93. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/fonts/lg.eot +0 -0
  94. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/fonts/lg.svg +0 -0
  95. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/fonts/lg.ttf +0 -0
  96. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/fonts/lg.woff +0 -0
  97. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/img/loading.gif +0 -0
  98. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/img/video-play.png +0 -0
  99. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/img/vimeo-play.png +0 -0
  100. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/img/youtube-play.png +0 -0
  101. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/animation-w.png +0 -0
  102. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/customize-w.png +0 -0
  103. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/dynamic-w.png +0 -0
  104. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/facebook-icon.svg +0 -0
  105. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/googleplus-icon.svg +0 -0
  106. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/html5-w.png +0 -0
  107. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/linked-in.png +0 -0
  108. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/module-w.png +0 -0
  109. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/play-button.png +0 -0
  110. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/responsive-w.png +0 -0
  111. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/thumb-w.png +0 -0
  112. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/touch-w.png +0 -0
  113. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/twitter-icon.svg +0 -0
  114. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/twitter.png +0 -0
  115. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/video1-w.png +0 -0
  116. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/zoom-w.png +0 -0
  117. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/icons/zoom.png +0 -0
  118. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/uno.css +0 -0
  119. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/css/themes/uno.min.css +0 -0
  120. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/core/lightgallery.js +0 -0
  121. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/core/lightgallery.min.js +0 -0
  122. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/j1/j1-video.js +0 -0
  123. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/j1/j1-video.min.js +0 -0
  124. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-autoplay.js +0 -0
  125. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-autoplay.min.js +0 -0
  126. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-fullscreen.js +0 -0
  127. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-fullscreen.min.js +0 -0
  128. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-hash.js +0 -0
  129. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-hash.min.js +0 -0
  130. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-pager.js +0 -0
  131. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-pager.min.js +0 -0
  132. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-share.js +0 -0
  133. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-share.min.js +0 -0
  134. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-thumbnail.js +0 -0
  135. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-thumbnail.min.js +0 -0
  136. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-video.js +0 -0
  137. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-video.min.js +0 -0
  138. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-zoom.js +0 -0
  139. data/{lib/starter_web/assets → assets}/themes/j1/extensions/light_gallery/js/modules/lg-zoom.min.js +0 -0
  140. data/{lib/starter_web/assets → assets}/themes/j1/extensions/log4javascript/log4javascript.js +0 -0
  141. data/{lib/starter_web/assets → assets}/themes/j1/extensions/log4javascript/log4javascript.min.js +0 -0
  142. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.dark/theme.css +0 -0
  143. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.light/theme.css +0 -0
  144. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.monokai.dark/theme.css +0 -0
  145. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.monokai.light/theme.css +0 -0
  146. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.monokai/theme.css +0 -0
  147. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.solarized.dark/theme.css +0 -0
  148. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.solarized.light/theme.css +0 -0
  149. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16.solarized/theme.css +0 -0
  150. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/base16/theme.css +0 -0
  151. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/colorful/theme.css +0 -0
  152. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/github/theme.css +0 -0
  153. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/gruvbox.dark/theme.css +0 -0
  154. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/gruvbox.light/theme.css +0 -0
  155. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/gruvbox/theme.css +0 -0
  156. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/igorpro/theme.css +0 -0
  157. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/molokai/theme.css +0 -0
  158. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/monokai.sublime/theme.css +0 -0
  159. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/monokai/theme.css +0 -0
  160. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/pastie/theme.css +0 -0
  161. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/thankful_eyes/theme.css +0 -0
  162. data/{lib/starter_web/assets → assets}/themes/j1/extensions/rouge/css/tulip/theme.css +0 -0
  163. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/city.css +0 -0
  164. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/city.min.css +0 -0
  165. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/fantasy.css +0 -0
  166. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/fantasy.min.css +0 -0
  167. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/forest.css +0 -0
  168. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/forest.min.css +0 -0
  169. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/sea.css +0 -0
  170. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/themes/sea.min.css +0 -0
  171. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/video-js.css +0 -0
  172. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/css/video-js.min.css +0 -0
  173. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/js/video.js +0 -0
  174. data/{lib/starter_web/assets → assets}/themes/j1/extensions/videojs/js/video.min.js +0 -0
  175. data/{lib/starter_web/assets → assets}/themes/j1/extensions/vimeo/froogaloop/js/froogaloop2.min.js +0 -0
  176. data/{lib/starter_web/assets → assets}/themes/j1/extensions/vimeo/player/js/player.js +0 -0
  177. data/{lib/starter_web/assets → assets}/themes/j1/extensions/vimeo/player/js/player.js.map +0 -0
  178. data/{lib/starter_web/assets → assets}/themes/j1/extensions/vimeo/player/js/player.min.js +0 -0
  179. data/{lib/starter_web/assets → assets}/themes/j1/extensions/vimeo/player/js/player.min.js.map +0 -0
  180. data/lib/j1/version.rb +1 -1
  181. data/lib/starter_web/Gemfile +2 -2
  182. data/lib/starter_web/_config.yml +1 -1
  183. data/lib/starter_web/_data/modules/authentication.yml +1 -1
  184. data/lib/starter_web/_data/modules/defaults/ssm.yml +50 -0
  185. data/lib/starter_web/_data/modules/defaults/toccer.yml +9 -14
  186. data/lib/starter_web/_data/modules/navigator.yml +10 -10
  187. data/lib/starter_web/_data/modules/ssm.yml +142 -0
  188. data/lib/starter_web/_data/modules/toccer.yml +15 -63
  189. data/lib/starter_web/_data/resources.yml +28 -56
  190. data/lib/starter_web/_data/template_settings.yml +13 -13
  191. data/lib/starter_web/_plugins/uglify.rb +41 -0
  192. data/lib/starter_web/assets/images/modules/icons/j1/{j1..ico → j1.ico} +0 -0
  193. data/lib/starter_web/package.json +1 -1
  194. data/lib/starter_web/pages/public/about/about_site.adoc +3 -3
  195. data/lib/starter_web/pages/public/about/become_a_patron.adoc +9 -11
  196. data/lib/starter_web/pages/public/learn/floating_sidebar.adoc +199 -0
  197. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +1 -1
  198. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +6 -7
  199. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +7 -3
  200. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +22 -24
  201. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +27 -30
  202. data/lib/starter_web/pages/public/learn/whats_up.adoc +12 -11
  203. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +1 -1
  204. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -3
  205. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +3 -3
  206. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  207. data/lib/starter_web/utilsrv/package.json +1 -1
  208. metadata +164 -173
  209. data/assets/themes/j1/core/css/globals.scss +0 -28
  210. data/lib/starter_web/_data/modules/back2top.yml +0 -40
  211. data/lib/starter_web/_data/modules/defaults/back2top.yml +0 -147
  212. data/lib/starter_web/_data/modules/defaults/smooth_scroll.yml +0 -169
  213. data/lib/starter_web/_data/modules/smooth_scroll.yml +0 -169
  214. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +0 -227
  215. data/lib/starter_web/assets/themes/j1/adapter/js/scroller.js +0 -177
  216. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.css +0 -384
  217. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.min.css +0 -384
  218. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.css +0 -95
  219. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.min.css +0 -95
  220. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.js +0 -215
  221. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.min.js +0 -213
  222. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.js +0 -118
  223. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.min.js +0 -118
@@ -302,7 +302,7 @@ j1.adapter['algolia'] = (function (j1, window) {
302
302
  // Set the current (processing) state of the module
303
303
  // -------------------------------------------------------------------------
304
304
  setState: function (stat) {
305
- j1.adapter.scroller.state = stat;
305
+ j1.adapter.algolia.state = stat;
306
306
  }, // END setState
307
307
 
308
308
  // -------------------------------------------------------------------------
@@ -310,7 +310,7 @@ j1.adapter['algolia'] = (function (j1, window) {
310
310
  // Returns the current (processing) state of the module
311
311
  // -------------------------------------------------------------------------
312
312
  getState: function () {
313
- return j1.adapter.scroller.state;
313
+ return j1.adapter.algolia.state;
314
314
  } // END state
315
315
 
316
316
  }; // END return
@@ -318,4 +318,4 @@ j1.adapter['algolia'] = (function (j1, window) {
318
318
 
319
319
  {% endcapture %}
320
320
  {{ cache | strip_empty_lines }}
321
- {% assign cache = nil %}
321
+ {% assign cache = nil %}
@@ -120,7 +120,7 @@ j1.adapter['attic'] = (function (j1, window) {
120
120
  // clear interval checking
121
121
  clearInterval(dependencies_met_attic_adapter);
122
122
  }
123
- }, 50); // END 'dataLoaded'
123
+ }, 25); // END 'dataLoaded'
124
124
 
125
125
  return true;
126
126
  }, // END init
@@ -544,7 +544,7 @@ j1.adapter['attic'] = (function (j1, window) {
544
544
  // Set the current (processing) state of the module
545
545
  // -------------------------------------------------------------------------
546
546
  setState: function (stat) {
547
- j1.adapter.scroller.state = stat;
547
+ j1.adapter.attic.state = stat;
548
548
  }, // END setState
549
549
 
550
550
  // -------------------------------------------------------------------------
@@ -552,7 +552,7 @@ j1.adapter['attic'] = (function (j1, window) {
552
552
  // Returns the current (processing) state of the module
553
553
  // -------------------------------------------------------------------------
554
554
  getState: function () {
555
- return j1.adapter.scroller.state;
555
+ return j1.adapter.attic.state;
556
556
  } // END state
557
557
 
558
558
  }; // END return
@@ -560,4 +560,4 @@ j1.adapter['attic'] = (function (j1, window) {
560
560
 
561
561
  {% endcapture %}
562
562
  {{ cache | strip_empty_lines }}
563
- {% assign cache = nil %}
563
+ {% assign cache = nil %}
@@ -293,7 +293,7 @@ j1.adapter['carousel'] = (function (j1, window) {
293
293
  // Set the current (processing) state of the module
294
294
  // -------------------------------------------------------------------------
295
295
  setState: function (stat) {
296
- j1.adapter.scroller.state = stat;
296
+ j1.adapter.carousel.state = stat;
297
297
  }, // END setState
298
298
 
299
299
  // -------------------------------------------------------------------------
@@ -301,7 +301,7 @@ j1.adapter['carousel'] = (function (j1, window) {
301
301
  // Returns the current (processing) state of the module
302
302
  // -------------------------------------------------------------------------
303
303
  getState: function () {
304
- return j1.adapter.scroller.state;
304
+ return j1.adapter.carousel.state;
305
305
  } // END state
306
306
 
307
307
  }; // END return
@@ -310,4 +310,4 @@ j1.adapter['carousel'] = (function (j1, window) {
310
310
 
311
311
  {% endcapture %}
312
312
  {{cache | strip_empty_lines}}
313
- {% assign cache = nil %}
313
+ {% assign cache = nil %}
@@ -189,7 +189,7 @@ j1.adapter['framer'] = (function (j1, window) {
189
189
  // Set the current (processing) state of the module
190
190
  // -------------------------------------------------------------------------
191
191
  setState: function (stat) {
192
- j1.adapter.scroller.state = stat;
192
+ j1.adapter.framer.state = stat;
193
193
  }, // END setState
194
194
 
195
195
  // -------------------------------------------------------------------------
@@ -197,7 +197,7 @@ j1.adapter['framer'] = (function (j1, window) {
197
197
  // Returns the current (processing) state of the module
198
198
  // -------------------------------------------------------------------------
199
199
  getState: function () {
200
- return j1.adapter.scroller.state;
200
+ return j1.adapter.framer.state;
201
201
  } // END state
202
202
 
203
203
  }; // END return
@@ -205,4 +205,4 @@ j1.adapter['framer'] = (function (j1, window) {
205
205
 
206
206
  {% endcapture %}
207
207
  {{ cache | strip_empty_lines }}
208
- {% assign cache = nil %}
208
+ {% assign cache = nil %}
@@ -1064,8 +1064,6 @@ var j1 = (function () {
1064
1064
 
1065
1065
  var logText = 'initializing material design finished';
1066
1066
  logger.info(logText);
1067
-
1068
- return true;
1069
1067
  }, // END initMDB
1070
1068
 
1071
1069
  // -------------------------------------------------------------------------
@@ -1085,7 +1083,6 @@ var j1 = (function () {
1085
1083
  o[p] = a[i][p];
1086
1084
  }
1087
1085
  }
1088
-
1089
1086
  return o;
1090
1087
  }, // END mergeData
1091
1088
 
@@ -1103,61 +1100,43 @@ var j1 = (function () {
1103
1100
  // -------------------------------------------------------------------------
1104
1101
  getLanguage: function () {
1105
1102
  var language = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage);
1106
-
1107
- return language;
1108
1103
  }, // END getLanguage
1109
1104
 
1110
1105
  // -------------------------------------------------------------------------
1111
- // returns the template version taken from site config ( _config.yml)
1106
+ // returns the template version taken from site config (_config.yml)
1112
1107
  // -------------------------------------------------------------------------
1113
1108
  getTemplateVersion: function () {
1114
1109
  return '{{template_version}}';
1115
1110
  }, // END getTemplateVersion
1116
1111
 
1117
1112
  // -------------------------------------------------------------------------
1118
- // Scrolls smooth to any anchor referenced by an page URL
1119
- // Values for delay|offset are taken from TOC module (Tocbot)
1113
+ // Scrolls smooth to any anchor referenced by an page URL on
1114
+ // e.g. a page reload. Values for delay|offset are taken from
1115
+ // TOCCER module
1120
1116
  // -------------------------------------------------------------------------
1121
1117
  scrollTo: function () {
1122
- // Unclear why a offset correction is needed (sometimes ???)
1123
- var offset_correction = {{toccer_options.headingsOffset}};
1124
- var offset = {{toccer_options.smoothScrollOffset}};
1125
- var anchor_id = window.location.href.split("#")[1];
1118
+ var anchor = window.location.href.split("#")[1];
1119
+ var anchor_id = '#' + anchor;
1126
1120
  var selector;
1127
- var heading;
1128
- var re;
1129
-
1130
- if (anchor_id) {
1131
- selector = $('.' + anchor_id + ', #' + anchor_id +',[name='+anchor_id+']');
1132
- heading = selector[0].nodeName;
1133
1121
 
1122
+ if (anchor && anchor_id) {
1134
1123
  // scroll only, if an anchor is given with URL
1124
+ selector = $(anchor_id);
1135
1125
  if (selector.length) {
1136
- var delay = {{toccer_options.smoothScrollDuration}};
1137
- var scroll_to = parseInt( selector.offset().top - offset - offset_correction );
1138
- //var scroll_to = selector.offset().top;
1139
- $('html,body').animate({scrollTop: scroll_to}, delay,
1140
- function () {
1141
- // scroll the page one pixel back and forth
1142
- // to get the right position for the NAV Module (Tocbot)
1143
- $(window).scrollTop($(window).scrollTop()+1);
1144
- $(window).scrollTop($(window).scrollTop()-1);
1126
+ j1.core.scrollSmooth.scroll( anchor_id, {
1127
+ duration: {{toccer_options.scrollSmoothDuration}},
1128
+ offset: {{toccer_options.scrollSmoothOffset}},
1129
+ callback: null
1145
1130
  });
1146
1131
  } else {
1147
- // TODO: to be checked if this else is needed
1148
- // scroll the page one pixel back and forth
1149
- // to get the right position for the NAV Module (Tocbot)
1132
+ // scroll the page one pixel back and forth (trigger)
1133
+ // to get the right position for the Toccer and adjust the
1134
+ // Navigator to display the (tranparent) navbar correctly
1135
+ //
1150
1136
  $(window).scrollTop($(window).scrollTop()+1);
1151
1137
  $(window).scrollTop($(window).scrollTop()-1);
1152
- } // selector.length
1153
- } else {
1154
- // scroll the page one pixel back and forth
1155
- // to get the right position for the NAV Module (Tocbot)
1156
- $(window).scrollTop($(window).scrollTop()+1);
1157
- $(window).scrollTop($(window).scrollTop()-1);
1158
- } // END if anchor_id
1159
-
1160
- return true;
1138
+ } // END if anchor_id
1139
+ }
1161
1140
  }, // END scrollTo
1162
1141
 
1163
1142
  // -------------------------------------------------------------------------
@@ -174,7 +174,6 @@ j1.adapter['mmenu'] = (function (j1, window) {
174
174
  j1.adapter.mmenu.mmenuLoader(navMenuOptions);
175
175
  }
176
176
  }, 25);
177
-
178
177
  }, // END init
179
178
 
180
179
  // -------------------------------------------------------------------------
@@ -217,7 +216,7 @@ j1.adapter['mmenu'] = (function (j1, window) {
217
216
  'j1.adapter.mmenu', {
218
217
  xhr_container_id: "{{menu_id}}",
219
218
  xhr_data_path: "{{xhr_data_path}}" },
220
- {% if forloop.last %}'data_loaded'{% else %}'data_loaded'{% endif %}){% if forloop.last %}{% else %},{% endif %}
219
+ {% if forloop.last %}'null'{% else %}'null'{% endif %}){% if forloop.last %}{% else %},{% endif %}
221
220
 
222
221
  {% endif %}
223
222
  {% capture id_list %}{{id_list}}{{menu_id}}{% if forloop.last %}{% else %},{% endif %} {% endcapture %}
@@ -226,6 +225,11 @@ j1.adapter['mmenu'] = (function (j1, window) {
226
225
  // ---------------------------------------------------------------------
227
226
  // Initialize MMenu Navs and Drawers
228
227
  // ---------------------------------------------------------------------
228
+ // Make sure that Load HTML data (AJAX) is finished
229
+ setTimeout (function() {
230
+ _this.setState('data_loaded');
231
+ }, 300);
232
+
229
233
  var dependencies_met_mmenu_initialized = setInterval (function () {
230
234
  if (_this.getState() === 'data_loaded') {
231
235
  logger.info('load HTML data (AJAX): finished');
@@ -235,7 +239,15 @@ j1.adapter['mmenu'] = (function (j1, window) {
235
239
  j1.adapter.mmenu.mmenuInitializer(mmOptions);
236
240
  clearInterval(dependencies_met_mmenu_initialized);
237
241
  }
238
- }); // END dependencies_met_mmenu_loaded
242
+ }, 25); // END dependencies_met_mmenu_loaded
243
+
244
+ var dependencies_met_all_menu_loaded = setInterval (function () {
245
+ if ( $('#menu_mmenu').length && $('#sidebar_mmenu').length && $('#toc_mmenu').length ) {
246
+ _this.setState('finished');
247
+ logger.info('status: ' + _this.getState());
248
+ clearInterval(dependencies_met_all_menu_loaded);
249
+ }
250
+ }, 25); // END dependencies_met_all_menu_loaded
239
251
  }); // END done
240
252
  }, // END dataLoader
241
253
 
@@ -290,29 +302,34 @@ j1.adapter['mmenu'] = (function (j1, window) {
290
302
 
291
303
  // Toggle Bars (Hamburger) for the NavBar to open|close
292
304
  // the mmenu drawer
293
- $('{{item.menu.content.toggler}}').each(function(e) {
305
+ $('{{item.menu.content.button}}').each(function(e) {
294
306
  var $this = $(this);
295
307
 
296
308
  $this.on('click', function(e){
297
- const toggler_{{menu_id}} = this;
309
+ const button_{{menu_id}} = this;
298
310
 
299
311
  // TODO: Animated toggle button
300
312
  //
301
- $('{{item.menu.content.toggler}}').toggleClass('fadeIn');
302
- $('{{item.menu.content.toggler}}').toggleClass('rotateIn')
313
+ // $('{{item.menu.content.toggler}}').toggleClass('fadeIn');
314
+ // $('{{item.menu.content.toggler}}').toggleClass('rotateIn')
315
+
316
+ // $('.mdi', this).toggleClass('mdi-menu');
317
+ // $('.mdi', this).toggleClass('mdi-close');
303
318
 
304
- $('.mdi', this).toggleClass('mdi-menu');
305
- $('.mdi', this).toggleClass('mdi-close');
306
319
  e.preventDefault();
307
- (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
308
- ? drawer_{{menu_id}}.open()
309
- : drawer_{{menu_id}}.close();
320
+
321
+ // (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
322
+ // ? drawer_{{menu_id}}.open()
323
+ // : drawer_{{menu_id}}.close();
324
+
325
+ drawer_{{menu_id}}.open()
310
326
  });
311
327
  });
312
328
  clearInterval(dependencies_met_{{menu_id}}_loaded);
329
+ $('#{{item.menu.content.id}}').show();
313
330
  logger.info('initializing mmenu finished on id: #{{menu_id}}');
314
331
  }; // END mmenu_loaded
315
- }); // END dependencies_met_mmenu_loaded
332
+ }, 25); // END dependencies_met_mmenu_loaded
316
333
  {% endif %} // ENDIF content_type: NAVIGATION
317
334
 
318
335
  {% if item.menu.content.type == "drawer" %}
@@ -339,40 +356,43 @@ j1.adapter['mmenu'] = (function (j1, window) {
339
356
  position: "{{item.menu.drawer.position}}"
340
357
  });
341
358
 
342
- // Toggler for the MMenu tocbar to open|close the toc drawer
343
- $('{{item.menu.content.toggler}}').each(function(e) {
359
+ // button for the MMenu tocbar to open|close the toc drawer
360
+ $('{{item.menu.content.button}}').each(function(e) {
344
361
  var $this = $(this);
345
362
 
346
363
  $this.on('click', function(e) {
347
- var toggler_{{menu_id}} = this;
364
+ var button_{{menu_id}} = this;
348
365
  var hasClass;
349
366
 
350
- // check if the toggler should be activated
367
+ // check if the button should be activated
351
368
  // e.g for TOC only if clas js-toc-content is found
352
369
  //
353
- if ('{{item.menu.content.toggler_activated}}' != 'always') {
354
- hasClass = $('main').hasClass('{{item.menu.content.toggler_activated}}');
370
+ if ('{{item.menu.content.button_activated}}' != 'always') {
371
+ hasClass = $('main').hasClass('{{item.menu.content.button_activated}}');
355
372
  } else {
356
373
  hasClass = true;
357
374
  }
358
375
  if (hasClass) {
359
376
  // Toggle button animation
360
- $('{{item.menu.content.toggler}}').toggleClass('{{item.menu.content.toggler_animation}}')
377
+ //$('{{item.menu.content.toggler}}').toggleClass('{{item.menu.content.toggler_animation}}')
361
378
 
362
379
  e.preventDefault();
363
- (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
364
- ? drawer_{{menu_id}}.open()
365
- : drawer_{{menu_id}}.close();
380
+
381
+ // (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
382
+ // ? drawer_{{menu_id}}.open()
383
+ // : drawer_{{menu_id}}.close();
384
+
385
+ drawer_{{menu_id}}.open()
366
386
  } // END if hasclass
367
387
  });
368
388
  });
369
389
  clearInterval(dependencies_met_{{menu_id}}_loaded);
390
+ $('#{{item.menu.content.id}}').show();
370
391
  }; // END if menu_loaded
371
- }); // END dependencies_met_mmenu_loaded
392
+ }, 25); // END dependencies_met_mmenu_loaded
372
393
  logger.info('initializing mmenu finished on id: #{{menu_id}}');
373
394
  {% endif %} // ENDIF content_type: DRAWER
374
395
  } // END menus|drawers
375
-
376
396
  {% endif %} // ENDIF menu enabled
377
397
  {% endfor %} // ENDFOR menus
378
398
  }, // END mmenuInitializer
@@ -244,6 +244,18 @@ j1.adapter['navigator'] = (function (j1, window) {
244
244
  logger.info('state: ' + _this.getState());
245
245
  logger.info('module is being initialized');
246
246
 
247
+ // -----------------------------------------------------------------------
248
+ // Load HTML data (AJAX)
249
+ // -----------------------------------------------------------------------
250
+ // jadams, 202-06-24: Promise (chain) if $.when seems NOT to work correctly.
251
+ // It semms a chain using .then will be a better solution to make it sure
252
+ // that the last Deferred set the state to 'data_loaded'.
253
+ // Found the final state randomly set to 'null' what prevent the module
254
+ // to run mmenuInitializer.
255
+ // Workaround: Set 'data_loaded' to be returned by all Deferred in
256
+ // the chain.
257
+ // See: https://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done
258
+ //
247
259
  // -----------------------------------------------------------------------
248
260
  // data loader
249
261
  // -----------------------------------------------------------------------
@@ -268,6 +280,12 @@ j1.adapter['navigator'] = (function (j1, window) {
268
280
  // ---------------------------------------------------------------------
269
281
  // core initializer
270
282
  // ---------------------------------------------------------------------
283
+
284
+ // Make sure that Load HTML data (AJAX) is finished
285
+ // setTimeout (function() {
286
+ // _this.setState('data_loaded');
287
+ // }, 150);
288
+
271
289
  var dependencies_met_navigator_core = setInterval (function () {
272
290
  if (_this.getState() === 'data_loaded') {
273
291
  _this.setState('processing');
@@ -581,14 +599,14 @@ j1.adapter['navigator'] = (function (j1, window) {
581
599
  $('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator.navbar-scrolled.light { background-color: " +bg_scrolled+ " !important; } }</style>");
582
600
 
583
601
  // Menubar collapsed (mobile)
584
- $('head').append('<style>.navbar-collapse.collapse.show { background-color: ' +bg_scrolled+ ' !important; }</style>');
602
+ // $('head').append('<style>.navbar-collapse.collapse.show { background-color: ' +bg_scrolled+ ' !important; }</style>');
585
603
 
586
604
 
587
605
  /* Navbar media-queries, LARGE Window|Desktop (>= 1024) */
588
606
  /* jadams: Oversized menu bar fixed by: overflow: hidden */
589
607
  // $('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator { background-color: " +navBarOptions.background_color_collapsed+ " !important; overflow: hidden; } }</style>");
590
- $('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator { background-color: " +bg_collapsed+ " !important; overflow: hidden; } }</style>");
591
- //$('head').append("<style>@media (max-width: 1023px) { row { margin-left: 0 !important; margin-right: 0 !important; } }</style>");
608
+ // $('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator { background-color: " +bg_collapsed+ " !important; overflow: hidden; } }</style>");
609
+ // $('head').append("<style>@media (max-width: 1023px) { row { margin-left: 0 !important; margin-right: 0 !important; } }</style>");
592
610
 
593
611
  {% comment %} navQuicklinks styles
594
612
  -------------------------------------------------------------------------- {% endcomment %}
@@ -0,0 +1,538 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/ssm.js
10
+ # Liquid template to adapt SSM Core functions
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ #
15
+ # Copyright (C) 2020 Juergen Adams
16
+ #
17
+ # J1 Template is licensed under the MIT License.
18
+ # For details, see https://jekyll.one
19
+ # -----------------------------------------------------------------------------
20
+ # Test data:
21
+ # {{ liquid_var | debug }}
22
+ # -----------------------------------------------------------------------------
23
+ {% endcomment %}
24
+
25
+ {% comment %} Liquid var initialization
26
+ -------------------------------------------------------------------------------- {% endcomment %}
27
+
28
+ {% comment %} Set config files
29
+ -------------------------------------------------------------------------------- {% endcomment %}
30
+ {% assign site_config = site %}
31
+ {% assign template_config = site.data.template_settings %}
32
+ {% assign modules = site.data.modules %}
33
+
34
+ {% comment %} Set config data
35
+ -------------------------------------------------------------------------------- {% endcomment %}
36
+ {% assign toccer_defaults = modules.defaults.toccer.defaults %}
37
+ {% assign toccer_settings = modules.toccer.settings %}
38
+ {% assign ssm_settings = modules.ssm.settings %}
39
+ {% assign ssm_defaults = modules.defaults.ssm.defaults %}
40
+
41
+ {% comment %} Set config options
42
+ -------------------------------------------------------------------------------- {% endcomment %}
43
+ {% assign toccer_options = toccer_defaults | merge: toccer_settings %}
44
+ {% assign ssm_options = ssm_defaults | merge: ssm_settings %}
45
+
46
+ /*
47
+ # -----------------------------------------------------------------------------
48
+ # ~/assets/themes/j1/adapter/js/ssm.js
49
+ # JS Adapter for J1 SSM (Sticky Side Menu)
50
+ #
51
+ # Product/Info:
52
+ # {{site.data.template_settings.theme_author_url}}
53
+ #
54
+ # Copyright (C) 2020 Juergen Adams
55
+ #
56
+ # J1 Template is licensed under the MIT License.
57
+ # For details, see {{site.data.template_settings.theme_author_url}}
58
+ # -----------------------------------------------------------------------------
59
+ # Adapter generated: {{site.time}}
60
+ # -----------------------------------------------------------------------------
61
+ */
62
+ 'use strict';
63
+
64
+ j1.adapter['ssm'] = (function (j1, window) {
65
+
66
+ // ---------------------------------------------------------------------------
67
+ // globals
68
+ // ---------------------------------------------------------------------------
69
+ var environment = '{{environment}}';
70
+ var dclFinished = false;
71
+ var moduleOptions = {};
72
+ var cookie_names = j1.getCookieNames();
73
+ var user_state;
74
+ var user_session;
75
+ var user_data;
76
+ var sect1Nodes;
77
+ var sect12Nodes;
78
+ var _this;
79
+ var logger;
80
+ var logText;
81
+
82
+ // ---------------------------------------------------------------------------
83
+ // helper functions
84
+ // ---------------------------------------------------------------------------
85
+
86
+
87
+ // ---------------------------------------------------------------------------
88
+ // main object
89
+ // ---------------------------------------------------------------------------
90
+ return {
91
+
92
+ // -------------------------------------------------------------------------
93
+ // module initializer
94
+ // -------------------------------------------------------------------------
95
+ init: function (options) {
96
+
97
+ // create seetings object from frontmatterOptions
98
+ var frontmatterOptions = options != null ? $.extend({}, options) : {};
99
+
100
+ // initialize state flag
101
+ j1.adapter.ssm.state = 'pending';
102
+
103
+ // -----------------------------------------------------------------------
104
+ // defaults
105
+ // -----------------------------------------------------------------------
106
+ var settings = $.extend({
107
+ module_name: 'j1.adapter.ssm',
108
+ generated: '{{site.time}}'
109
+ }, options);
110
+
111
+ // -----------------------------------------------------------------------
112
+ // globals
113
+ // -----------------------------------------------------------------------
114
+ _this = j1.adapter.ssm;
115
+ logger = log4javascript.getLogger('j1.adapter.ssm');
116
+ sect12Nodes = $("[class$='sect1'],[class$='sect2'");
117
+ sect1Nodes = $("[class$='sect1']");
118
+
119
+ // -----------------------------------------------------------------------
120
+ // options loader
121
+ // -----------------------------------------------------------------------
122
+ var ssmMenuOptions = $.extend({}, {{nav_ssm_options | replace: '=>', ':' }});
123
+ var ssmOptions = $.extend({}, {{ssm_options | replace: 'nil', 'null' | replace: '=>', ':' }});
124
+ var xhr_data_path;
125
+ var menu_id;
126
+
127
+ // Load (individual) frontmatter options (currently NOT used)
128
+ //
129
+ if (options != null) { var frontmatterOptions = $.extend({}, options) }
130
+
131
+ if (typeof frontmatterOptions !== 'undefined') {
132
+ moduleOptions = j1.mergeData(ssmOptions, frontmatterOptions);
133
+ }
134
+
135
+ // save config settings into the mmenu object for global access
136
+ //
137
+ j1.adapter.ssm['moduleOptions'] = moduleOptions;
138
+
139
+ _this.setState('started');
140
+ logger.info('set module state to: ' + _this.getState());
141
+ logger.info('module is being initialized');
142
+
143
+ // jadams, 2020-06-24: Set max_count to 100 what cause to wait 2.5s
144
+ // for J1 Navigator to finish (init)
145
+ //
146
+ var interval_count = 0;
147
+ var max_count = 100;
148
+
149
+ var dependencies_met_navigator = setInterval(function() {
150
+ interval_count += 1;
151
+ if ( j1.adapter.navigator.getState() == 'finished' ) {
152
+ logger.info('dependencies of module navigator met for: mmenu');
153
+ logger.info('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
154
+ j1.core.ssm.init (moduleOptions);
155
+ _this.ssmLoader(moduleOptions);
156
+ clearInterval(dependencies_met_navigator);
157
+ }
158
+ if (interval_count > max_count) {
159
+ logger.warn('dependency check failed for module: navigator');
160
+ logger.warn('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
161
+ j1.core.ssm.init (moduleOptions);
162
+ _this.ssmLoader(moduleOptions);
163
+ clearInterval(dependencies_met_navigator);
164
+ }
165
+ }, 25);
166
+
167
+ }, // END init
168
+
169
+ // -------------------------------------------------------------------------
170
+ // SSM Loader
171
+ // -------------------------------------------------------------------------
172
+ ssmLoader: function (ssmOptions) {
173
+ var menu_id;
174
+ var xhr_data_path;
175
+
176
+ // cast text-based booleans
177
+ var isToc = (ssmOptions.toc === 'true');
178
+
179
+ _this.setState('loading');
180
+ logger.info('set module state to: ' + _this.getState());
181
+ logger.info('load HTML data for ssm');
182
+
183
+ {% assign id_list = "" %}
184
+
185
+ $.when (
186
+ {% assign menu_id = ssm_options.xhr_container_id %}
187
+ {% assign xhr_data_path = ssm_options.xhr_data_path %}
188
+ j1.xhrData (
189
+ 'j1.adapter.ssm', {
190
+ xhr_container_id: "{{menu_id}}",
191
+ xhr_data_path: "{{xhr_data_path}}" },
192
+ 'data_loaded')
193
+ ).done (function (ssm_html_loaded) {
194
+ // ---------------------------------------------------------------------
195
+ // Initialize MMenu Navs and Drawers
196
+ // ---------------------------------------------------------------------
197
+ var dependencies_met_mmenu_initialized = setInterval (function () {
198
+ if (ssm_html_loaded && $('#{{ssm_options.menu_id}}').length) {
199
+ _this.setState('loaded');
200
+ logger.info('set module state to: ' + _this.getState());
201
+ logger.info('HTML data for ssm: ' + _this.getState());
202
+ if(isToc) {
203
+ logger.info('found toc in page: enabled');
204
+ if ( j1.adapter.toccer.getState() == 'finished' ) {
205
+ logger.info('dependency met for module : toccer');
206
+ _this.setState('processing');
207
+ logger.info('set module state to: ' + _this.getState());
208
+ logger.info('initialize ssm menu');
209
+ (ssmOptions.mode === 'icon')
210
+ ? logger.info('ssm mode detected: icon')
211
+ : logger.info('ssm mode detected: menu');
212
+ _this.scrollSpy(ssmOptions);
213
+ _this.buttonInitializer(ssmOptions);
214
+ clearInterval(dependencies_met_mmenu_initialized);
215
+ }
216
+ } else {
217
+ logger.info('found toc in page: disabled');
218
+ logger.info('disable toc menu button');
219
+ $('#ssm_toc').closest('.ssm-btn').hide()
220
+ _this.scrollSpy(ssmOptions);
221
+ _this.buttonInitializer(ssmOptions);
222
+ clearInterval(dependencies_met_mmenu_initialized);
223
+ }
224
+ }
225
+ }, 25); // END dependencies_met_mmenu_loaded
226
+ }); // END done
227
+ }, // END dataLoader
228
+
229
+ // -------------------------------------------------------------------------
230
+ // Button Initializer
231
+ // -------------------------------------------------------------------------
232
+ buttonInitializer: function (ssmOptions) {
233
+ var eventHandler;
234
+
235
+ {% for item in ssm_options.items %} {% if item.enabled %}
236
+
237
+ {% comment %} Identify the menu (item) type
238
+ -------------------------------------------------------------------------- {% endcomment %}
239
+ {% if item.sublevel %}
240
+ {% assign menu_type = 'sublevel_menu' %}
241
+ {% else %}
242
+ {% assign menu_type = 'top_level_item' %}
243
+ {% endif %}
244
+
245
+ {% if menu_type == 'top_level_item' %}
246
+ {% assign button_id = item.id %}
247
+
248
+ // Create an eventhandler instance if id exists: {{button_id}}
249
+ if ($('#{{button_id}}').length) {
250
+ eventHandler = "{{item.event_handler}}"
251
+ // check if eventhandler configured is a SINGLE word
252
+ if (eventHandler.split(" ").length == 1) {
253
+ logger.info('register pre-configured eventhandler {{item.event_handler}} on id: {{button_id}}');
254
+ $('#{{button_id}}').each(function(e) {
255
+ var $this = $(this);
256
+ $this.on('click', function(e) {
257
+ j1.adapter.ssm.{{item.event_handler}}(sect1Nodes);
258
+ });
259
+ });
260
+ } else {
261
+ logger.info('register custom eventhandler on id: {{button_id}}');
262
+ }
263
+ } else {
264
+ alert ("Creating Eventhandler failed on: #{{button_id}}");
265
+ } // END items (buttons)
266
+ {% endif %} // menu_type 'top_level_item'
267
+ {% endif %} // ENDIF button_id enabled
268
+ {% endfor %} // ENDFOR items
269
+ }, // END buttonInitializer
270
+
271
+ // -------------------------------------------------------------------------
272
+ // Eventhandler
273
+
274
+ // -------------------------------------------------------------------------
275
+ // open mobile menu
276
+ // -------------------------------------------------------------------------
277
+ open_ssm_toc: function () {
278
+ }, // END open_ssm_toc
279
+
280
+ // -------------------------------------------------------------------------
281
+ // reload page
282
+ // -------------------------------------------------------------------------
283
+ reload_page: function () {
284
+ location.reload();
285
+ }, // END open_ssm_toc
286
+ // -------------------------------------------------------------------------
287
+ // scroll to previous section
288
+ // -------------------------------------------------------------------------
289
+ scroll_previous_section: function (nodes) {
290
+ var previous_header_id;
291
+ var currentNode;
292
+ var prev_node;
293
+ var anchor_id;
294
+
295
+ var index = 0;
296
+ var maxNode = $(nodes).length - 1;
297
+ var $toc = $("#sidebar");
298
+ var current_header_id = $toc.find(".is-active-link").attr('href');
299
+
300
+ nodes.each(function() {
301
+ currentNode = $(this).find(current_header_id);
302
+ if (currentNode.length) {
303
+ if (index > maxNode) {
304
+ return false
305
+ } else {
306
+ prev_node = (index > 0) ? nodes[index-1] : nodes[index];
307
+ previous_header_id = $(prev_node).find(":header").first()[0].id;
308
+ anchor_id = '#' + previous_header_id;
309
+
310
+ $('a[href*="' + current_header_id + '"]').removeClass('is-active-link');
311
+ $('a[href*="' + previous_header_id + '"]').addClass('is-active-link');
312
+
313
+ j1.core.scrollSmooth.scroll( anchor_id, {
314
+ duration: {{toccer_options.scrollSmoothDuration}},
315
+ offset: {{toccer_options.scrollSmoothOffset}},
316
+ callback: null
317
+ });
318
+
319
+ // scroll the page one pixel back and forth (trigger)
320
+ // to get the right position for the Toccer
321
+ //
322
+ // $(window).scrollTop($(window).scrollTop()+1);
323
+ // $(window).scrollTop($(window).scrollTop()-1);
324
+ }
325
+ }
326
+ (index < maxNode) ? index++ : index;
327
+ });
328
+ }, // END scroll_previous_section
329
+
330
+ // -------------------------------------------------------------------------
331
+ // scroll to next section
332
+ // -------------------------------------------------------------------------
333
+ scroll_next_section: function (nodes) {
334
+ var next_header_id;
335
+ var currentNode;
336
+ var nextNode;
337
+ var anchor_id;
338
+
339
+ var index = 0;
340
+ var maxNode = $(nodes).length -1;
341
+ var $toc = $("#sidebar");
342
+ var current_header_id = $toc.find(".is-active-link").attr('href');
343
+
344
+ nodes.each(function() {
345
+ currentNode = $(this).find(current_header_id);
346
+ if (currentNode.length) {
347
+ if (index == maxNode) {
348
+ return false
349
+ } else {
350
+ nextNode = nodes[index+1];
351
+ next_header_id = $(nextNode).closest().find(":header").first();
352
+ next_header_id = $(nextNode).find(":header").first()[0].id;
353
+ anchor_id = '#' + next_header_id;
354
+
355
+ $('a[href*="' + current_header_id + '"]').removeClass('is-active-link');
356
+ $('a[href*="' + next_header_id + '"]').addClass('is-active-link');
357
+
358
+ j1.core.scrollSmooth.scroll( anchor_id, {
359
+ duration: {{toccer_options.scrollSmoothDuration}},
360
+ offset: {{toccer_options.scrollSmoothOffset}},
361
+ callback: null
362
+ });
363
+
364
+ // scroll the page one pixel back and forth (trigger)
365
+ // to get the right position for the Toccer
366
+ //
367
+ // $(window).scrollTop($(window).scrollTop()+1);
368
+ // $(window).scrollTop($(window).scrollTop()-1);
369
+ }
370
+ }
371
+ (index < maxNode) ? index++ : index;
372
+ });
373
+ }, // END scroll_next_section
374
+
375
+ // -------------------------------------------------------------------------
376
+ // scroll to top
377
+ // -------------------------------------------------------------------------
378
+ scroll_to_top: function () {
379
+ var dest = 0;
380
+
381
+ $('html, body').animate({
382
+ scrollTop: dest
383
+ }, 500);
384
+
385
+ // scroll the page one pixel back and forth (trigger)
386
+ // to get the right position for the Toccer
387
+ //
388
+ // $(window).scrollTop($(window).scrollTop()+1);
389
+ // $(window).scrollTop($(window).scrollTop()-1);
390
+ }, // END scroll_top
391
+
392
+ // -------------------------------------------------------------------------
393
+ // scroll to bottom
394
+ // -------------------------------------------------------------------------
395
+ scroll_to_bottom: function () {
396
+ var $page = $(document);
397
+ var $footer = $('#j1_footer');
398
+ var f = $footer.length ? $footer.outerHeight() : 0;
399
+ var pageHeight = $page.height() - f - 400;
400
+ var pageHeightOuter = $page.outerHeight()
401
+
402
+ $('html, body').animate({
403
+ scrollTop: pageHeight
404
+ }, 500);
405
+
406
+ // scroll the page one pixel back and forth (trigger)
407
+ // to get the right position for the Toccer
408
+ //
409
+ // $(window).scrollTop($(window).scrollTop()+1);
410
+ // $(window).scrollTop($(window).scrollTop()-1);
411
+ }, // END scroll_bottom
412
+
413
+ // -------------------------------------------------------------------------
414
+ // scroll to comments (Disqus)
415
+ // -------------------------------------------------------------------------
416
+ scroll_to_comments: function () {
417
+ }, // END scroll_comments
418
+
419
+ // -------------------------------------------------------------------------
420
+ // create generic alert
421
+ // -------------------------------------------------------------------------
422
+ alert_me: function () {
423
+ alert ("Hello world!");
424
+ }, // END alert_me
425
+
426
+ // -------------------------------------------------------------------------
427
+ // messageHandler
428
+ // Manage messages (paylods) send from other J1 modules
429
+ // -------------------------------------------------------------------------
430
+ messageHandler: function (sender, message) {
431
+ // var json_message = JSON.stringify(message, undefined, 2); // multiline
432
+ var json_message = JSON.stringify(message);
433
+
434
+ logText = 'received message from ' + sender + ': ' + json_message;
435
+ logger.debug(logText);
436
+
437
+ // -----------------------------------------------------------------------
438
+ // Process commands|actions
439
+ // -----------------------------------------------------------------------
440
+ if (message.type === 'command' && message.action === 'module_initialized') {
441
+ //
442
+ // Place handling of command|action here
443
+ //
444
+ logger.info(message.text);
445
+ }
446
+ if (message.type === 'command' && message.action === 'status') {
447
+ logger.info('messageHandler: received - ' + message.action);
448
+ }
449
+
450
+ //
451
+ // Place handling of other command|action here
452
+ //
453
+
454
+ return true;
455
+ }, // END messageHandler
456
+
457
+ // -------------------------------------------------------------------------
458
+ // setState
459
+ // Set the current (processing) state of the module
460
+ // -------------------------------------------------------------------------
461
+ setState: function (stat) {
462
+ j1.adapter.ssm.state = stat;
463
+ }, // END setState
464
+
465
+ // -------------------------------------------------------------------------
466
+ // getState
467
+ // Returns the current (processing) state of the module
468
+ // -------------------------------------------------------------------------
469
+ getState: function () {
470
+ return j1.adapter.ssm.state;
471
+ }, // END state
472
+
473
+ // -------------------------------------------------------------------------
474
+ // Manage (top) position and sizes (@media breakpoints) of the
475
+ // SSM container depending on the size of the page header (attic)
476
+ // -------------------------------------------------------------------------
477
+ scrollSpy: function (options) {
478
+ logger = log4javascript.getLogger('j1.adapter.ssm.scrollSpy');
479
+
480
+ $(window).scroll(function(event){
481
+ var $navbar = $('nav.navbar');
482
+ var $pagehead = $('.attic');
483
+ var $main_content = $('.js-toc-content');
484
+ var $adblock = $('#adblock');
485
+ var $footer = $('#j1_footer');
486
+ var $ssmContainer = $('#ssm-container');
487
+ var $page = $(document);
488
+
489
+ var offset = 0;
490
+ var pageOffset = -120;
491
+ var scrollPos = $(document).scrollTop();
492
+ var pageHeight = $page.height()
493
+ var pageHeightOuter = $page.outerHeight()
494
+
495
+ // var m = parseInt(pagehead.css('margin-bottom'), 10);
496
+ var m = $main_content.offset().top;
497
+ var s = $ssmContainer.length ? $ssmContainer.height() : 0;
498
+ var f = $footer.length ? $footer.outerHeight() : 0;
499
+ var n = $navbar.length ? $navbar.height() : 0;
500
+ // var h = $pagehead.length ? $pagehead.outerHeight() : 0;
501
+ var a = $adblock.length ? $adblock.outerHeight() : 0;
502
+
503
+ // var o = n + h + a + offset;
504
+ // var o = n + m + offset;
505
+ var o = n + offset;
506
+
507
+ // space above the (fixed) ssm container
508
+ var showSsmPos = m + pageOffset;
509
+
510
+ // space below the (fixed) ssm container
511
+ var hideSsmPos = pageHeight - s - f + pageOffset;
512
+
513
+ // set the top position of ssm container for navbar modes
514
+ // e.g. "sticky" (navbar-fixed)
515
+ if($navbar.hasClass('navbar-fixed')){
516
+ $('#ssm-container').css('top', o);
517
+ } else {
518
+ $('#ssm-container').css('top', m);
519
+ }
520
+
521
+ // show|hide ssm container on scroll position in page
522
+ //
523
+ ( scrollPos >= showSsmPos ) && ( scrollPos <= hideSsmPos )
524
+ ? $ssmContainer.css('display','block')
525
+ : $ssmContainer.css('display','none');
526
+
527
+ logger.debug('content pos detected as: ' + m + 'px');
528
+ logger.debug('scroll pos detected as: ' + scrollPos + 'px');
529
+ }); // END setTop on scroll
530
+
531
+ } // END scrollSpy
532
+
533
+ }; // END return
534
+ })(j1, window);
535
+
536
+ {% endcapture %}
537
+ {{ cache | strip_empty_lines }}
538
+ {% assign cache = nil %}