j1-template 2023.2.7 → 2023.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (452) 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 +38 -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/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  14. data/_layouts/compress.html +26 -21
  15. data/_layouts/default.html +36 -30
  16. data/assets/data/banner.html +5 -2
  17. data/assets/data/footer.html +15 -3
  18. data/assets/data/masonry.html +1 -1
  19. data/assets/data/masterslider.html +1 -0
  20. data/assets/data/menu.html +4 -4
  21. data/assets/data/panel.html +6 -3
  22. data/assets/data/quicklinks.html +138 -149
  23. data/assets/error_pages/HTTP204.html +3 -3
  24. data/assets/error_pages/HTTP400.html +3 -3
  25. data/assets/error_pages/HTTP401.html +3 -3
  26. data/assets/error_pages/HTTP403.html +3 -3
  27. data/assets/error_pages/HTTP404.html +3 -3
  28. data/assets/error_pages/HTTP444.html +3 -3
  29. data/assets/error_pages/HTTP445.html +3 -3
  30. data/assets/error_pages/HTTP446.html +5 -5
  31. data/assets/error_pages/HTTP447.html +7 -7
  32. data/assets/error_pages/HTTP448.html +7 -7
  33. data/assets/error_pages/HTTP500.html +3 -3
  34. data/assets/error_pages/HTTP501.html +3 -3
  35. data/assets/error_pages/HTTP502.html +3 -3
  36. data/assets/error_pages/HTTP503.html +3 -3
  37. data/assets/themes/j1/adapter/js/advertising.js +355 -156
  38. data/assets/themes/j1/adapter/js/analytics.js +1 -1
  39. data/assets/themes/j1/adapter/js/asciidoctor.js +1 -1
  40. data/assets/themes/j1/adapter/js/attic.js +22 -14
  41. data/assets/themes/j1/adapter/js/bmd.js +1 -1
  42. data/assets/themes/j1/adapter/js/carousel.js +5 -4
  43. data/assets/themes/j1/adapter/js/clipboard.js +1 -1
  44. data/assets/themes/j1/adapter/js/comments.js +5 -5
  45. data/assets/themes/j1/adapter/js/cookieConsent.js +1 -1
  46. data/assets/themes/j1/adapter/js/customFunctions.js +1 -1
  47. data/assets/themes/j1/adapter/js/customModule.js +1 -1
  48. data/assets/themes/j1/adapter/js/dropdowns.js +4 -2
  49. data/assets/themes/j1/adapter/js/fab.js +9 -6
  50. data/assets/themes/j1/adapter/js/framer.js +1 -1
  51. data/assets/themes/j1/adapter/js/iconPicker.js +227 -0
  52. data/assets/themes/j1/adapter/js/j1.js +402 -76
  53. data/assets/themes/j1/adapter/js/justifiedGallery.js +9 -3
  54. data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +2 -2
  55. data/assets/themes/j1/adapter/js/lightbox.js +4 -3
  56. data/assets/themes/j1/adapter/js/logger.js +1 -1
  57. data/assets/themes/j1/adapter/js/lunr.js +1 -1
  58. data/assets/themes/j1/adapter/js/masonry.js +4 -3
  59. data/assets/themes/j1/adapter/js/masterslider.js +30 -57
  60. data/assets/themes/j1/adapter/js/mmenu.js +2 -2
  61. data/assets/themes/j1/adapter/js/navigator.js +7 -5
  62. data/assets/themes/j1/adapter/js/nbinteract.js +9 -9
  63. data/assets/themes/j1/adapter/js/particles.js +2 -2
  64. data/assets/themes/j1/adapter/js/rangeSlider.js +2 -2
  65. data/assets/themes/j1/adapter/js/rouge.js +2 -2
  66. data/assets/themes/j1/adapter/js/rtable.js +1 -1
  67. data/assets/themes/j1/adapter/js/rtextResizer.js +1 -1
  68. data/assets/themes/j1/adapter/js/scroller.js +97 -109
  69. data/assets/themes/j1/adapter/js/slick.js +28 -18
  70. data/assets/themes/j1/adapter/js/themeToggler.js +259 -0
  71. data/assets/themes/j1/adapter/js/themer.js +63 -23
  72. data/assets/themes/j1/adapter/js/toccer.js +9 -6
  73. data/assets/themes/j1/adapter/js/translator.js +4 -2
  74. data/assets/themes/j1/adapter/js/waves.js +6 -4
  75. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +1322 -417
  76. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +3 -3
  77. data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +2064 -1273
  78. data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +3 -3
  79. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +10280 -9399
  80. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +10 -10
  81. data/assets/themes/j1/core/css/vendor.css +0 -14
  82. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  83. data/assets/themes/j1/modules/backstretch/js/backstretch.js +6 -4
  84. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  85. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js +1 -1
  86. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +1 -1
  87. data/assets/themes/j1/modules/iconPicker/README.md +266 -0
  88. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.css +419 -0
  89. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.min.css +17 -0
  90. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.json +467 -0
  91. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.min.json +1 -0
  92. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.json +169 -0
  93. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.min.json +1 -0
  94. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.json +1136 -0
  95. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.min.json +1 -0
  96. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.json +1772 -0
  97. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.min.json +1 -0
  98. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.json +292 -0
  99. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.min.json +1 -0
  100. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.json +7312 -0
  101. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.min.json +1 -0
  102. data/assets/themes/j1/modules/iconPicker/images/magnifying-glass-solid.svg +1 -0
  103. data/assets/themes/j1/modules/iconPicker/images/star-of-life-solid.svg +3 -0
  104. data/assets/themes/j1/modules/iconPicker/images/xmark-solid.svg +3 -0
  105. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +493 -0
  106. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.min.js +17 -0
  107. data/assets/themes/j1/modules/jquery/AUTHORS.txt +372 -0
  108. data/assets/themes/j1/modules/jquery/LICENSE.txt +43 -0
  109. data/assets/themes/j1/modules/jquery/css/images/ui-icons_444444_256x240.png +0 -0
  110. data/assets/themes/j1/modules/jquery/css/images/ui-icons_555555_256x240.png +0 -0
  111. data/assets/themes/j1/modules/jquery/css/images/ui-icons_777620_256x240.png +0 -0
  112. data/assets/themes/j1/modules/jquery/css/images/ui-icons_777777_256x240.png +0 -0
  113. data/assets/themes/j1/modules/jquery/css/images/ui-icons_cc0000_256x240.png +0 -0
  114. data/assets/themes/j1/modules/jquery/css/images/ui-icons_ffffff_256x240.png +0 -0
  115. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.css +92 -92
  116. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.min.css +4 -4
  117. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.css +88 -88
  118. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.min.css +2 -2
  119. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.css +4 -4
  120. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.min.css +2 -2
  121. data/assets/themes/j1/modules/jquery/js/jquery-ui.js +13683 -13678
  122. data/assets/themes/j1/modules/jquery/js/jquery-ui.min.js +3 -3
  123. data/assets/themes/j1/modules/jquery/js/jquery.js +1029 -1203
  124. data/assets/themes/j1/modules/jquery/js/jquery.min.js +2 -2
  125. data/assets/themes/j1/modules/jquery/js/jquery.min.map +1 -1
  126. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.css +1315 -0
  127. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.min.css +7 -0
  128. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.css +886 -0
  129. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.min.css +5 -0
  130. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.css +446 -0
  131. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.min.css +5 -0
  132. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.js +37 -0
  133. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.min.js +17 -0
  134. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.js +42 -0
  135. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.min.js +17 -0
  136. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.js +19057 -0
  137. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.min.js +6 -0
  138. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.js +10872 -0
  139. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.js +2 -0
  140. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.map +1 -0
  141. data/assets/themes/j1/modules/jquery-3.5.1/js/require.js +2145 -0
  142. data/assets/themes/j1/modules/jquery-3.5.1/js/require.min.js +5 -0
  143. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.js +2 -2
  144. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
  145. data/assets/themes/j1/modules/masterslider/css/theme/uno.css +9 -9
  146. data/assets/themes/j1/modules/masterslider/css/theme/uno.min.css +1 -1
  147. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +2 -2
  148. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
  149. data/assets/themes/j1/modules/rouge/css/uno.dark/theme.css +136 -47
  150. data/assets/themes/j1/modules/rouge/css/uno.light/theme.css +9 -9
  151. data/assets/themes/j1/modules/scroller/js/scroller.js +76 -69
  152. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  153. data/assets/themes/j1/modules/translator/js/translator.js +1 -1
  154. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  155. data/lib/j1/version.rb +1 -1
  156. data/lib/starter_web/Gemfile +2 -2
  157. data/lib/starter_web/README.md +5 -5
  158. data/lib/starter_web/_config.yml +5 -2
  159. data/lib/starter_web/_data/blocks/banner.yml +8 -5
  160. data/lib/starter_web/_data/blocks/defaults/footer.yml +4 -4
  161. data/lib/starter_web/_data/blocks/footer.yml +12 -5
  162. data/lib/starter_web/_data/blocks/panel.yml +41 -38
  163. data/lib/starter_web/_data/j1_config.yml +68 -58
  164. data/lib/starter_web/_data/layouts/collection.yml +1 -0
  165. data/lib/starter_web/_data/layouts/default.yml +1 -1
  166. data/lib/starter_web/_data/layouts/home.yml +38 -9
  167. data/lib/starter_web/_data/layouts/news_panel_posts.yml +1 -0
  168. data/lib/starter_web/_data/layouts/page.yml +2 -1
  169. data/lib/starter_web/_data/layouts/post.yml +1 -0
  170. data/lib/starter_web/_data/layouts/raw.yml +1 -0
  171. data/lib/starter_web/_data/modules/advertising.yml +209 -58
  172. data/lib/starter_web/_data/modules/analytics.yml +2 -2
  173. data/lib/starter_web/_data/modules/attics.yml +4 -7
  174. data/lib/starter_web/_data/modules/defaults/advertising.yml +3 -2
  175. data/lib/starter_web/_data/modules/defaults/attics.yml +3 -3
  176. data/lib/starter_web/_data/modules/defaults/iconPicker.yml +42 -0
  177. data/lib/starter_web/_data/modules/defaults/navigator.yml +15 -13
  178. data/lib/starter_web/_data/modules/defaults/theme_toggler.yml +42 -0
  179. data/lib/starter_web/_data/modules/iconPicker.yml +64 -0
  180. data/lib/starter_web/_data/modules/masonry.yml +3 -3
  181. data/lib/starter_web/_data/modules/masterslider.yml +5 -5
  182. data/lib/starter_web/_data/modules/navigator_menu.yml +311 -160
  183. data/lib/starter_web/_data/modules/scroller.yml +8 -8
  184. data/lib/starter_web/_data/modules/slick.yml +47 -86
  185. data/lib/starter_web/_data/modules/theme_toggler.yml +29 -0
  186. data/lib/starter_web/_data/modules/themer.yml +0 -6
  187. data/lib/starter_web/_data/resources.yml +54 -53
  188. data/lib/starter_web/_data/templates/feed.xml +1 -1
  189. data/lib/starter_web/_includes/attributes.0.asciidoc +626 -0
  190. data/lib/starter_web/_includes/attributes.asciidoc +81 -72
  191. data/lib/starter_web/_includes/google/static/google_ad_5128488466.html +19 -0
  192. data/lib/starter_web/_includes/google/static/google_ad_7284712660.html +19 -0
  193. data/lib/starter_web/_includes/google/templates/google_ads.html +55 -0
  194. data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +47 -0
  195. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  196. data/lib/starter_web/assets/images/badges/configBinder.jpg +0 -0
  197. data/lib/starter_web/assets/images/badges/docsBinder.jpg +0 -0
  198. data/lib/starter_web/assets/images/badges/notebookBinder.jpg +0 -0
  199. data/lib/starter_web/assets/images/badges/scaleable/configBinder.svg +1 -1
  200. data/lib/starter_web/assets/images/badges/scaleable/docsBinder.svg +1 -1
  201. data/lib/starter_web/assets/images/badges/scaleable/myBinder.svg +1 -1
  202. data/lib/starter_web/assets/images/badges/scaleable/notebookBinder.svg +1 -1
  203. data/lib/starter_web/assets/images/icons/hyvor-talk/jpg/hyvor-logo.512x512.jpg +0 -0
  204. data/lib/starter_web/assets/images/icons/hyvor-talk/png/hyvor-logo.24x24.jpg +0 -0
  205. data/lib/starter_web/assets/images/icons/hyvor-talk/scalable/hyvor-logo.svg +1 -1
  206. data/lib/starter_web/assets/images/icons/j1/jpg/j1-256x256.jpg +0 -0
  207. data/lib/starter_web/assets/images/icons/j1/jpg/j1-512x512.jpg +0 -0
  208. data/lib/starter_web/assets/images/icons/j1/jpg/j1-64x64.jpg +0 -0
  209. data/lib/starter_web/assets/images/icons/j1/png/j1-256x256.png +0 -0
  210. data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.jpg +0 -0
  211. data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.jpg.png +0 -0
  212. data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.png +0 -0
  213. data/lib/starter_web/assets/images/icons/j1/png/j1-64x64.png +0 -0
  214. data/lib/starter_web/assets/images/icons/j1/scalable/j1.svg +1 -1
  215. data/lib/starter_web/assets/images/icons/mdi/mdi.svg +1 -0
  216. data/lib/starter_web/assets/images/icons/mdi/mdil.svg +1 -0
  217. data/lib/starter_web/assets/images/modules/attics/1920x1280/alexander-redl.jpg +0 -0
  218. data/lib/starter_web/assets/images/modules/attics/1920x1280/alina-grubnyak.jpg +0 -0
  219. data/lib/starter_web/assets/images/modules/attics/1920x1280/andrea-badino.jpg +0 -0
  220. data/lib/starter_web/assets/images/modules/attics/1920x1280/brad-neathery.jpg +0 -0
  221. data/lib/starter_web/assets/images/modules/attics/1920x1280/brigitta-schneiter.jpg +0 -0
  222. data/lib/starter_web/assets/images/modules/attics/1920x1280/bruno-figueiredo.jpg +0 -0
  223. data/lib/starter_web/assets/images/modules/attics/1920x1280/clem-onojeghuo.jpg +0 -0
  224. data/lib/starter_web/assets/images/modules/attics/1920x1280/core_web_vitals_best.png +0 -0
  225. data/lib/starter_web/assets/images/modules/attics/1920x1280/crawford-jolly.jpg +0 -0
  226. data/lib/starter_web/assets/images/modules/attics/1920x1280/eleni-afiontzi.jpg +0 -0
  227. data/lib/starter_web/assets/images/modules/attics/1920x1280/fly-d.jpg +0 -0
  228. data/lib/starter_web/assets/images/modules/attics/1920x1280/guillaume-bolduc.jpg +0 -0
  229. data/lib/starter_web/assets/images/modules/attics/1920x1280/harpal-singh.jpg +0 -0
  230. data/lib/starter_web/assets/images/modules/attics/1920x1280/hayden-mills-2.jpg +0 -0
  231. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-1.jpg +0 -0
  232. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-2.jpg +0 -0
  233. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-3.jpg +0 -0
  234. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-starter-mockup-1.jpg +0 -0
  235. data/lib/starter_web/assets/images/modules/attics/1920x1280/john-schnobrich-2.jpg +0 -0
  236. data/lib/starter_web/assets/images/modules/attics/1920x1280/josep-martins.jpg +0 -0
  237. data/lib/starter_web/assets/images/modules/attics/1920x1280/josh-liu.jpg +0 -0
  238. data/lib/starter_web/assets/images/modules/attics/1920x1280/kelly-sikkemal.jpg +0 -0
  239. data/lib/starter_web/assets/images/modules/attics/1920x1280/kira-auf-der-heide.jpg +0 -0
  240. data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.jpg +0 -0
  241. data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.webp +0 -0
  242. data/lib/starter_web/assets/images/modules/attics/1920x1280/matthaeus.jpg +0 -0
  243. data/lib/starter_web/assets/images/modules/attics/1920x1280/melanie-deziel.jpg +0 -0
  244. data/lib/starter_web/assets/images/modules/attics/1920x1280/milad-fakurian.jpg +0 -0
  245. data/lib/starter_web/assets/images/modules/attics/1920x1280/mohammad-rahmani.jpg +0 -0
  246. data/lib/starter_web/assets/images/modules/attics/1920x1280/nasa.jpg +0 -0
  247. data/lib/starter_web/assets/images/modules/attics/1920x1280/quino-al-2.jpg +0 -0
  248. data/lib/starter_web/assets/images/modules/attics/1920x1280/recha-oktaviani.jpg +0 -0
  249. data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280.jpg +0 -0
  250. data/lib/starter_web/assets/images/modules/attics/christina-1920x1280.jpg +0 -0
  251. data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200.jpg +0 -0
  252. data/lib/starter_web/assets/images/modules/attics/katie-moum-1920x1280.jpg +0 -0
  253. data/lib/starter_web/assets/images/modules/icons/j1/scalable/j1.svg +1 -1
  254. data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.jpg +0 -0
  255. data/lib/starter_web/assets/images/pages/core_web_vitals/200-create-a-link-1.jpg +0 -0
  256. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best.jpg +0 -0
  257. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best_full.jpg +0 -0
  258. data/lib/starter_web/assets/images/pages/features/bootswatch-themes-1280x800.jpg +0 -0
  259. data/lib/starter_web/assets/images/pages/features/global-mobile-traffic-1920x1080.jpg +0 -0
  260. data/lib/starter_web/assets/images/pages/features/google-lighthouse-1080x300.jpg +0 -0
  261. data/lib/starter_web/assets/images/pages/features/mobile-navigation-600x800.jpg +0 -0
  262. data/lib/starter_web/assets/images/pages/features/native-speakers-by-language.jpg +0 -0
  263. data/lib/starter_web/assets/images/pages/html_validator/appdevtools-html-validator.jpg +0 -0
  264. data/lib/starter_web/assets/images/pages/html_validator/freeformatter-html-validator.jpg +0 -0
  265. data/lib/starter_web/assets/images/pages/html_validator/w3c-nu-checker.jpg +0 -0
  266. data/lib/starter_web/assets/images/pages/html_validator/w3c-validator.jpg +0 -0
  267. data/lib/starter_web/assets/images/posts/featured/dynamic-web-access.jpg +0 -0
  268. data/lib/starter_web/assets/images/posts/featured/jamstack-generators.jpg +0 -0
  269. data/lib/starter_web/assets/images/posts/featured/jekyll.1200x400.jpg +0 -0
  270. data/lib/starter_web/assets/images/posts/featured/jekyll.jpg +0 -0
  271. data/lib/starter_web/assets/images/posts/featured/static-web-access.jpg +0 -0
  272. data/lib/starter_web/assets/images/promo/home/screenshot.jpg +0 -0
  273. data/lib/starter_web/assets/images/quotes/promo/home/screenshot.jpg +0 -0
  274. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-faq.jpg +0 -0
  275. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-generator.jpg +0 -0
  276. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-generator.png +0 -0
  277. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-og.png +0 -0
  278. data/lib/starter_web/assets/images/quotes/promo/jekyll/scalable/jekyll-faq.psd +0 -0
  279. data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +8 -9
  280. data/lib/starter_web/collections/_biography/becoming.adoc +23 -10
  281. data/lib/starter_web/collections/_biography/born-to-run.adoc +28 -10
  282. data/lib/starter_web/collections/_biography/forty-autumns.adoc +20 -13
  283. data/lib/starter_web/collections/_biography/not-dead-yet.adoc +25 -15
  284. data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +24 -15
  285. data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +25 -12
  286. data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +14 -10
  287. data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +11 -8
  288. data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +32 -8
  289. data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +17 -14
  290. data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +27 -13
  291. data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +38 -15
  292. data/lib/starter_web/collections/_people/diana-petersen.adoc +2 -0
  293. data/lib/starter_web/collections/_people/larry-parker.adoc +2 -0
  294. data/lib/starter_web/collections/_people/parveen-anand.adoc +2 -0
  295. data/lib/starter_web/collections/_portfolio/branding.adoc +5 -0
  296. data/lib/starter_web/collections/_portfolio/graphic_design.adoc +5 -0
  297. data/lib/starter_web/collections/_portfolio/identity.adoc +5 -0
  298. data/lib/starter_web/collections/_portfolio/illustration.adoc +5 -0
  299. data/lib/starter_web/collections/_portfolio/photography.adoc +5 -0
  300. data/lib/starter_web/collections/_portfolio/web_design.adoc +5 -0
  301. data/lib/starter_web/collections/_romance/{breath-of-snow-and-ashes-a.adoc → breath-of-snow-and-ashes.adoc} +20 -5
  302. data/lib/starter_web/collections/_romance/dressmaker-the.adoc +26 -14
  303. data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +12 -9
  304. data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +14 -11
  305. data/lib/starter_web/collections/_romance/outlander-novel.adoc +48 -25
  306. data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +30 -15
  307. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +4 -2
  308. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +4 -1
  309. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +5 -3
  310. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +4 -1
  311. data/lib/starter_web/collections/posts/public/featured/_posts/_includes/attributes.asciidoc +2 -2
  312. data/lib/starter_web/index.html +1 -18
  313. data/lib/starter_web/package.json +3 -3
  314. data/lib/starter_web/pages/public/about/features.adoc +1 -1
  315. data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -1
  316. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +1 -1
  317. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +1 -1
  318. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/212_values.asciidoc +4 -4
  319. data/lib/starter_web/pages/public/blog/navigator/index.html +2 -2
  320. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +1 -1
  321. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
  322. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
  323. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
  324. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +75 -65
  325. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +58 -0
  326. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/accordion.asciidoc +34 -0
  327. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/alerts.asciidoc +15 -0
  328. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/badges.asciidoc +9 -0
  329. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/body.asciidoc +14 -0
  330. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/breadcrumbs.asciidoc +14 -0
  331. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/buttons.asciidoc +75 -0
  332. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/cards.asciidoc +22 -0
  333. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/carousel.asciidoc +37 -0
  334. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/close.asciidoc +15 -0
  335. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/code.asciidoc +14 -0
  336. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/color_system.asciidoc +353 -0
  337. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/components.asciidoc +69 -0
  338. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/dropdowns.asciidoc +53 -0
  339. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/figures.asciidoc +5 -0
  340. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/forms.asciidoc +270 -0
  341. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/grid.asciidoc +49 -0
  342. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/links.asciidoc +21 -0
  343. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/list_groups.asciidoc +28 -0
  344. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/modals.asciidoc +43 -0
  345. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navbar.asciidoc +45 -0
  346. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navs.asciidoc +28 -0
  347. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/offcanvas.asciidoc +16 -0
  348. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/options.asciidoc +30 -0
  349. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/pagination.asciidoc +40 -0
  350. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/paragraph.asciidoc +5 -0
  351. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/placeholders.asciidoc +5 -0
  352. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/popovers.asciidoc +28 -0
  353. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/position.asciidoc +8 -0
  354. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/progress_bars.asciidoc +12 -0
  355. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spacing.asciidoc +14 -0
  356. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spinners.asciidoc +12 -0
  357. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tables.asciidoc +55 -0
  358. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/thumbnails.asciidoc +9 -0
  359. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/toasts.asciidoc +18 -0
  360. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tooltips.asciidoc +28 -0
  361. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/typography.asciidoc +115 -0
  362. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/z_index.asciidoc +26 -0
  363. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/_table.asciidoc +9 -0
  364. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/accordion.asciidoc +87 -0
  365. data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +262 -0
  366. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +59 -0
  367. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/100_chapter.asciidoc +541 -0
  368. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/200_chapter.asciidoc +33 -0
  369. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/build_command_options.asciidoc +72 -0
  370. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/files_and_folders.asciidoc +66 -0
  371. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_configuration_options.asciidoc +63 -0
  372. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_variables.asciidoc +26 -0
  373. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/page_variables.asciidoc +54 -0
  374. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/serve_command_options.asciidoc +45 -0
  375. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/site_variables.asciidoc +59 -0
  376. data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +442 -0
  377. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.0.asciidoc +112 -0
  378. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +2 -2
  379. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +3 -4
  380. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_rouge.asciidoc +1 -1
  381. data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +2 -2
  382. data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +10 -10
  383. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +35 -4
  384. data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +3 -3
  385. data/lib/starter_web/pages/public/learn/where_to_go.adoc +41 -49
  386. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +2 -2
  387. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -2
  388. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +2 -2
  389. data/lib/starter_web/pages/public/tools/cheatsheet/gem.adoc +255 -0
  390. data/lib/starter_web/pages/public/tools/cheatsheet/git.adoc +1458 -0
  391. data/lib/starter_web/pages/public/tools/cheatsheet/j1.adoc +63 -0
  392. data/lib/starter_web/pages/public/tools/cheatsheet/yaml.adoc +514 -0
  393. data/lib/starter_web/pages/public/{previewer → tools/previewer}/preview_bootstrap_theme.adoc +94 -5
  394. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  395. data/lib/starter_web/utilsrv/package.json +1 -1
  396. metadata +169 -60
  397. data/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  398. data/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  399. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.css +0 -1711
  400. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.min.css +0 -1
  401. data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +0 -127
  402. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +0 -460
  403. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +0 -97
  404. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +0 -15
  405. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +0 -115
  406. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +0 -15
  407. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +0 -97
  408. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +0 -15
  409. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +0 -125
  410. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +0 -15
  411. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  412. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  413. data/lib/starter_web/assets/images/icons/j1/j1-256x256.gif +0 -0
  414. data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.png +0 -0
  415. data/lib/starter_web/assets/images/pages/features/bootswatch-themes-1280x800.png +0 -0
  416. data/lib/starter_web/assets/images/pages/features/global-mobile-traffic-1920x1080.png +0 -0
  417. data/lib/starter_web/assets/images/pages/features/google-lighthouse-1080x300.png +0 -0
  418. data/lib/starter_web/assets/images/pages/features/mobile-navigation-600x800.png +0 -0
  419. data/lib/starter_web/assets/images/pages/features/native-speakers-by-language.png +0 -0
  420. data/lib/starter_web/assets/images/pages/nbinteract/binderhub-architecture.jpg +0 -0
  421. data/lib/starter_web/assets/images/pages/nbinteract/jupyterlab-architecture.jpg +0 -0
  422. data/lib/starter_web/assets/images/pages/nbinteract/mandelbrot-menge-1920x1200.jpg +0 -0
  423. data/lib/starter_web/assets/images/pages/nbinteract/mandelbrot-menge.png +0 -0
  424. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi-textbook-example.jpg +0 -0
  425. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_bar.jpg +0 -0
  426. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_hist.jpg +0 -0
  427. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_line.jpg +0 -0
  428. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_multiple_choice.jpg +0 -0
  429. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_scatter.jpg +0 -0
  430. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_scatter_drag.jpg +0 -0
  431. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_short_answer.jpg +0 -0
  432. data/lib/starter_web/assets/images/pages/nbinteract/nbi-textbook-example.jpg +0 -0
  433. data/lib/starter_web/assets/images/posts/featured/dynamic-web-access.png +0 -0
  434. data/lib/starter_web/assets/images/posts/featured/jamstack-generators.png +0 -0
  435. data/lib/starter_web/assets/images/posts/featured/jekyll.1200x400.png +0 -0
  436. data/lib/starter_web/assets/images/posts/featured/jekyll.png +0 -0
  437. data/lib/starter_web/assets/images/posts/featured/post-1.jpg +0 -0
  438. data/lib/starter_web/assets/images/posts/featured/post-2.jpg +0 -0
  439. data/lib/starter_web/assets/images/posts/featured/post-3.jpg +0 -0
  440. data/lib/starter_web/assets/images/posts/featured/post-4.jpg +0 -0
  441. data/lib/starter_web/assets/images/posts/featured/post-5.jpg +0 -0
  442. data/lib/starter_web/assets/images/posts/featured/static-web-access.png +0 -0
  443. data/lib/starter_web/collections/posts/public/series/_posts/2022-08-01-organize-your-life.adoc +0 -118
  444. data/lib/starter_web/collections/posts/public/series/_posts/2022-08-02-organize-your-life.adoc +0 -118
  445. data/lib/starter_web/collections/posts/public/series/_posts/2022-08-03-organize-your-life.adoc +0 -118
  446. data/lib/starter_web/collections/posts/public/series/_posts/2022-09-01-organize-your-life.adoc +0 -117
  447. data/lib/starter_web/collections/posts/public/series/_posts/2022-09-02-organize-your-life.adoc +0 -117
  448. /data/lib/starter_web/assets/images/badges/{configBinder.png → png/configBinder.png} +0 -0
  449. /data/lib/starter_web/assets/images/badges/{docsBinder.png → png/docsBinder.png} +0 -0
  450. /data/lib/starter_web/assets/images/badges/{notebookBinder.png → png/notebookBinder.png} +0 -0
  451. /data/lib/starter_web/assets/images/icons/hyvor-talk/{hyvor-logo.24x24.png → png/hyvor-logo.24x24.png} +0 -0
  452. /data/lib/starter_web/assets/images/icons/hyvor-talk/{hyvor-logo.512x512.png → png/hyvor-logo.512x512.png} +0 -0
@@ -1 +0,0 @@
1
- html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{-webkit-text-decoration-skip:objects;background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}blockquote,body,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,legend,ol,p,pre,ul{margin:0;padding:0}li>ol,li>ul{margin-bottom:0}table{border-collapse:collapse;border-spacing:0}fieldset{border:0;min-width:0}address,blockquote,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,ol,p,pre,table,ul{margin-bottom:24px}dd,ol,ul{margin-left:24px}*{-webkit-overflow-scrolling:touch}html{font-size:1em;line-height:1.5;min-height:100%;overflow-y:scroll}h1{font-size:36px;font-size:2.25rem;line-height:1.16667}h2{font-size:28px;font-size:1.75rem;line-height:1.28571}h3{font-size:24px;font-size:1.5rem;line-height:1.25}h4{font-size:20px;font-size:1.25rem;line-height:1.5}h5{font-size:18px;font-size:1.125rem;line-height:1.33333}h6{font-size:16px;font-size:1rem;line-height:1.5}img{font-style:italic;max-width:100%;vertical-align:middle}img[height],img[width]{max-width:none}table{width:100%}html{color:#222;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}code,kbd,pre,samp{font-family:Inconsolata,Monaco,Consolas,Andale Mono,Bitstream Vera Sans Mono,Courier New,Courier,monospace;font-style:normal}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{background-color:#e3d2d2;color:#a61717}.highlight .k,.highlight .o{font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-style:italic;font-weight:700}.highlight .gd{background-color:#fdd;color:#000}.highlight .gd .x{background-color:#faa;color:#000}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{background-color:#dfd;color:#000}.highlight .gi .x{background-color:#afa;color:#000}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kp,.highlight .kr,.highlight .kt{font-weight:700}.highlight .kt{color:#458}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne,.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc,.highlight .vg,.highlight .vi{color:teal}.highlight .il{color:#099}table{max-width:100%;width:auto}table td,table th{border:1px solid #ccc;padding:6px 12px;text-align:right}table tr:nth-child(2n){background-color:#f7f7f7}a,a:visited{color:#0077d8;text-decoration:none}pre{background-color:#f7f7f7;font-size:.9em;margin-bottom:12px;overflow-x:scroll;padding:12px}.o-wrapper{margin-left:auto;margin-right:auto;max-width:800px;padding-left:24px;padding-right:24px}.o-wrapper:after{clear:both!important;content:""!important;display:block!important}.o-layout{display:block;font-size:0;list-style:none;margin:0 0 0 -24px;padding:0}.o-layout__item{box-sizing:border-box;display:inline-block;font-size:16px;font-size:1rem;padding-left:24px;vertical-align:top;width:100%}.o-layout--flush{margin-left:0}.o-layout--flush>.o-layout__item{padding-left:0}.o-layout--tiny{margin-left:-6px}.o-layout--tiny>.o-layout__item{padding-left:6px}.o-layout--small{margin-left:-12px}.o-layout--small>.o-layout__item{padding-left:12px}.o-layout--large{margin-left:-48px}.o-layout--large>.o-layout__item{padding-left:48px}.o-layout--huge{margin-left:-96px}.o-layout--huge>.o-layout__item{padding-left:96px}.o-layout--middle>.o-layout__item{vertical-align:middle}.o-layout--bottom>.o-layout__item{vertical-align:bottom}.o-layout--stretch{display:flex;flex-wrap:wrap}.o-layout--stretch>.o-layout__item{display:flex}.o-layout--stretch.o-layout--center{justify-content:center}.o-layout--stretch.o-layout--right{justify-content:flex-end}.o-layout--stretch.o-layout--left{justify-content:flex-start}.o-layout--center{text-align:center}.o-layout--center>.o-layout__item{text-align:left}.o-layout--right{text-align:right}.o-layout--left,.o-layout--left>.o-layout__item,.o-layout--right>.o-layout__item{text-align:left}.o-layout--reverse{direction:rtl}.o-layout--reverse>.o-layout__item{direction:ltr}.o-layout--auto>.o-layout__item{width:auto}.hamburger{background-color:transparent;border:0;color:inherit;cursor:pointer;display:inline-block;font:inherit;margin:0;overflow:visible;padding:8px 0;text-transform:none;transition-duration:.15s;transition-property:opacity,filter;transition-timing-function:linear}.hamburger:hover{opacity:.7}.hamburger-box{display:inline-block;height:15px;position:relative;vertical-align:middle;width:20px}.hamburger-inner{display:block;margin-top:-1.5px;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{background-color:#222;border-radius:4px;height:3px;position:absolute;transition-duration:.15s;transition-property:transform;transition-timing-function:ease;width:20px}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-6px}.hamburger-inner:after{bottom:-6px}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-4px,-5px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-4px,5px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.c-textbook{height:100vh;overflow:hidden;position:relative}.c-textbook__page,.c-textbook__sidebar{background-color:#fff;height:100vh;overflow:scroll;position:absolute}.c-textbook__sidebar{width:260px}.c-textbook__page{transition:transform .25s ease;width:100%}.js-show-sidebar .c-textbook__page{transform:translate(260px)}@media (min-width:46.25em){.js-show-sidebar .c-textbook__page{width:calc(100% - 260px)}}.c-textbook__sidebar{background-color:#fafafa;border-right:1px solid rgba(0,0,0,.07);font-size:14px;font-size:.875rem;line-height:1.71429;padding:12px}.c-sidebar__chapters{list-style:none;margin-bottom:0;margin-left:0}.c-sidebar__sections{list-style:none;margin-bottom:0;margin-left:12px}.c-sidebar__entry{color:#364149;display:block;padding:6px;text-decoration:none}.c-sidebar__entry:hover{text-decoration:underline}.c-sidebar__entry:visited{color:#364149}.c-sidebar__entry--active.c-sidebar__entry--active{color:#0077d8}.c-sidebar__divider{border-top:1px solid #bbb;margin:6px}.c-textbook__page{padding:12px 0}@media (min-width:46.25em) and (max-width:61.24em){.c-textbook__page{padding-left:24px;padding-right:24px}}@media (min-width:61.25em){.c-textbook__page{padding-left:48px;padding-right:48px}}.c-textbook__page:focus{outline:none}#ipython-notebook:after{clear:both!important;content:""!important;display:block!important}#ipython-notebook .input_area pre,#ipython-notebook .output_text pre{background-color:#f7f7f7;font-size:.9em;margin-bottom:12px;overflow-x:scroll;padding:12px}#ipython-notebook .input_area pre{border:1px solid #ccc}#ipython-notebook .output_html{overflow-x:scroll}#ipython-notebook code{background-color:#f7f7f7;font-size:14px;font-size:.875rem;line-height:1.71429;padding:4px}#ipython-notebook blockquote{border-left:4px solid #ccc;margin:12px;padding:18px}#ipython-notebook blockquote p:last-child{margin-bottom:0}#ipython-notebook .cell.nbinteract-left{float:left;width:50%}#ipython-notebook .cell.nbinteract-right{float:right;width:50%}#ipython-notebook .cell.nbinteract-hide_in>.input,#ipython-notebook .cell.nbinteract-hide_out>.output_wrapper{display:none}#ipython-notebook .cell:after{clear:both;content:"";display:table}#ipython-notebook div.output_subarea{max-width:none}#ipython-notebook .jp-OutputPrompt{display:none}.c-page__nav{align-items:center;display:flex;justify-content:space-between}.c-page__nav__next,.c-page__nav__prev{border:1px solid rgba(0,140,255,.7);border-radius:3px;color:rgba(0,140,255,.7);flex:1;padding:12px 0}.c-page__nav__next{text-align:right}.c-sidebar-toggle{margin-bottom:24px}.c-sidebar-toggle__label{display:inline-block;font-size:12px;font-size:.75rem;line-height:1.5;margin-left:6px;text-transform:uppercase;vertical-align:middle}.buttons .interact-button,.js-nbinteract-widget{background-color:#477dca;border:none;border-radius:3px;color:#fff;cursor:pointer;display:inline-block;font-size:16px;font-size:1rem;font-weight:700;line-height:1.5;padding:6px 18px;text-decoration:none}.buttons .interact-button:focus,.buttons .interact-button:hover,.js-nbinteract-widget:focus,.js-nbinteract-widget:hover{text-decoration:none}.buttons{margin-bottom:24px}.js-nbinteract-widget{margin-bottom:12px;padding:6px 24px}.u-clearfix:after{clear:both!important;content:""!important;display:block!important}.u-hidden-visually{clip:rect(0 0 0 0)!important;border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.u-hidden{display:none!important}.u-padding{padding:24px!important}.u-padding-tiny{padding:6px!important}.u-padding-small{padding:12px!important}.u-padding-large{padding:48px!important}.u-padding-huge{padding:96px!important}.u-padding-none{padding:0!important}.u-padding-top{padding-top:24px!important}.u-padding-top-tiny{padding-top:6px!important}.u-padding-top-small{padding-top:12px!important}.u-padding-top-large{padding-top:48px!important}.u-padding-top-huge{padding-top:96px!important}.u-padding-top-none{padding-top:0!important}.u-padding-right{padding-right:24px!important}.u-padding-right-tiny{padding-right:6px!important}.u-padding-right-small{padding-right:12px!important}.u-padding-right-large{padding-right:48px!important}.u-padding-right-huge{padding-right:96px!important}.u-padding-right-none{padding-right:0!important}.u-padding-bottom{padding-bottom:24px!important}.u-padding-bottom-tiny{padding-bottom:6px!important}.u-padding-bottom-small{padding-bottom:12px!important}.u-padding-bottom-large{padding-bottom:48px!important}.u-padding-bottom-huge{padding-bottom:96px!important}.u-padding-bottom-none{padding-bottom:0!important}.u-padding-left{padding-left:24px!important}.u-padding-left-tiny{padding-left:6px!important}.u-padding-left-small{padding-left:12px!important}.u-padding-left-large{padding-left:48px!important}.u-padding-left-huge{padding-left:96px!important}.u-padding-left-none{padding-left:0!important}.u-padding-horizontal{padding-left:24px!important;padding-right:24px!important}.u-padding-horizontal-tiny{padding-left:6px!important;padding-right:6px!important}.u-padding-horizontal-small{padding-left:12px!important;padding-right:12px!important}.u-padding-horizontal-large{padding-left:48px!important;padding-right:48px!important}.u-padding-horizontal-huge{padding-left:96px!important;padding-right:96px!important}.u-padding-horizontal-none{padding-left:0!important;padding-right:0!important}.u-padding-vertical{padding-bottom:24px!important;padding-top:24px!important}.u-padding-vertical-tiny{padding-bottom:6px!important;padding-top:6px!important}.u-padding-vertical-small{padding-bottom:12px!important;padding-top:12px!important}.u-padding-vertical-large{padding-bottom:48px!important;padding-top:48px!important}.u-padding-vertical-huge{padding-bottom:96px!important;padding-top:96px!important}.u-padding-vertical-none{padding-bottom:0!important;padding-top:0!important}.u-margin{margin:24px!important}.u-margin-tiny{margin:6px!important}.u-margin-small{margin:12px!important}.u-margin-large{margin:48px!important}.u-margin-huge{margin:96px!important}.u-margin-none{margin:0!important}.u-margin-top{margin-top:24px!important}.u-margin-top-tiny{margin-top:6px!important}.u-margin-top-small{margin-top:12px!important}.u-margin-top-large{margin-top:48px!important}.u-margin-top-huge{margin-top:96px!important}.u-margin-top-none{margin-top:0!important}.u-margin-right{margin-right:24px!important}.u-margin-right-tiny{margin-right:6px!important}.u-margin-right-small{margin-right:12px!important}.u-margin-right-large{margin-right:48px!important}.u-margin-right-huge{margin-right:96px!important}.u-margin-right-none{margin-right:0!important}.u-margin-bottom{margin-bottom:24px!important}.u-margin-bottom-tiny{margin-bottom:6px!important}.u-margin-bottom-small{margin-bottom:12px!important}.u-margin-bottom-large{margin-bottom:48px!important}.u-margin-bottom-huge{margin-bottom:96px!important}.u-margin-bottom-none{margin-bottom:0!important}.u-margin-left{margin-left:24px!important}.u-margin-left-tiny{margin-left:6px!important}.u-margin-left-small{margin-left:12px!important}.u-margin-left-large{margin-left:48px!important}.u-margin-left-huge{margin-left:96px!important}.u-margin-left-none{margin-left:0!important}.u-margin-horizontal{margin-left:24px!important;margin-right:24px!important}.u-margin-horizontal-tiny{margin-left:6px!important;margin-right:6px!important}.u-margin-horizontal-small{margin-left:12px!important;margin-right:12px!important}.u-margin-horizontal-large{margin-left:48px!important;margin-right:48px!important}.u-margin-horizontal-huge{margin-left:96px!important;margin-right:96px!important}.u-margin-horizontal-none{margin-left:0!important;margin-right:0!important}.u-margin-vertical{margin-bottom:24px!important;margin-top:24px!important}.u-margin-vertical-tiny{margin-bottom:6px!important;margin-top:6px!important}.u-margin-vertical-small{margin-bottom:12px!important;margin-top:12px!important}.u-margin-vertical-large{margin-bottom:48px!important;margin-top:48px!important}.u-margin-vertical-huge{margin-bottom:96px!important;margin-top:96px!important}.u-margin-vertical-none{margin-bottom:0!important;margin-top:0!important}
@@ -1,127 +0,0 @@
1
- ---
2
- regenerate: true
3
- ---
4
-
5
- {% capture cache %}
6
-
7
- {% comment %}
8
- # -----------------------------------------------------------------------------
9
- # ~/assets/themes/j1/modules/advertising/js/google/adInitializer.js
10
- # Liquid template for Google Adsense to initialze all units in a page
11
- #
12
- # Product/Info:
13
- # https://jekyll.one
14
- # Copyright (C) 2023 Juergen Adams
15
- #
16
- # J1 Theme is licensed under the MIT License.
17
- # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
18
- # -----------------------------------------------------------------------------
19
- # Test data:
20
- # {{ liquid_var | debug }}
21
- # -----------------------------------------------------------------------------
22
- {% endcomment %}
23
-
24
- {% comment %} Liquid procedures
25
- -------------------------------------------------------------------------------- {% endcomment %}
26
-
27
- {% comment %} Set global settings
28
- -------------------------------------------------------------------------------- {% endcomment %}
29
- {% assign environment = site.environment %}
30
- {% assign asset_path = "/assets/themes/j1" %}
31
-
32
- {% comment %} Process YML config data
33
- ================================================================================ {% endcomment %}
34
-
35
- {% comment %} Set config files
36
- -------------------------------------------------------------------------------- {% endcomment %}
37
- {% assign template_config = site.data.j1_config %}
38
- {% assign blocks = site.data.blocks %}
39
- {% assign modules = site.data.modules %}
40
-
41
- {% comment %} Set config data (settings only)
42
- -------------------------------------------------------------------------------- {% endcomment %}
43
- {% assign cookie_defaults = modules.defaults.cookies.defaults %}
44
- {% assign cookie_settings = modules.cookies.settings %}
45
-
46
- {% assign advertising_options = modules.defaults.advertising.defaults %}
47
- {% assign advertising_settings = modules.advertising.settings %}
48
-
49
- {% comment %} Set config options (settings only)
50
- -------------------------------------------------------------------------------- {% endcomment %}
51
- {% assign cookie_options = cookie_defaults | merge: cookie_settings %}
52
- {% assign advertising_options = advertising_options | merge: advertising_settings %}
53
-
54
- {% comment %} Variables
55
- -------------------------------------------------------------------------------- {% endcomment %}
56
- {% assign advertising = advertising_options.enabled %}
57
- {% assign advertising_provider = advertising_options.provider %}
58
-
59
- {% assign production = false %}
60
- {% if environment == 'prod' or environment == 'production' %}
61
- {% assign production = true %}
62
- {% endif %}
63
-
64
- /*
65
- # -----------------------------------------------------------------------------
66
- # ~/assets/themes/j1/modules/advertising/js/google/adInitializer.js
67
- # JS helper for Google Adsense to initialze all units in a page
68
- #
69
- # Product/Info:
70
- # http://jekyll.one
71
- #
72
- # Copyright (C) 2023 Juergen Adams
73
- #
74
- # J1 Theme is licensed under MIT License.
75
- # See: https://github.com/jekyll-one/J1 Theme/blob/master/LICENSE
76
- # -----------------------------------------------------------------------------
77
- */
78
-
79
- $(document).ready(function() {
80
- // [INFO ] [j1.adapter.advertising ] [ detected advertising provider: {{advertising_provider}}} ]
81
- // [INFO ] [j1.adapter.advertising ] [ advertising detected as: {{advertising}} ]
82
- {% if advertising %}
83
- var logger = log4javascript.getLogger('j1.core.advertising.google');
84
- var ads_found = document.getElementsByClassName('adsbygoogle').length;
85
- var cookie_names = j1.getCookieNames();
86
- var user_consent = j1.readCookie(cookie_names.user_consent);
87
- var providerID = '{{advertising_options.google.publisherID}}';
88
- var validProviderID = (providerID.includes('your')) ? false : true;
89
- var advertisingProvider = 'Google Adsense';
90
-
91
- var dependencies_met_page_ready = setInterval (function (options) {
92
- if (j1.getState() === 'finished') {
93
-
94
- if (!validProviderID) {
95
- logger.warn('\n' + 'disabled provider: ' + advertisingProvider);
96
- clearInterval(dependencies_met_page_ready);
97
- return false;
98
- }
99
-
100
- if (user_consent.personalization) {
101
- if (ads_found) {
102
- logger.info('\n' + 'initialize all ads in page: #' + ads_found);
103
- [].forEach.call(document.querySelectorAll('.adsbygoogle'), function() {
104
- (adsbygoogle = window.adsbygoogle || []).push({});
105
- });
106
- } else {
107
- logger.warn('\n' + 'no ads found in page');
108
- }
109
- } else {
110
- logger.warn('\n' + 'initializing ads skipped');
111
- logger.warn('\n' + 'consent on cookies disabled for personalization');
112
- }
113
- clearInterval(dependencies_met_page_ready);
114
- }
115
- }, 25);
116
- {% else %}
117
- // [WARN ] [j1.core.advertising ] [ no init code placed ]
118
- {% endif %}
119
- });
120
-
121
- {% endcapture %}
122
- {% if production %}
123
- {{ cache | minifyJS }}
124
- {% else %}
125
- {{ cache | strip_empty_lines }}
126
- {% endif %}
127
- {% assign cache = nil %}
@@ -1,460 +0,0 @@
1
- /*
2
- # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js
4
- # J1 core module for deeplAPI
5
- #
6
- # Product/Info:
7
- # https://jekyll.one
8
- #
9
- # Copyright (C) 2023 Juergen Adams
10
- #
11
- # J1 Theme is licensed under the MIT License.
12
- # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
13
- # -----------------------------------------------------------------------------
14
- # NOTE: Based on https://github.com/jquery-boilerplate/jquery-boilerplate
15
- # See: https://www.dotnetcurry.com/jquery/1069/authoring-jquery-plugins
16
- # -----------------------------------------------------------------------------
17
- */
18
-
19
- // the semi-colon before function invocation is a SAFETY method against
20
- // concatenated scripts and/or other plugins which may NOT be closed
21
- // properly.
22
- //
23
- ;(function($, window, document, undefined) {
24
-
25
- 'use strict';
26
-
27
- // Create the defaults
28
- var pluginName = 'deeplAPI',
29
- defaults = {
30
- api: 'free', // free (default) | pro
31
- auth_key: '', // API authorization key
32
- source_lang: 'auto', // autodetection (default: auto)|supported language. Specifies the language for the input text.
33
- target_lang: 'DE', // language to be tranlasted in.
34
- max_chars: false, // false (unlimited) or number. Number of chars from the source text passed for translation.
35
- split_sentences: '1', // enabled (1, default)|disabled (0)|nonewlines. Sets the translation engine to first split the input text into sentences.
36
- preserve_formatting: '0', // disabled (0, default)|enabled (1). Sets the translation engine to respect the original formatting.
37
- formality: 'default', // default|more|less. Sets the translated text should lean towards formal or informal language.
38
- tag_handling: false, // false (value=0)|xml. Sets which kind of tags should be handled. If set, API is able to process structured XML content.
39
- outline_detection: true, // false (value=0) or true (NO value passed). Controls the automatic mechanism on XML tags for splitting. If disabled, all splitting_tags are to be specified.
40
- non_splitting_tags: false, // false or comma-separated list of XML tags. Disable automated splitting on the tags specified.
41
- splitting_tags: false, // false or comma-separated list of XML tags which always cause splitting.
42
- ignore_tags: false, // false or comma-separated list of XML tags that indicate text NOT to be translated.
43
- onInit: function (){}, // callback after plugin has initialized.
44
- onBeforeTranslation: function (){}, // callback before translation started.
45
- onAfterTranslation: function (){} // callback after translation finished.
46
- };
47
-
48
- // -------------------------------------------------------------------------
49
- // plugin constructor
50
- // create the jquery plugin
51
- // -------------------------------------------------------------------------
52
- function Plugin (element, options) {
53
- this.element = element;
54
- this.settings = $.extend( {}, defaults, options);
55
- this.settings.elementID = '#' + this.element.id;
56
- this.xhr = new XMLHttpRequest();
57
-
58
- // call the plugin initializer
59
- this.init(this.settings);
60
- }
61
-
62
- // Avoid plugin prototype conflicts
63
- $.extend(Plugin.prototype, {
64
- // -----------------------------------------------------------------------
65
- // init()
66
- // initialize|run the translation
67
- // -----------------------------------------------------------------------
68
- init: function(options) {
69
- var _this = this;
70
- var logger = log4javascript.getLogger('deeplAPI.init');
71
- var data_url = '/assets/data/private.json';
72
- var settings = options;
73
- var auth_key;
74
- var encodedString;
75
- var encryptedString;
76
- var jsonObject;
77
-
78
- logger.info('\n' + 'initializing plugin: started');
79
-
80
- // loading private data (auth key)
81
- $.ajax({
82
- url: data_url,
83
- dataType: 'text',
84
- success: function (data) {
85
- encodedString = atob(data);
86
- encryptedString = _this.decryptData(data, '8c841fc2e3aa2bd5', '0000000000000000' );
87
- jsonObject = JSON.parse(encryptedString);
88
- auth_key = jsonObject.translators.deepl.auth_key;
89
- },
90
- error: function (jqXHR, textStatus, errorThrown) {
91
- logger.error('\n' + 'failed to retrieve JSON data from: ' + data_url);
92
- }
93
- });
94
-
95
- // run the translation (if private data loaded)
96
- var dependencies_met_page_ready = setInterval (function () {
97
- if (typeof auth_key !== 'undefined' ) {
98
- settings.auth_key = auth_key;
99
- _this.translate(settings);
100
- logger.info('\n' + 'translation: in progress');
101
- clearInterval(dependencies_met_page_ready);
102
- }
103
- }, 25);
104
- },
105
-
106
- encryptData: function (message = '', key = '') {
107
- var message = CryptoJS.AES.encrypt(message, key);
108
-
109
- return message.toString();
110
- },
111
-
112
- decryptData: function (message = '', key = '', iv = '') {
113
- // var test_key_32 = "2e35f242a46d67eeb74aabc37d5e5d05";
114
- // var data = CryptoJS.AES.encrypt("Message", test_key_32); // Encryption Part
115
- // var decrypted = CryptoJS.AES.decrypt(data, test_key_32).toString(CryptoJS.enc.Utf8);
116
-
117
- // 1. Separate ciphertext and salt
118
- var encryptedWA = CryptoJS.enc.Base64.parse(message);
119
- var prefixWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(0, 8/4)); // Salted__ prefix
120
- // var saltWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(8/4, 16/4)); // 8 bytes salt: 0x0123456789ABCDEF
121
- var ciphertextWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(16/4, encryptedWA.words.length)); // ciphertext
122
-
123
- // 2. Determine key and IV using PBKDF2
124
- // var password = 'mypassword'
125
- // var keyIvWA = CryptoJS.PBKDF2(
126
- // password,
127
- // saltWA,
128
- // {
129
- // keySize: (32+16)/4, // key and IV
130
- // iterations: 10000,
131
- // hasher: CryptoJS.algo.SHA256
132
- // }
133
- // );
134
- // var keyWA = CryptoJS.lib.WordArray.create(keyIvWA.words.slice(0, 32/4));
135
- // var ivWA = CryptoJS.lib.WordArray.create(keyIvWA.words.slice(32/4, (32+16)/4));
136
-
137
- // 3. Decrypt
138
- var decryptedWA = CryptoJS.AES.decrypt(
139
- {ciphertext: ciphertextWA},
140
- key,
141
- {iv: iv}
142
- );
143
- var decrypted = decryptedWA.toString(CryptoJS.enc.Utf8)
144
- return decrypted;
145
- },
146
-
147
- // -----------------------------------------------------------------------
148
- // prepareXHR
149
- // Prepare a XHR request according to DeepL API specification
150
- // for the required HTTP header settings
151
- // See: https://www.deepl.com/de/docs-api/simulator/
152
- // -----------------------------------------------------------------------
153
- // NOTE: "User-Agent" NOT used as the use is qualified UNSECURE
154
- // -----------------------------------------------------------------------
155
- prepareXHR: function (settings) {
156
- if (settings.api === 'free') {
157
- this.xhr.open("POST", "https://api-free.deepl.com/v2/translate", true);
158
- } else if (settings.api === 'pro') {
159
- this.xhr.open("POST", "https://api.deepl.com/v2/translate", true);
160
- } else {
161
- this.xhr.open("POST", "https://api-free.deepl.com/v2/translate", true);
162
- }
163
- // Set required header parameters
164
- this.xhr.setRequestHeader("Accept", "*/*");
165
- this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
166
- },
167
-
168
- // -----------------------------------------------------------------------
169
- // prepareText
170
- // Prepare text function used to parse, or arrange text, designed as
171
- // a module. Currently it splits all text whenever a newline ("\n")
172
- // is met, so that it preserves the original layout of the text, which
173
- // would have otherwise been lost because of the way DeepL accepts
174
- // multiple sentences.
175
- // -----------------------------------------------------------------------
176
- prepareText: function (source_text) {
177
- return source_text.split("\n");
178
- },
179
-
180
- // -----------------------------------------------------------------------
181
- // translate
182
- // Translate text function which uses all the other modules, in order to
183
- // create a request, which is sent to the DeepL API to translate, and
184
- // then display the result, designed as a module.
185
- // -----------------------------------------------------------------------
186
- translate: function (settings) {
187
- const logger = log4javascript.getLogger('deeplAPI.translate');
188
- const READYSTATE_DONE = 4;
189
- const STATUS_OK = 200;
190
- const SUPPORTED_LANG = ['BG', 'CS', 'DA', 'DE', 'EL', 'EN-GB', 'EN-US', 'EN', 'ES', 'ET', 'FI', 'FR', 'HU', 'IT', 'JA', 'LT', 'LV', 'NL', 'PL', 'PT-PT', 'PT-BR', 'PT', 'RO', 'RU', 'SK', 'SL', 'SV', 'ZH'];
191
- const ALLOWED_FORMALITY_LANG = ['DE', 'FR', 'IT', 'ES', 'NL', 'PL', 'PT', 'PT-BR', 'RU'];
192
- const ALLOWED_TAG_HANDLING = ['xml'];
193
- const TARGET_ELEMENT = settings.targetElement;
194
- const TARGET_ELEMENT_EXISTS = $(TARGET_ELEMENT).length;
195
- const ERROR_TEXT = 'Translation failed.' + '\n' + 'Reason: ';
196
- const WARNING_TEXT = 'Translation skipped.' + '\n' + 'Reason: ';
197
-
198
- var BASE_TARGET_ELEMENT;
199
- var ELEMENT_TYPE;
200
- var SOURCE_TEXT_FOUND;
201
-
202
- var API_RESPONSE = {};
203
- API_RESPONSE['400'] = 'Bad request. Please check error message and your parameters.';
204
- API_RESPONSE['401'] = 'Authorization failed. Please supply a valid DeepL-Auth-Key.';
205
- API_RESPONSE['403'] = 'Forbidden. The access to the requested resource is denied, because of insufficient access rights.';
206
- API_RESPONSE['404'] = 'The requested resource could not be found.';
207
- API_RESPONSE['413'] = 'The request size exceeds the limit.';
208
- API_RESPONSE['415'] = 'The requested entries format specified in the Accept header is not supported.';
209
- API_RESPONSE['429'] = 'Too many requests. Please wait and resend your request.';
210
- API_RESPONSE['456'] = 'Quota exceeded. The maximum amount of glossaries has been reached.';
211
- API_RESPONSE['500'] = 'Internal server error';
212
- API_RESPONSE['503'] = 'Resource currently unavailable. Try again later.';
213
- API_RESPONSE['529'] = 'Too many requests. Please wait and resend your request.';
214
-
215
- var reason_text;
216
- var request = '';
217
- var element = '';
218
- var source_text = '';
219
- var source_text_lines = '';
220
- var source_lang;
221
- var target_lang;
222
-
223
- // check if passed HTML element or ID exists
224
- if (TARGET_ELEMENT_EXISTS) {
225
- BASE_TARGET_ELEMENT = (TARGET_ELEMENT.includes('.')||TARGET_ELEMENT.includes('#')) ? TARGET_ELEMENT.substring(1) : TARGET_ELEMENT;
226
- ELEMENT_TYPE = $(TARGET_ELEMENT).get(0).nodeName;
227
-
228
- // Read the text to be translated from the given HTML element
229
- if (ELEMENT_TYPE === 'TEXTAREA') {
230
- source_text = this.element.value;
231
- } else if (ELEMENT_TYPE === 'P') {
232
- element = this.element;
233
- source_text = $(TARGET_ELEMENT).text();
234
- }
235
- SOURCE_TEXT_FOUND = source_text.length;
236
- } else {
237
- logger.error('\n' + 'target element does not exists: ' + TARGET_ELEMENT);
238
- return false;
239
- }
240
-
241
- // limit the source text if required
242
- if (settings.max_char && source_text.length > settings.max_char ) {
243
- var source_text_limited = source_text.substring(0, settings.max_char -3);
244
- source_text = source_text_limited + ' ...';
245
- logger.info('\n' + 'limit for source text ' + '(max: ' + settings.max_char + ')' + ' reached: ' + source_text.length);
246
- }
247
- source_text_lines = this.prepareText(source_text);
248
-
249
- // prepare the XHR request for the API (free/pro) requested
250
- this.prepareXHR(settings);
251
-
252
- // Makes a request with every line, as a new text to translate
253
- var source_text_request = "";
254
- for(var i = 0; i < source_text_lines.length; i++) {
255
- source_text_request += "&text=" + source_text_lines[i];
256
- }
257
-
258
- this.xhr.onload = function () {
259
- if (this.readyState === READYSTATE_DONE) {
260
- if (this.status === STATUS_OK) {
261
- // JSON parse the response
262
- var result = JSON.parse(this.responseText);
263
-
264
- // recreate the response as one text to keep its original layout
265
- var translated_text = "";
266
- for(var i = 0; i < result.translations.length; i++) {
267
- translated_text += result.translations[i].text;
268
- translated_text += "\n";
269
- }
270
- logger.info('\n' + 'translation: finished');
271
-
272
- // update the HTM element (content) by the tranlation
273
- if (ELEMENT_TYPE === 'TEXTAREA') {
274
- $(TARGET_ELEMENT).val(translated_text);
275
- } else if (ELEMENT_TYPE === 'P') {
276
- $(TARGET_ELEMENT).text(translated_text);
277
- }
278
- } else {
279
- logger.error('\n' + 'API returned ' + this.status + ': ' + API_RESPONSE[this.status]);
280
- }
281
- }
282
- };
283
-
284
- // ---------------------------------------------------------------------
285
- // preflight (validity check) on given parameters
286
- // ---------------------------------------------------------------------
287
-
288
- // Check for SUPPORTED language by option source_lang|target_lang
289
- source_lang = this.settings.source_lang;
290
- target_lang = this.settings.target_lang;
291
-
292
- if (this.settings.source_lang !== 'auto') {
293
- this.settings.source_lang = (SUPPORTED_LANG.indexOf(this.settings.source_lang) > -1) ? this.settings.source_lang : false;
294
- }
295
- this.settings.target_lang = (SUPPORTED_LANG.indexOf(this.settings.target_lang) > -1) ? this.settings.target_lang : false;
296
-
297
- // stop processing if invalid language or NO AUTH key passed
298
- if (!this.settings.auth_key || !this.settings.source_lang || !this.settings.target_lang) {
299
- if (!this.settings.auth_key) {
300
- reason_text = 'NO AUTH key passed.';
301
- logger.error('\n' + 'invalid option found. ' + reason_text);
302
- }
303
- if (!this.settings.source_lang) {
304
- reason_text = 'WRONG source language passed: ' + source_lang;
305
- logger.error('\n' + 'invalid option found. ' + reason_text);
306
- }
307
- if (!this.settings.target_lang) {
308
- reason_text = 'WRONG target language passed: ' + target_lang;
309
- logger.error('\n' + 'invalid option found. ' + reason_text);
310
- }
311
-
312
- // update the HTML element (content) by an error text
313
- if (ELEMENT_TYPE === 'TEXTAREA') {
314
- $(TARGET_ELEMENT).val(ERROR_TEXT + reason_text);
315
- } else if (ELEMENT_TYPE === 'P') {
316
- $(TARGET_ELEMENT).text(ERROR_TEXT + reason_text);
317
- }
318
- return false;
319
- }
320
-
321
- if(!SOURCE_TEXT_FOUND) {
322
- reason_text = 'NO text found for translation';
323
- // update the HTML element (content) by an error text
324
- if (ELEMENT_TYPE === 'TEXTAREA') {
325
- $(TARGET_ELEMENT).val(WARNING_TEXT + reason_text);
326
- } else if (ELEMENT_TYPE === 'P') {
327
- $(TARGET_ELEMENT).text(WARNING_TEXT + reason_text);
328
- }
329
- logger.warn('\n' + 'no text found for translation');
330
- return false;
331
- }
332
-
333
- // Check for VALID language supported by option 'formality'
334
- if (this.settings.formality !== 'default' ) {
335
- if (!(ALLOWED_FORMALITY_LANG.indexOf(this.settings.target_lang) > -1)) {
336
- logger.warn('\n' + 'wrong language found for formality setting: ' + this.settings.target_lang);
337
- }
338
- this.settings.formality = (ALLOWED_FORMALITY_LANG.indexOf(this.settings.target_lang) > -1) ? this.settings.formality : 'default';
339
- }
340
-
341
- // Check for VALID tag handling and options
342
- if (this.settings.tag_handling) {
343
- var tag_handling = this.settings.tag_handling;
344
- // check for VALID method
345
- this.settings.tag_handling = (ALLOWED_TAG_HANDLING.indexOf(this.settings.tag_handling) > -1) ? this.settings.tag_handling : false;
346
- if (this.settings.tag_handling) {
347
- this.settings.non_splitting_tags = this.settings.non_splitting_tags ? encodeURIComponent(this.settings.non_splitting_tags) : false;
348
- this.settings.splitting_tags = this.settings.splitting_tags ? encodeURIComponent(this.settings.splitting_tags) : false;
349
- this.settings.ignore_tags = this.settings.ignore_tags ? encodeURIComponent(this.settings.ignore_tags) : false;
350
- } else {
351
- logger.error('\n' + 'invalid option found for tag handling : ' + tag_handling);
352
- logger.warn('\n' + 'disable option: ' + 'tag_handling');
353
- // reset to defaults if WRONG method detected
354
- if (this.settings.non_splitting_tags) {
355
- logger.warn('\n' + 'disable option: ' + this.settings.non_splitting_tags);
356
- this.settings.non_splitting_tags = false;
357
- }
358
- if (this.settings.splitting_tags) {
359
- logger.warn('\n' + 'disable option : ' + this.settings.splitting_tags);
360
- this.settings.splitting_tags = false;
361
- }
362
- if (this.settings.ignore_tags) {
363
- logger.warn('\n' + 'disable option: ' + this.settings.ignore_tags);
364
- this.settings.ignore_tags = false;
365
- }
366
- }
367
- } else {
368
- // reset tags to their defaults if NO tag_handling is enabled but settings passed
369
- if (this.settings.non_splitting_tags) {
370
- logger.warn('\n' + 'invalid option found: ' + this.settings.non_splitting_tags);
371
- this.settings.non_splitting_tags = false;
372
- }
373
- if (this.settings.splitting_tags) {
374
- logger.warn('\n' + 'invalid option found: ' + this.settings.splitting_tags);
375
- this.settings.splitting_tags = false;
376
- }
377
- if (this.settings.ignore_tags) {
378
- logger.warn('\n' + 'invalid option found: ' + this.settings.ignore_tags);
379
- this.settings.ignore_tags = false;
380
- }
381
- }
382
-
383
- // ---------------------------------------------------------------------
384
- // construct the API request body
385
- // ---------------------------------------------------------------------
386
- request = "auth_key=" + this.settings.auth_key;
387
- request += (this.settings.source_lang !== 'auto' ) ? "&source_lang=" + this.settings.source_lang : '';
388
- request += "&target_lang=" + this.settings.target_lang;
389
- request += (this.settings.formality !== 'default' ) ? "&formality=" + this.settings.formality : '';
390
- request += (this.settings.split_sentences) ? "&split_sentences=" + this.settings.formality : '';
391
- request += (this.settings.tag_handling) ? "&tag_handling=" + this.settings.tag_handling : "&tag_handling=0";
392
- request += (this.settings.tag_handling && this.settings.non_splitting_tags) ? "&non_splitting_tags=" + this.settings.non_splitting_tags : '';
393
- request += (this.settings.tag_handling && this.settings.splitting_tags) ? "&splitting_tags=" + this.settings.splitting_tags : '';
394
- request += (this.settings.tag_handling && this.settings.ignore_tags) ? "&ignore_tags=" + this.settings.ignore_tags : '';
395
- request += source_text_request;
396
-
397
- // Send the constructed request to the API for translation
398
- this.xhr.send(request);
399
- } // END translate
400
-
401
- }); // END prototype
402
-
403
- // ---------------------------------------------------------------------------
404
- // plugin wrapper
405
- // A really lightweight plugin wrapper around the constructor,
406
- // wrapper around the constructor to prevent multiple instantiations
407
- // preventing against multiple instantiations and allowing any
408
- // public function (ie. a function whose name doesn't start
409
- // with an underscore) to be called via the jQuery plugin,
410
- // e.g. $(element).defaultPluginName('functionName', arg1, arg2)
411
- // ---------------------------------------------------------------------------
412
- $.fn[pluginName] = function ( options ) {
413
- var args = arguments;
414
-
415
- // Is the first parameter an object (options), or was omitted,
416
- // instantiate a new instance of the plugin.
417
- //
418
- if (options === undefined || typeof options === 'object') {
419
- return this.each(function () {
420
- // Only allow the plugin to be instantiated once,
421
- // so we check that the element has no plugin instantiation yet
422
- if (!$.data(this, 'plugin_' + pluginName)) {
423
- // if it has no instance, create a new one, pass options to the
424
- // plugin constructor, and store the plugin instance in the
425
- // elements jQuery data object.
426
- $.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
427
- }
428
- });
429
- } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
430
- // If the first parameter is a string and it doesn't start
431
- // with an underscore or "contains" the `init`-function,
432
- // treat this as a call to a public method.
433
-
434
- // Cache the method call to make it possible to return a value
435
- var returns;
436
-
437
- this.each(function () {
438
- var instance = $.data(this, 'plugin_' + pluginName);
439
-
440
- // Tests that there's already a plugin-instance
441
- // and checks that the requested public method exists
442
- if (instance instanceof Plugin && typeof instance[options] === 'function') {
443
- // Call the method of our plugin instance,
444
- // and pass it the supplied arguments.
445
- returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
446
- }
447
-
448
- // Allow instances to be destroyed via the 'destroy' method
449
- if (options === 'destroy') {
450
- $.data(this, 'plugin_' + pluginName, null);
451
- }
452
- });
453
-
454
- // If the earlier cached method gives a value back return the value,
455
- // otherwise return "this" to preserve chainability.
456
- return returns !== undefined ? returns : this;
457
- }
458
- }; // END plugin wrapper
459
-
460
- })(jQuery, window, document);