j1-template 2021.2.0 → 2021.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (697) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +6 -6
  3. data/_includes/themes/j1/layouts/layout_metadata_generator.html +6 -1
  4. data/_includes/themes/j1/modules/connectors/translators/google-translator.html +11 -23
  5. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +5 -5
  6. data/_layouts/default.html +36 -26
  7. data/assets/data/cookieconsent.html +43 -33
  8. data/assets/data/msdropdown.json +155 -0
  9. data/assets/data/panel.html +10 -10
  10. data/assets/data/quicklinks.html +25 -4
  11. data/assets/data/translator.html +291 -0
  12. data/assets/data/translator_languages.json +142 -0
  13. data/assets/themes/j1/adapter/js/cookieConsent.js +41 -34
  14. data/assets/themes/j1/adapter/js/fam.js +1 -1
  15. data/assets/themes/j1/adapter/js/j1.js +204 -158
  16. data/assets/themes/j1/adapter/js/navigator.js +11 -4
  17. data/assets/themes/j1/adapter/js/rtable.js +77 -24
  18. data/assets/themes/j1/adapter/js/themer.js +2 -2
  19. data/assets/themes/j1/adapter/js/translator.js +492 -0
  20. data/assets/themes/j1/core/country-flags/1x1/ad.svg +148 -0
  21. data/assets/themes/j1/core/country-flags/1x1/ae.svg +6 -0
  22. data/assets/themes/j1/core/country-flags/1x1/af.svg +81 -0
  23. data/assets/themes/j1/core/country-flags/1x1/ag.svg +14 -0
  24. data/assets/themes/j1/core/country-flags/1x1/ai.svg +763 -0
  25. data/assets/themes/j1/core/country-flags/1x1/al.svg +5 -0
  26. data/assets/themes/j1/core/country-flags/1x1/am.svg +5 -0
  27. data/assets/themes/j1/core/country-flags/1x1/ao.svg +13 -0
  28. data/assets/themes/j1/core/country-flags/1x1/aq.svg +5 -0
  29. data/assets/themes/j1/core/country-flags/1x1/ar.svg +31 -0
  30. data/assets/themes/j1/core/country-flags/1x1/as.svg +33 -0
  31. data/assets/themes/j1/core/country-flags/1x1/at.svg +6 -0
  32. data/assets/themes/j1/core/country-flags/1x1/au.svg +11 -0
  33. data/assets/themes/j1/core/country-flags/1x1/aw.svg +186 -0
  34. data/assets/themes/j1/core/country-flags/1x1/ax.svg +18 -0
  35. data/assets/themes/j1/core/country-flags/1x1/az.svg +8 -0
  36. data/assets/themes/j1/core/country-flags/1x1/ba.svg +12 -0
  37. data/assets/themes/j1/core/country-flags/1x1/bb.svg +6 -0
  38. data/assets/themes/j1/core/country-flags/1x1/bd.svg +4 -0
  39. data/assets/themes/j1/core/country-flags/1x1/be.svg +7 -0
  40. data/assets/themes/j1/core/country-flags/1x1/bf.svg +7 -0
  41. data/assets/themes/j1/core/country-flags/1x1/bg.svg +7 -0
  42. data/assets/themes/j1/core/country-flags/1x1/bh.svg +9 -0
  43. data/assets/themes/j1/core/country-flags/1x1/bi.svg +15 -0
  44. data/assets/themes/j1/core/country-flags/1x1/bj.svg +14 -0
  45. data/assets/themes/j1/core/country-flags/1x1/bl.svg +7 -0
  46. data/assets/themes/j1/core/country-flags/1x1/bm.svg +98 -0
  47. data/assets/themes/j1/core/country-flags/1x1/bn.svg +36 -0
  48. data/assets/themes/j1/core/country-flags/1x1/bo.svg +678 -0
  49. data/assets/themes/j1/core/country-flags/1x1/bq.svg +5 -0
  50. data/assets/themes/j1/core/country-flags/1x1/br.svg +45 -0
  51. data/assets/themes/j1/core/country-flags/1x1/bs.svg +13 -0
  52. data/assets/themes/j1/core/country-flags/1x1/bt.svg +89 -0
  53. data/assets/themes/j1/core/country-flags/1x1/bv.svg +13 -0
  54. data/assets/themes/j1/core/country-flags/1x1/bw.svg +7 -0
  55. data/assets/themes/j1/core/country-flags/1x1/by.svg +22 -0
  56. data/assets/themes/j1/core/country-flags/1x1/bz.svg +145 -0
  57. data/assets/themes/j1/core/country-flags/1x1/ca.svg +4 -0
  58. data/assets/themes/j1/core/country-flags/1x1/cc.svg +19 -0
  59. data/assets/themes/j1/core/country-flags/1x1/cd.svg +12 -0
  60. data/assets/themes/j1/core/country-flags/1x1/cf.svg +15 -0
  61. data/assets/themes/j1/core/country-flags/1x1/cg.svg +12 -0
  62. data/assets/themes/j1/core/country-flags/1x1/ch.svg +9 -0
  63. data/assets/themes/j1/core/country-flags/1x1/ci.svg +7 -0
  64. data/assets/themes/j1/core/country-flags/1x1/ck.svg +11 -0
  65. data/assets/themes/j1/core/country-flags/1x1/cl.svg +13 -0
  66. data/assets/themes/j1/core/country-flags/1x1/cm.svg +15 -0
  67. data/assets/themes/j1/core/country-flags/1x1/cn.svg +11 -0
  68. data/assets/themes/j1/core/country-flags/1x1/co.svg +7 -0
  69. data/assets/themes/j1/core/country-flags/1x1/cr.svg +7 -0
  70. data/assets/themes/j1/core/country-flags/1x1/cu.svg +13 -0
  71. data/assets/themes/j1/core/country-flags/1x1/cv.svg +13 -0
  72. data/assets/themes/j1/core/country-flags/1x1/cw.svg +14 -0
  73. data/assets/themes/j1/core/country-flags/1x1/cx.svg +15 -0
  74. data/assets/themes/j1/core/country-flags/1x1/cy.svg +6 -0
  75. data/assets/themes/j1/core/country-flags/1x1/cz.svg +5 -0
  76. data/assets/themes/j1/core/country-flags/1x1/de.svg +5 -0
  77. data/assets/themes/j1/core/country-flags/1x1/dj.svg +13 -0
  78. data/assets/themes/j1/core/country-flags/1x1/dk.svg +5 -0
  79. data/assets/themes/j1/core/country-flags/1x1/dm.svg +152 -0
  80. data/assets/themes/j1/core/country-flags/1x1/do.svg +6745 -0
  81. data/assets/themes/j1/core/country-flags/1x1/dz.svg +5 -0
  82. data/assets/themes/j1/core/country-flags/1x1/ec.svg +138 -0
  83. data/assets/themes/j1/core/country-flags/1x1/ee.svg +7 -0
  84. data/assets/themes/j1/core/country-flags/1x1/eg.svg +38 -0
  85. data/assets/themes/j1/core/country-flags/1x1/eh.svg +15 -0
  86. data/assets/themes/j1/core/country-flags/1x1/er.svg +13 -0
  87. data/assets/themes/j1/core/country-flags/1x1/es-ca.svg +4 -0
  88. data/assets/themes/j1/core/country-flags/1x1/es-ga.svg +189 -0
  89. data/assets/themes/j1/core/country-flags/1x1/es.svg +547 -0
  90. data/assets/themes/j1/core/country-flags/1x1/et.svg +14 -0
  91. data/assets/themes/j1/core/country-flags/1x1/eu.svg +28 -0
  92. data/assets/themes/j1/core/country-flags/1x1/fi.svg +5 -0
  93. data/assets/themes/j1/core/country-flags/1x1/fj.svg +125 -0
  94. data/assets/themes/j1/core/country-flags/1x1/fk.svg +93 -0
  95. data/assets/themes/j1/core/country-flags/1x1/fm.svg +11 -0
  96. data/assets/themes/j1/core/country-flags/1x1/fo.svg +12 -0
  97. data/assets/themes/j1/core/country-flags/1x1/fr.svg +7 -0
  98. data/assets/themes/j1/core/country-flags/1x1/ga.svg +7 -0
  99. data/assets/themes/j1/core/country-flags/1x1/gb-eng.svg +5 -0
  100. data/assets/themes/j1/core/country-flags/1x1/gb-nir.svg +131 -0
  101. data/assets/themes/j1/core/country-flags/1x1/gb-sct.svg +4 -0
  102. data/assets/themes/j1/core/country-flags/1x1/gb-wls.svg +9 -0
  103. data/assets/themes/j1/core/country-flags/1x1/gb.svg +7 -0
  104. data/assets/themes/j1/core/country-flags/1x1/gd.svg +27 -0
  105. data/assets/themes/j1/core/country-flags/1x1/ge.svg +6 -0
  106. data/assets/themes/j1/core/country-flags/1x1/gf.svg +7 -0
  107. data/assets/themes/j1/core/country-flags/1x1/gg.svg +9 -0
  108. data/assets/themes/j1/core/country-flags/1x1/gh.svg +6 -0
  109. data/assets/themes/j1/core/country-flags/1x1/gi.svg +32 -0
  110. data/assets/themes/j1/core/country-flags/1x1/gl.svg +4 -0
  111. data/assets/themes/j1/core/country-flags/1x1/gm.svg +9 -0
  112. data/assets/themes/j1/core/country-flags/1x1/gn.svg +7 -0
  113. data/assets/themes/j1/core/country-flags/1x1/gp.svg +7 -0
  114. data/assets/themes/j1/core/country-flags/1x1/gq.svg +23 -0
  115. data/assets/themes/j1/core/country-flags/1x1/gr.svg +16 -0
  116. data/assets/themes/j1/core/country-flags/1x1/gs.svg +206 -0
  117. data/assets/themes/j1/core/country-flags/1x1/gt.svg +204 -0
  118. data/assets/themes/j1/core/country-flags/1x1/gu.svg +39 -0
  119. data/assets/themes/j1/core/country-flags/1x1/gw.svg +15 -0
  120. data/assets/themes/j1/core/country-flags/1x1/gy.svg +9 -0
  121. data/assets/themes/j1/core/country-flags/1x1/hk.svg +30 -0
  122. data/assets/themes/j1/core/country-flags/1x1/hm.svg +9 -0
  123. data/assets/themes/j1/core/country-flags/1x1/hn.svg +18 -0
  124. data/assets/themes/j1/core/country-flags/1x1/hr.svg +56 -0
  125. data/assets/themes/j1/core/country-flags/1x1/ht.svg +116 -0
  126. data/assets/themes/j1/core/country-flags/1x1/hu.svg +7 -0
  127. data/assets/themes/j1/core/country-flags/1x1/id.svg +6 -0
  128. data/assets/themes/j1/core/country-flags/1x1/ie.svg +7 -0
  129. data/assets/themes/j1/core/country-flags/1x1/il.svg +14 -0
  130. data/assets/themes/j1/core/country-flags/1x1/im.svg +36 -0
  131. data/assets/themes/j1/core/country-flags/1x1/in.svg +25 -0
  132. data/assets/themes/j1/core/country-flags/1x1/io.svg +140 -0
  133. data/assets/themes/j1/core/country-flags/1x1/iq.svg +10 -0
  134. data/assets/themes/j1/core/country-flags/1x1/ir.svg +219 -0
  135. data/assets/themes/j1/core/country-flags/1x1/is.svg +12 -0
  136. data/assets/themes/j1/core/country-flags/1x1/it.svg +7 -0
  137. data/assets/themes/j1/core/country-flags/1x1/je.svg +29 -0
  138. data/assets/themes/j1/core/country-flags/1x1/jm.svg +8 -0
  139. data/assets/themes/j1/core/country-flags/1x1/jo.svg +16 -0
  140. data/assets/themes/j1/core/country-flags/1x1/jp.svg +11 -0
  141. data/assets/themes/j1/core/country-flags/1x1/ke.svg +23 -0
  142. data/assets/themes/j1/core/country-flags/1x1/kg.svg +15 -0
  143. data/assets/themes/j1/core/country-flags/1x1/kh.svg +61 -0
  144. data/assets/themes/j1/core/country-flags/1x1/ki.svg +36 -0
  145. data/assets/themes/j1/core/country-flags/1x1/km.svg +16 -0
  146. data/assets/themes/j1/core/country-flags/1x1/kn.svg +14 -0
  147. data/assets/themes/j1/core/country-flags/1x1/kp.svg +15 -0
  148. data/assets/themes/j1/core/country-flags/1x1/kr.svg +24 -0
  149. data/assets/themes/j1/core/country-flags/1x1/kw.svg +13 -0
  150. data/assets/themes/j1/core/country-flags/1x1/ky.svg +70 -0
  151. data/assets/themes/j1/core/country-flags/1x1/kz.svg +23 -0
  152. data/assets/themes/j1/core/country-flags/1x1/la.svg +12 -0
  153. data/assets/themes/j1/core/country-flags/1x1/lb.svg +15 -0
  154. data/assets/themes/j1/core/country-flags/1x1/lc.svg +8 -0
  155. data/assets/themes/j1/core/country-flags/1x1/li.svg +43 -0
  156. data/assets/themes/j1/core/country-flags/1x1/lk.svg +22 -0
  157. data/assets/themes/j1/core/country-flags/1x1/lr.svg +14 -0
  158. data/assets/themes/j1/core/country-flags/1x1/ls.svg +8 -0
  159. data/assets/themes/j1/core/country-flags/1x1/lt.svg +7 -0
  160. data/assets/themes/j1/core/country-flags/1x1/lu.svg +5 -0
  161. data/assets/themes/j1/core/country-flags/1x1/lv.svg +6 -0
  162. data/assets/themes/j1/core/country-flags/1x1/ly.svg +13 -0
  163. data/assets/themes/j1/core/country-flags/1x1/ma.svg +4 -0
  164. data/assets/themes/j1/core/country-flags/1x1/mc.svg +6 -0
  165. data/assets/themes/j1/core/country-flags/1x1/md.svg +71 -0
  166. data/assets/themes/j1/core/country-flags/1x1/me.svg +118 -0
  167. data/assets/themes/j1/core/country-flags/1x1/mf.svg +7 -0
  168. data/assets/themes/j1/core/country-flags/1x1/mg.svg +7 -0
  169. data/assets/themes/j1/core/country-flags/1x1/mh.svg +8 -0
  170. data/assets/themes/j1/core/country-flags/1x1/mk.svg +5 -0
  171. data/assets/themes/j1/core/country-flags/1x1/ml.svg +7 -0
  172. data/assets/themes/j1/core/country-flags/1x1/mm.svg +16 -0
  173. data/assets/themes/j1/core/country-flags/1x1/mn.svg +13 -0
  174. data/assets/themes/j1/core/country-flags/1x1/mo.svg +9 -0
  175. data/assets/themes/j1/core/country-flags/1x1/mp.svg +86 -0
  176. data/assets/themes/j1/core/country-flags/1x1/mq.svg +7 -0
  177. data/assets/themes/j1/core/country-flags/1x1/mr.svg +6 -0
  178. data/assets/themes/j1/core/country-flags/1x1/ms.svg +70 -0
  179. data/assets/themes/j1/core/country-flags/1x1/mt.svg +50 -0
  180. data/assets/themes/j1/core/country-flags/1x1/mu.svg +8 -0
  181. data/assets/themes/j1/core/country-flags/1x1/mv.svg +6 -0
  182. data/assets/themes/j1/core/country-flags/1x1/mw.svg +15 -0
  183. data/assets/themes/j1/core/country-flags/1x1/mx.svg +378 -0
  184. data/assets/themes/j1/core/country-flags/1x1/my.svg +15 -0
  185. data/assets/themes/j1/core/country-flags/1x1/mz.svg +21 -0
  186. data/assets/themes/j1/core/country-flags/1x1/na.svg +16 -0
  187. data/assets/themes/j1/core/country-flags/1x1/nc.svg +14 -0
  188. data/assets/themes/j1/core/country-flags/1x1/ne.svg +6 -0
  189. data/assets/themes/j1/core/country-flags/1x1/nf.svg +11 -0
  190. data/assets/themes/j1/core/country-flags/1x1/ng.svg +6 -0
  191. data/assets/themes/j1/core/country-flags/1x1/ni.svg +129 -0
  192. data/assets/themes/j1/core/country-flags/1x1/nl.svg +5 -0
  193. data/assets/themes/j1/core/country-flags/1x1/no.svg +7 -0
  194. data/assets/themes/j1/core/country-flags/1x1/np.svg +19 -0
  195. data/assets/themes/j1/core/country-flags/1x1/nr.svg +12 -0
  196. data/assets/themes/j1/core/country-flags/1x1/nu.svg +26 -0
  197. data/assets/themes/j1/core/country-flags/1x1/nz.svg +41 -0
  198. data/assets/themes/j1/core/country-flags/1x1/om.svg +115 -0
  199. data/assets/themes/j1/core/country-flags/1x1/pa.svg +13 -0
  200. data/assets/themes/j1/core/country-flags/1x1/pe.svg +244 -0
  201. data/assets/themes/j1/core/country-flags/1x1/pf.svg +18 -0
  202. data/assets/themes/j1/core/country-flags/1x1/pg.svg +16 -0
  203. data/assets/themes/j1/core/country-flags/1x1/ph.svg +9 -0
  204. data/assets/themes/j1/core/country-flags/1x1/pk.svg +15 -0
  205. data/assets/themes/j1/core/country-flags/1x1/pl.svg +6 -0
  206. data/assets/themes/j1/core/country-flags/1x1/pm.svg +7 -0
  207. data/assets/themes/j1/core/country-flags/1x1/pn.svg +67 -0
  208. data/assets/themes/j1/core/country-flags/1x1/pr.svg +13 -0
  209. data/assets/themes/j1/core/country-flags/1x1/ps.svg +15 -0
  210. data/assets/themes/j1/core/country-flags/1x1/pt.svg +57 -0
  211. data/assets/themes/j1/core/country-flags/1x1/pw.svg +11 -0
  212. data/assets/themes/j1/core/country-flags/1x1/py.svg +156 -0
  213. data/assets/themes/j1/core/country-flags/1x1/qa.svg +4 -0
  214. data/assets/themes/j1/core/country-flags/1x1/re.svg +7 -0
  215. data/assets/themes/j1/core/country-flags/1x1/ro.svg +7 -0
  216. data/assets/themes/j1/core/country-flags/1x1/rs.svg +296 -0
  217. data/assets/themes/j1/core/country-flags/1x1/ru.svg +7 -0
  218. data/assets/themes/j1/core/country-flags/1x1/rw.svg +13 -0
  219. data/assets/themes/j1/core/country-flags/1x1/sa.svg +26 -0
  220. data/assets/themes/j1/core/country-flags/1x1/sb.svg +13 -0
  221. data/assets/themes/j1/core/country-flags/1x1/sc.svg +14 -0
  222. data/assets/themes/j1/core/country-flags/1x1/sd.svg +13 -0
  223. data/assets/themes/j1/core/country-flags/1x1/se.svg +5 -0
  224. data/assets/themes/j1/core/country-flags/1x1/sg.svg +13 -0
  225. data/assets/themes/j1/core/country-flags/1x1/sh.svg +81 -0
  226. data/assets/themes/j1/core/country-flags/1x1/si.svg +18 -0
  227. data/assets/themes/j1/core/country-flags/1x1/sj.svg +7 -0
  228. data/assets/themes/j1/core/country-flags/1x1/sk.svg +9 -0
  229. data/assets/themes/j1/core/country-flags/1x1/sl.svg +12 -0
  230. data/assets/themes/j1/core/country-flags/1x1/sm.svg +89 -0
  231. data/assets/themes/j1/core/country-flags/1x1/sn.svg +8 -0
  232. data/assets/themes/j1/core/country-flags/1x1/so.svg +11 -0
  233. data/assets/themes/j1/core/country-flags/1x1/sr.svg +6 -0
  234. data/assets/themes/j1/core/country-flags/1x1/ss.svg +8 -0
  235. data/assets/themes/j1/core/country-flags/1x1/st.svg +16 -0
  236. data/assets/themes/j1/core/country-flags/1x1/sv.svg +596 -0
  237. data/assets/themes/j1/core/country-flags/1x1/sx.svg +56 -0
  238. data/assets/themes/j1/core/country-flags/1x1/sy.svg +6 -0
  239. data/assets/themes/j1/core/country-flags/1x1/sz.svg +45 -0
  240. data/assets/themes/j1/core/country-flags/1x1/tc.svg +74 -0
  241. data/assets/themes/j1/core/country-flags/1x1/td.svg +7 -0
  242. data/assets/themes/j1/core/country-flags/1x1/tf.svg +15 -0
  243. data/assets/themes/j1/core/country-flags/1x1/tg.svg +14 -0
  244. data/assets/themes/j1/core/country-flags/1x1/th.svg +7 -0
  245. data/assets/themes/j1/core/country-flags/1x1/tj.svg +26 -0
  246. data/assets/themes/j1/core/country-flags/1x1/tk.svg +5 -0
  247. data/assets/themes/j1/core/country-flags/1x1/tl.svg +13 -0
  248. data/assets/themes/j1/core/country-flags/1x1/tm.svg +203 -0
  249. data/assets/themes/j1/core/country-flags/1x1/tn.svg +13 -0
  250. data/assets/themes/j1/core/country-flags/1x1/to.svg +10 -0
  251. data/assets/themes/j1/core/country-flags/1x1/tr.svg +8 -0
  252. data/assets/themes/j1/core/country-flags/1x1/tt.svg +7 -0
  253. data/assets/themes/j1/core/country-flags/1x1/tv.svg +16 -0
  254. data/assets/themes/j1/core/country-flags/1x1/tw.svg +14 -0
  255. data/assets/themes/j1/core/country-flags/1x1/tz.svg +15 -0
  256. data/assets/themes/j1/core/country-flags/1x1/ua.svg +6 -0
  257. data/assets/themes/j1/core/country-flags/1x1/ug.svg +30 -0
  258. data/assets/themes/j1/core/country-flags/1x1/um.svg +15 -0
  259. data/assets/themes/j1/core/country-flags/1x1/un.svg +16 -0
  260. data/assets/themes/j1/core/country-flags/1x1/us.svg +10 -0
  261. data/assets/themes/j1/core/country-flags/1x1/uy.svg +28 -0
  262. data/assets/themes/j1/core/country-flags/1x1/uz.svg +30 -0
  263. data/assets/themes/j1/core/country-flags/1x1/va.svg +479 -0
  264. data/assets/themes/j1/core/country-flags/1x1/vc.svg +8 -0
  265. data/assets/themes/j1/core/country-flags/1x1/ve.svg +26 -0
  266. data/assets/themes/j1/core/country-flags/1x1/vg.svg +128 -0
  267. data/assets/themes/j1/core/country-flags/1x1/vi.svg +28 -0
  268. data/assets/themes/j1/core/country-flags/1x1/vn.svg +11 -0
  269. data/assets/themes/j1/core/country-flags/1x1/vu.svg +18 -0
  270. data/assets/themes/j1/core/country-flags/1x1/wf.svg +7 -0
  271. data/assets/themes/j1/core/country-flags/1x1/ws.svg +7 -0
  272. data/assets/themes/j1/core/country-flags/1x1/xk.svg +16 -0
  273. data/assets/themes/j1/core/country-flags/1x1/ye.svg +7 -0
  274. data/assets/themes/j1/core/country-flags/1x1/yt.svg +7 -0
  275. data/assets/themes/j1/core/country-flags/1x1/za.svg +17 -0
  276. data/assets/themes/j1/core/country-flags/1x1/zm.svg +27 -0
  277. data/assets/themes/j1/core/country-flags/1x1/zw.svg +21 -0
  278. data/assets/themes/j1/core/country-flags/4x3/ad.svg +150 -0
  279. data/assets/themes/j1/core/country-flags/4x3/ae.svg +6 -0
  280. data/assets/themes/j1/core/country-flags/4x3/af.svg +81 -0
  281. data/assets/themes/j1/core/country-flags/4x3/ag.svg +14 -0
  282. data/assets/themes/j1/core/country-flags/4x3/ai.svg +763 -0
  283. data/assets/themes/j1/core/country-flags/4x3/al.svg +5 -0
  284. data/assets/themes/j1/core/country-flags/4x3/am.svg +5 -0
  285. data/assets/themes/j1/core/country-flags/4x3/ao.svg +13 -0
  286. data/assets/themes/j1/core/country-flags/4x3/aq.svg +5 -0
  287. data/assets/themes/j1/core/country-flags/4x3/ar.svg +31 -0
  288. data/assets/themes/j1/core/country-flags/4x3/as.svg +33 -0
  289. data/assets/themes/j1/core/country-flags/4x3/at.svg +6 -0
  290. data/assets/themes/j1/core/country-flags/4x3/au.svg +9 -0
  291. data/assets/themes/j1/core/country-flags/4x3/aw.svg +186 -0
  292. data/assets/themes/j1/core/country-flags/4x3/ax.svg +18 -0
  293. data/assets/themes/j1/core/country-flags/4x3/az.svg +8 -0
  294. data/assets/themes/j1/core/country-flags/4x3/ba.svg +12 -0
  295. data/assets/themes/j1/core/country-flags/4x3/bb.svg +6 -0
  296. data/assets/themes/j1/core/country-flags/4x3/bd.svg +4 -0
  297. data/assets/themes/j1/core/country-flags/4x3/be.svg +7 -0
  298. data/assets/themes/j1/core/country-flags/4x3/bf.svg +7 -0
  299. data/assets/themes/j1/core/country-flags/4x3/bg.svg +7 -0
  300. data/assets/themes/j1/core/country-flags/4x3/bh.svg +9 -0
  301. data/assets/themes/j1/core/country-flags/4x3/bi.svg +15 -0
  302. data/assets/themes/j1/core/country-flags/4x3/bj.svg +14 -0
  303. data/assets/themes/j1/core/country-flags/4x3/bl.svg +7 -0
  304. data/assets/themes/j1/core/country-flags/4x3/bm.svg +98 -0
  305. data/assets/themes/j1/core/country-flags/4x3/bn.svg +36 -0
  306. data/assets/themes/j1/core/country-flags/4x3/bo.svg +676 -0
  307. data/assets/themes/j1/core/country-flags/4x3/bq.svg +5 -0
  308. data/assets/themes/j1/core/country-flags/4x3/br.svg +45 -0
  309. data/assets/themes/j1/core/country-flags/4x3/bs.svg +13 -0
  310. data/assets/themes/j1/core/country-flags/4x3/bt.svg +89 -0
  311. data/assets/themes/j1/core/country-flags/4x3/bv.svg +13 -0
  312. data/assets/themes/j1/core/country-flags/4x3/bw.svg +7 -0
  313. data/assets/themes/j1/core/country-flags/4x3/by.svg +20 -0
  314. data/assets/themes/j1/core/country-flags/4x3/bz.svg +145 -0
  315. data/assets/themes/j1/core/country-flags/4x3/ca.svg +4 -0
  316. data/assets/themes/j1/core/country-flags/4x3/cc.svg +19 -0
  317. data/assets/themes/j1/core/country-flags/4x3/cd.svg +5 -0
  318. data/assets/themes/j1/core/country-flags/4x3/cf.svg +15 -0
  319. data/assets/themes/j1/core/country-flags/4x3/cg.svg +12 -0
  320. data/assets/themes/j1/core/country-flags/4x3/ch.svg +9 -0
  321. data/assets/themes/j1/core/country-flags/4x3/ci.svg +7 -0
  322. data/assets/themes/j1/core/country-flags/4x3/ck.svg +9 -0
  323. data/assets/themes/j1/core/country-flags/4x3/cl.svg +13 -0
  324. data/assets/themes/j1/core/country-flags/4x3/cm.svg +15 -0
  325. data/assets/themes/j1/core/country-flags/4x3/cn.svg +11 -0
  326. data/assets/themes/j1/core/country-flags/4x3/co.svg +7 -0
  327. data/assets/themes/j1/core/country-flags/4x3/cr.svg +7 -0
  328. data/assets/themes/j1/core/country-flags/4x3/cu.svg +13 -0
  329. data/assets/themes/j1/core/country-flags/4x3/cv.svg +13 -0
  330. data/assets/themes/j1/core/country-flags/4x3/cw.svg +14 -0
  331. data/assets/themes/j1/core/country-flags/4x3/cx.svg +15 -0
  332. data/assets/themes/j1/core/country-flags/4x3/cy.svg +6 -0
  333. data/assets/themes/j1/core/country-flags/4x3/cz.svg +5 -0
  334. data/assets/themes/j1/core/country-flags/4x3/de.svg +5 -0
  335. data/assets/themes/j1/core/country-flags/4x3/dj.svg +13 -0
  336. data/assets/themes/j1/core/country-flags/4x3/dk.svg +5 -0
  337. data/assets/themes/j1/core/country-flags/4x3/dm.svg +152 -0
  338. data/assets/themes/j1/core/country-flags/4x3/do.svg +6745 -0
  339. data/assets/themes/j1/core/country-flags/4x3/dz.svg +5 -0
  340. data/assets/themes/j1/core/country-flags/4x3/ec.svg +138 -0
  341. data/assets/themes/j1/core/country-flags/4x3/ee.svg +7 -0
  342. data/assets/themes/j1/core/country-flags/4x3/eg.svg +38 -0
  343. data/assets/themes/j1/core/country-flags/4x3/eh.svg +15 -0
  344. data/assets/themes/j1/core/country-flags/4x3/er.svg +8 -0
  345. data/assets/themes/j1/core/country-flags/4x3/es-ca.svg +4 -0
  346. data/assets/themes/j1/core/country-flags/4x3/es-ga.svg +189 -0
  347. data/assets/themes/j1/core/country-flags/4x3/es.svg +544 -0
  348. data/assets/themes/j1/core/country-flags/4x3/et.svg +14 -0
  349. data/assets/themes/j1/core/country-flags/4x3/eu.svg +28 -0
  350. data/assets/themes/j1/core/country-flags/4x3/fi.svg +5 -0
  351. data/assets/themes/j1/core/country-flags/4x3/fj.svg +122 -0
  352. data/assets/themes/j1/core/country-flags/4x3/fk.svg +90 -0
  353. data/assets/themes/j1/core/country-flags/4x3/fm.svg +11 -0
  354. data/assets/themes/j1/core/country-flags/4x3/fo.svg +12 -0
  355. data/assets/themes/j1/core/country-flags/4x3/fr.svg +7 -0
  356. data/assets/themes/j1/core/country-flags/4x3/ga.svg +7 -0
  357. data/assets/themes/j1/core/country-flags/4x3/gb-eng.svg +5 -0
  358. data/assets/themes/j1/core/country-flags/4x3/gb-nir.svg +132 -0
  359. data/assets/themes/j1/core/country-flags/4x3/gb-sct.svg +4 -0
  360. data/assets/themes/j1/core/country-flags/4x3/gb-wls.svg +9 -0
  361. data/assets/themes/j1/core/country-flags/4x3/gb.svg +7 -0
  362. data/assets/themes/j1/core/country-flags/4x3/gd.svg +27 -0
  363. data/assets/themes/j1/core/country-flags/4x3/ge.svg +6 -0
  364. data/assets/themes/j1/core/country-flags/4x3/gf.svg +7 -0
  365. data/assets/themes/j1/core/country-flags/4x3/gg.svg +9 -0
  366. data/assets/themes/j1/core/country-flags/4x3/gh.svg +6 -0
  367. data/assets/themes/j1/core/country-flags/4x3/gi.svg +32 -0
  368. data/assets/themes/j1/core/country-flags/4x3/gl.svg +4 -0
  369. data/assets/themes/j1/core/country-flags/4x3/gm.svg +14 -0
  370. data/assets/themes/j1/core/country-flags/4x3/gn.svg +7 -0
  371. data/assets/themes/j1/core/country-flags/4x3/gp.svg +7 -0
  372. data/assets/themes/j1/core/country-flags/4x3/gq.svg +23 -0
  373. data/assets/themes/j1/core/country-flags/4x3/gr.svg +16 -0
  374. data/assets/themes/j1/core/country-flags/4x3/gs.svg +201 -0
  375. data/assets/themes/j1/core/country-flags/4x3/gt.svg +204 -0
  376. data/assets/themes/j1/core/country-flags/4x3/gu.svg +39 -0
  377. data/assets/themes/j1/core/country-flags/4x3/gw.svg +13 -0
  378. data/assets/themes/j1/core/country-flags/4x3/gy.svg +9 -0
  379. data/assets/themes/j1/core/country-flags/4x3/hk.svg +30 -0
  380. data/assets/themes/j1/core/country-flags/4x3/hm.svg +9 -0
  381. data/assets/themes/j1/core/country-flags/4x3/hn.svg +18 -0
  382. data/assets/themes/j1/core/country-flags/4x3/hr.svg +58 -0
  383. data/assets/themes/j1/core/country-flags/4x3/ht.svg +116 -0
  384. data/assets/themes/j1/core/country-flags/4x3/hu.svg +7 -0
  385. data/assets/themes/j1/core/country-flags/4x3/id.svg +6 -0
  386. data/assets/themes/j1/core/country-flags/4x3/ie.svg +7 -0
  387. data/assets/themes/j1/core/country-flags/4x3/il.svg +14 -0
  388. data/assets/themes/j1/core/country-flags/4x3/im.svg +36 -0
  389. data/assets/themes/j1/core/country-flags/4x3/in.svg +25 -0
  390. data/assets/themes/j1/core/country-flags/4x3/io.svg +138 -0
  391. data/assets/themes/j1/core/country-flags/4x3/iq.svg +10 -0
  392. data/assets/themes/j1/core/country-flags/4x3/ir.svg +219 -0
  393. data/assets/themes/j1/core/country-flags/4x3/is.svg +12 -0
  394. data/assets/themes/j1/core/country-flags/4x3/it.svg +7 -0
  395. data/assets/themes/j1/core/country-flags/4x3/je.svg +29 -0
  396. data/assets/themes/j1/core/country-flags/4x3/jm.svg +8 -0
  397. data/assets/themes/j1/core/country-flags/4x3/jo.svg +16 -0
  398. data/assets/themes/j1/core/country-flags/4x3/jp.svg +11 -0
  399. data/assets/themes/j1/core/country-flags/4x3/ke.svg +23 -0
  400. data/assets/themes/j1/core/country-flags/4x3/kg.svg +15 -0
  401. data/assets/themes/j1/core/country-flags/4x3/kh.svg +61 -0
  402. data/assets/themes/j1/core/country-flags/4x3/ki.svg +36 -0
  403. data/assets/themes/j1/core/country-flags/4x3/km.svg +16 -0
  404. data/assets/themes/j1/core/country-flags/4x3/kn.svg +14 -0
  405. data/assets/themes/j1/core/country-flags/4x3/kp.svg +15 -0
  406. data/assets/themes/j1/core/country-flags/4x3/kr.svg +24 -0
  407. data/assets/themes/j1/core/country-flags/4x3/kw.svg +13 -0
  408. data/assets/themes/j1/core/country-flags/4x3/ky.svg +63 -0
  409. data/assets/themes/j1/core/country-flags/4x3/kz.svg +23 -0
  410. data/assets/themes/j1/core/country-flags/4x3/la.svg +12 -0
  411. data/assets/themes/j1/core/country-flags/4x3/lb.svg +15 -0
  412. data/assets/themes/j1/core/country-flags/4x3/lc.svg +8 -0
  413. data/assets/themes/j1/core/country-flags/4x3/li.svg +43 -0
  414. data/assets/themes/j1/core/country-flags/4x3/lk.svg +22 -0
  415. data/assets/themes/j1/core/country-flags/4x3/lr.svg +14 -0
  416. data/assets/themes/j1/core/country-flags/4x3/ls.svg +8 -0
  417. data/assets/themes/j1/core/country-flags/4x3/lt.svg +7 -0
  418. data/assets/themes/j1/core/country-flags/4x3/lu.svg +5 -0
  419. data/assets/themes/j1/core/country-flags/4x3/lv.svg +6 -0
  420. data/assets/themes/j1/core/country-flags/4x3/ly.svg +13 -0
  421. data/assets/themes/j1/core/country-flags/4x3/ma.svg +4 -0
  422. data/assets/themes/j1/core/country-flags/4x3/mc.svg +6 -0
  423. data/assets/themes/j1/core/country-flags/4x3/md.svg +70 -0
  424. data/assets/themes/j1/core/country-flags/4x3/me.svg +116 -0
  425. data/assets/themes/j1/core/country-flags/4x3/mf.svg +7 -0
  426. data/assets/themes/j1/core/country-flags/4x3/mg.svg +7 -0
  427. data/assets/themes/j1/core/country-flags/4x3/mh.svg +7 -0
  428. data/assets/themes/j1/core/country-flags/4x3/mk.svg +5 -0
  429. data/assets/themes/j1/core/country-flags/4x3/ml.svg +7 -0
  430. data/assets/themes/j1/core/country-flags/4x3/mm.svg +16 -0
  431. data/assets/themes/j1/core/country-flags/4x3/mn.svg +13 -0
  432. data/assets/themes/j1/core/country-flags/4x3/mo.svg +9 -0
  433. data/assets/themes/j1/core/country-flags/4x3/mp.svg +86 -0
  434. data/assets/themes/j1/core/country-flags/4x3/mq.svg +7 -0
  435. data/assets/themes/j1/core/country-flags/4x3/mr.svg +6 -0
  436. data/assets/themes/j1/core/country-flags/4x3/ms.svg +78 -0
  437. data/assets/themes/j1/core/country-flags/4x3/mt.svg +49 -0
  438. data/assets/themes/j1/core/country-flags/4x3/mu.svg +8 -0
  439. data/assets/themes/j1/core/country-flags/4x3/mv.svg +6 -0
  440. data/assets/themes/j1/core/country-flags/4x3/mw.svg +10 -0
  441. data/assets/themes/j1/core/country-flags/4x3/mx.svg +382 -0
  442. data/assets/themes/j1/core/country-flags/4x3/my.svg +15 -0
  443. data/assets/themes/j1/core/country-flags/4x3/mz.svg +21 -0
  444. data/assets/themes/j1/core/country-flags/4x3/na.svg +16 -0
  445. data/assets/themes/j1/core/country-flags/4x3/nc.svg +14 -0
  446. data/assets/themes/j1/core/country-flags/4x3/ne.svg +6 -0
  447. data/assets/themes/j1/core/country-flags/4x3/nf.svg +9 -0
  448. data/assets/themes/j1/core/country-flags/4x3/ng.svg +6 -0
  449. data/assets/themes/j1/core/country-flags/4x3/ni.svg +129 -0
  450. data/assets/themes/j1/core/country-flags/4x3/nl.svg +5 -0
  451. data/assets/themes/j1/core/country-flags/4x3/no.svg +7 -0
  452. data/assets/themes/j1/core/country-flags/4x3/np.svg +14 -0
  453. data/assets/themes/j1/core/country-flags/4x3/nr.svg +12 -0
  454. data/assets/themes/j1/core/country-flags/4x3/nu.svg +26 -0
  455. data/assets/themes/j1/core/country-flags/4x3/nz.svg +41 -0
  456. data/assets/themes/j1/core/country-flags/4x3/om.svg +115 -0
  457. data/assets/themes/j1/core/country-flags/4x3/pa.svg +14 -0
  458. data/assets/themes/j1/core/country-flags/4x3/pe.svg +244 -0
  459. data/assets/themes/j1/core/country-flags/4x3/pf.svg +19 -0
  460. data/assets/themes/j1/core/country-flags/4x3/pg.svg +9 -0
  461. data/assets/themes/j1/core/country-flags/4x3/ph.svg +9 -0
  462. data/assets/themes/j1/core/country-flags/4x3/pk.svg +15 -0
  463. data/assets/themes/j1/core/country-flags/4x3/pl.svg +6 -0
  464. data/assets/themes/j1/core/country-flags/4x3/pm.svg +7 -0
  465. data/assets/themes/j1/core/country-flags/4x3/pn.svg +62 -0
  466. data/assets/themes/j1/core/country-flags/4x3/pr.svg +13 -0
  467. data/assets/themes/j1/core/country-flags/4x3/ps.svg +15 -0
  468. data/assets/themes/j1/core/country-flags/4x3/pt.svg +57 -0
  469. data/assets/themes/j1/core/country-flags/4x3/pw.svg +11 -0
  470. data/assets/themes/j1/core/country-flags/4x3/py.svg +157 -0
  471. data/assets/themes/j1/core/country-flags/4x3/qa.svg +4 -0
  472. data/assets/themes/j1/core/country-flags/4x3/re.svg +7 -0
  473. data/assets/themes/j1/core/country-flags/4x3/ro.svg +7 -0
  474. data/assets/themes/j1/core/country-flags/4x3/rs.svg +292 -0
  475. data/assets/themes/j1/core/country-flags/4x3/ru.svg +7 -0
  476. data/assets/themes/j1/core/country-flags/4x3/rw.svg +13 -0
  477. data/assets/themes/j1/core/country-flags/4x3/sa.svg +26 -0
  478. data/assets/themes/j1/core/country-flags/4x3/sb.svg +13 -0
  479. data/assets/themes/j1/core/country-flags/4x3/sc.svg +14 -0
  480. data/assets/themes/j1/core/country-flags/4x3/sd.svg +13 -0
  481. data/assets/themes/j1/core/country-flags/4x3/se.svg +5 -0
  482. data/assets/themes/j1/core/country-flags/4x3/sg.svg +13 -0
  483. data/assets/themes/j1/core/country-flags/4x3/sh.svg +74 -0
  484. data/assets/themes/j1/core/country-flags/4x3/si.svg +18 -0
  485. data/assets/themes/j1/core/country-flags/4x3/sj.svg +7 -0
  486. data/assets/themes/j1/core/country-flags/4x3/sk.svg +9 -0
  487. data/assets/themes/j1/core/country-flags/4x3/sl.svg +7 -0
  488. data/assets/themes/j1/core/country-flags/4x3/sm.svg +91 -0
  489. data/assets/themes/j1/core/country-flags/4x3/sn.svg +8 -0
  490. data/assets/themes/j1/core/country-flags/4x3/so.svg +11 -0
  491. data/assets/themes/j1/core/country-flags/4x3/sr.svg +6 -0
  492. data/assets/themes/j1/core/country-flags/4x3/ss.svg +8 -0
  493. data/assets/themes/j1/core/country-flags/4x3/st.svg +16 -0
  494. data/assets/themes/j1/core/country-flags/4x3/sv.svg +594 -0
  495. data/assets/themes/j1/core/country-flags/4x3/sx.svg +56 -0
  496. data/assets/themes/j1/core/country-flags/4x3/sy.svg +6 -0
  497. data/assets/themes/j1/core/country-flags/4x3/sz.svg +45 -0
  498. data/assets/themes/j1/core/country-flags/4x3/tc.svg +67 -0
  499. data/assets/themes/j1/core/country-flags/4x3/td.svg +7 -0
  500. data/assets/themes/j1/core/country-flags/4x3/tf.svg +15 -0
  501. data/assets/themes/j1/core/country-flags/4x3/tg.svg +14 -0
  502. data/assets/themes/j1/core/country-flags/4x3/th.svg +7 -0
  503. data/assets/themes/j1/core/country-flags/4x3/tj.svg +22 -0
  504. data/assets/themes/j1/core/country-flags/4x3/tk.svg +5 -0
  505. data/assets/themes/j1/core/country-flags/4x3/tl.svg +13 -0
  506. data/assets/themes/j1/core/country-flags/4x3/tm.svg +206 -0
  507. data/assets/themes/j1/core/country-flags/4x3/tn.svg +13 -0
  508. data/assets/themes/j1/core/country-flags/4x3/to.svg +10 -0
  509. data/assets/themes/j1/core/country-flags/4x3/tr.svg +8 -0
  510. data/assets/themes/j1/core/country-flags/4x3/tt.svg +5 -0
  511. data/assets/themes/j1/core/country-flags/4x3/tv.svg +16 -0
  512. data/assets/themes/j1/core/country-flags/4x3/tw.svg +14 -0
  513. data/assets/themes/j1/core/country-flags/4x3/tz.svg +13 -0
  514. data/assets/themes/j1/core/country-flags/4x3/ua.svg +6 -0
  515. data/assets/themes/j1/core/country-flags/4x3/ug.svg +30 -0
  516. data/assets/themes/j1/core/country-flags/4x3/um.svg +15 -0
  517. data/assets/themes/j1/core/country-flags/4x3/un.svg +16 -0
  518. data/assets/themes/j1/core/country-flags/4x3/us.svg +10 -0
  519. data/assets/themes/j1/core/country-flags/4x3/uy.svg +28 -0
  520. data/assets/themes/j1/core/country-flags/4x3/uz.svg +30 -0
  521. data/assets/themes/j1/core/country-flags/4x3/va.svg +479 -0
  522. data/assets/themes/j1/core/country-flags/4x3/vc.svg +8 -0
  523. data/assets/themes/j1/core/country-flags/4x3/ve.svg +26 -0
  524. data/assets/themes/j1/core/country-flags/4x3/vg.svg +127 -0
  525. data/assets/themes/j1/core/country-flags/4x3/vi.svg +28 -0
  526. data/assets/themes/j1/core/country-flags/4x3/vn.svg +11 -0
  527. data/assets/themes/j1/core/country-flags/4x3/vu.svg +18 -0
  528. data/assets/themes/j1/core/country-flags/4x3/wf.svg +7 -0
  529. data/assets/themes/j1/core/country-flags/4x3/ws.svg +7 -0
  530. data/assets/themes/j1/core/country-flags/4x3/xk.svg +16 -0
  531. data/assets/themes/j1/core/country-flags/4x3/ye.svg +7 -0
  532. data/assets/themes/j1/core/country-flags/4x3/yt.svg +7 -0
  533. data/assets/themes/j1/core/country-flags/4x3/za.svg +17 -0
  534. data/assets/themes/j1/core/country-flags/4x3/zm.svg +27 -0
  535. data/assets/themes/j1/core/country-flags/4x3/zw.svg +21 -0
  536. data/assets/themes/j1/core/country-flags/css/theme/uno.css +73 -0
  537. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.css +58 -109
  538. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.min.css +1 -1
  539. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +30 -21
  540. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +1 -1
  541. data/assets/themes/j1/core/css/vendor.css +1407 -20
  542. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  543. data/assets/themes/j1/core/js/template.js +8502 -10
  544. data/assets/themes/j1/core/js/template.min.js +16 -7
  545. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  546. data/assets/themes/j1/modules/carousel/css/theme/uno.css +1 -1
  547. data/assets/themes/j1/modules/carousel/css/theme/uno.min.css +1 -1
  548. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +49 -42
  549. data/assets/themes/j1/modules/j1Deepl/js/j1deepl.js +388 -0
  550. data/assets/themes/j1/modules/j1Deepl/js/j1deepl.min.js +18 -0
  551. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +257 -240
  552. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js +1 -2
  553. data/assets/themes/j1/modules/justifiedGallery/css/theme/uno.css +1 -1
  554. data/assets/themes/j1/modules/justifiedGallery/css/theme/uno.min.css +1 -1
  555. data/assets/themes/j1/modules/msDropdown/css/flags.css +1033 -0
  556. data/assets/themes/j1/modules/msDropdown/css/flags.min.css +23 -0
  557. data/assets/themes/j1/modules/msDropdown/css/msDropdown.css +278 -0
  558. data/assets/themes/j1/modules/msDropdown/css/msDropdown.min.css +34 -0
  559. data/assets/themes/j1/modules/msDropdown/images/icons/1273404841_tick_16.png +0 -0
  560. data/assets/themes/j1/modules/msDropdown/images/icons/Amex-56.png +0 -0
  561. data/assets/themes/j1/modules/msDropdown/images/icons/Cash-56.png +0 -0
  562. data/assets/themes/j1/modules/msDropdown/images/icons/Discover-56.png +0 -0
  563. data/assets/themes/j1/modules/msDropdown/images/icons/Mastercard-56.png +0 -0
  564. data/assets/themes/j1/modules/msDropdown/images/icons/Paypal-56.png +0 -0
  565. data/assets/themes/j1/modules/msDropdown/images/icons/Visa-56.png +0 -0
  566. data/assets/themes/j1/modules/msDropdown/images/icons/blank.gif +0 -0
  567. data/assets/themes/j1/modules/msDropdown/images/icons/browser-chrome.png +0 -0
  568. data/assets/themes/j1/modules/msDropdown/images/icons/browser-firefox.png +0 -0
  569. data/assets/themes/j1/modules/msDropdown/images/icons/browser-msie.png +0 -0
  570. data/assets/themes/j1/modules/msDropdown/images/icons/browser-opera.png +0 -0
  571. data/assets/themes/j1/modules/msDropdown/images/icons/browser-safari.png +0 -0
  572. data/assets/themes/j1/modules/msDropdown/images/icons/button-large.gif +0 -0
  573. data/assets/themes/j1/modules/msDropdown/images/icons/demoaction.jpg +0 -0
  574. data/assets/themes/j1/modules/msDropdown/images/icons/enabled.gif +0 -0
  575. data/assets/themes/j1/modules/msDropdown/images/icons/flagssprite_small.png +0 -0
  576. data/assets/themes/j1/modules/msDropdown/images/icons/giftlelo_dot_com.jpg +0 -0
  577. data/assets/themes/j1/modules/msDropdown/images/icons/icon-search.gif +0 -0
  578. data/assets/themes/j1/modules/msDropdown/images/icons/icon_calendar.gif +0 -0
  579. data/assets/themes/j1/modules/msDropdown/images/icons/icon_cart.gif +0 -0
  580. data/assets/themes/j1/modules/msDropdown/images/icons/icon_cd.gif +0 -0
  581. data/assets/themes/j1/modules/msDropdown/images/icons/icon_email.gif +0 -0
  582. data/assets/themes/j1/modules/msDropdown/images/icons/icon_faq.gif +0 -0
  583. data/assets/themes/j1/modules/msDropdown/images/icons/icon_games.gif +0 -0
  584. data/assets/themes/j1/modules/msDropdown/images/icons/icon_lockopen.gif +0 -0
  585. data/assets/themes/j1/modules/msDropdown/images/icons/icon_music.gif +0 -0
  586. data/assets/themes/j1/modules/msDropdown/images/icons/icon_phone.gif +0 -0
  587. data/assets/themes/j1/modules/msDropdown/images/icons/icon_sales.gif +0 -0
  588. data/assets/themes/j1/modules/msDropdown/images/icons/icon_secure.gif +0 -0
  589. data/assets/themes/j1/modules/msDropdown/images/icons/icon_video.gif +0 -0
  590. data/assets/themes/j1/modules/msDropdown/images/icons/jquery-msdropdown.gif +0 -0
  591. data/assets/themes/j1/modules/msDropdown/images/icons/msDropDown.gif +0 -0
  592. data/assets/themes/j1/modules/msDropdown/images/icons/preview.gif +0 -0
  593. data/assets/themes/j1/modules/msDropdown/images/icons/sprite.gif +0 -0
  594. data/assets/themes/j1/modules/msDropdown/images/icons/sprite.jpg +0 -0
  595. data/assets/themes/j1/modules/msDropdown/images/icons/tick.gif +0 -0
  596. data/assets/themes/j1/modules/msDropdown/js/msDropdown.js +2664 -0
  597. data/assets/themes/j1/modules/msDropdown/js/msDropdown.min.js +33 -0
  598. data/assets/themes/j1/modules/msDropdown/js/msDropdown.min.js.map +1 -0
  599. data/assets/themes/j1/modules/rtable/css/theme/uno/rtable.css +3 -3
  600. data/assets/themes/j1/modules/rtable/css/theme/uno/rtable.min.css +2 -174
  601. data/assets/themes/j1/modules/rtable/js/rtable.js +59 -25
  602. data/assets/themes/j1/modules/rtable/js/rtable.min.js +12 -683
  603. data/assets/themes/j1/modules/translator/css/translator.css +33 -0
  604. data/assets/themes/j1/modules/translator/css/translator.min.css +15 -0
  605. data/assets/themes/j1/modules/translator/js/translator.js +614 -0
  606. data/assets/themes/j1/modules/translator/js/translator.min.js +15 -0
  607. data/lib/j1/version.rb +1 -1
  608. data/lib/starter_web/Gemfile +1 -1
  609. data/lib/starter_web/_config.yml +13 -49
  610. data/lib/starter_web/_data/j1_config.yml +4 -7
  611. data/lib/starter_web/_data/layouts/collection.yml +1 -12
  612. data/lib/starter_web/_data/layouts/home.yml +0 -12
  613. data/lib/starter_web/_data/layouts/post.yml +0 -11
  614. data/lib/starter_web/_data/modules/cookieconsent.yml +1 -1
  615. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +100 -90
  616. data/lib/starter_web/_data/modules/defaults/navigator.yml +1 -0
  617. data/lib/starter_web/_data/modules/defaults/rtable.yml +34 -0
  618. data/lib/starter_web/_data/modules/defaults/translator.yml +142 -0
  619. data/lib/starter_web/_data/modules/navigator_menu.yml +3 -3
  620. data/lib/starter_web/_data/modules/rtable.yml +34 -0
  621. data/lib/starter_web/_data/modules/translator.yml +31 -0
  622. data/lib/starter_web/_data/resources.yml +126 -101
  623. data/lib/starter_web/_includes/attributes.asciidoc +12 -2
  624. data/lib/starter_web/_plugins/asciidoctor-extensions/flag-icon-inline.rb +37 -0
  625. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  626. data/lib/starter_web/assets/images/modules/attics/markus-krisetya-1920x1280.jpg +0 -0
  627. data/lib/starter_web/assets/images/modules/attics/vladislav-klapin-1920x1280.jpg +0 -0
  628. data/lib/starter_web/assets/images/modules/attics/vladislav-klapin-2-1920x1280.jpg +0 -0
  629. data/lib/starter_web/assets/images/pages/features/percentage_global_mobile_tr.jpg +0 -0
  630. data/lib/starter_web/package.json +2 -2
  631. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +0 -1
  632. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +0 -8
  633. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +3 -2
  634. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +1 -1
  635. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +1 -1
  636. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +4 -27
  637. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +5 -27
  638. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +0 -20
  639. data/lib/starter_web/pages/public/blog/navigator/archive.html +5 -27
  640. data/lib/starter_web/pages/public/learn/quickstart.adoc +0 -1
  641. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +1 -1
  642. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +7 -3
  643. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +3 -1
  644. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +30 -28
  645. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +112 -10
  646. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +8 -5
  647. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +4 -2
  648. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +6 -8
  649. data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +1 -2
  650. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +42 -43
  651. data/lib/starter_web/pages/public/learn/where_to_go.adoc +15 -15
  652. data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +0 -1
  653. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +0 -2
  654. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +0 -1
  655. data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +0 -1
  656. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +0 -3
  657. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +0 -3
  658. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +0 -2
  659. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +1 -2
  660. data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +743 -0
  661. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +2 -0
  662. data/lib/starter_web/pages/public/previewer/{bootstrap_theme.adoc → preview_bootstrap_theme.adoc} +2 -3
  663. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  664. data/lib/starter_web/utilsrv/package.json +1 -1
  665. metadata +584 -35
  666. data/assets/themes/j1/core/js/template.js.map +0 -1
  667. data/assets/themes/j1/modules/rtable/js/tablesaw-init.js +0 -18
  668. data/assets/themes/j1/modules/rtable/js/tablesaw.stackonly.js +0 -2371
  669. data/lib/starter_web/pages/public/previewer/_includes/attributes.asciidoc +0 -60
  670. data/lib/starter_web/pages/public/previewer/_includes/documents/licenses/mit.asciidoc +0 -19
  671. data/lib/starter_web/pages/public/previewer/_includes/documents/readme +0 -0
  672. data/lib/starter_web/pages/public/previewer/_includes/documents/rouge/100_language_examples.asciidoc +0 -119
  673. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/100_absolute_sizes.asciidoc +0 -39
  674. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/110_bs_grid_sizes.asciidoc +0 -47
  675. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/120_relative_sizes.asciidoc +0 -47
  676. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/200_rotate.asciidoc +0 -71
  677. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/300_flip.asciidoc +0 -31
  678. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/400_spin_pulsed.asciidoc +0 -39
  679. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/500_bw_color_palette.asciidoc +0 -61
  680. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/510_bs_color_palette.asciidoc +0 -55
  681. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/600_md_color_palette.asciidoc +0 -95
  682. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/601_md_color_palette_indigo.asciidoc +0 -95
  683. data/lib/starter_web/pages/public/previewer/_includes/tables/mdi_icons/602_md_color_palette_pink.asciidoc +0 -95
  684. data/lib/starter_web/pages/public/previewer/_includes/tables/rouge/200_rouge_attributes.asciidoc +0 -41
  685. data/lib/starter_web/pages/public/previewer/_includes/tables/rouge/300_supported_languages.asciidoc +0 -857
  686. data/lib/starter_web/pages/public/previewer/_includes/tables/twitter_emoji/100_bs_sizes.asciidoc +0 -47
  687. data/lib/starter_web/pages/public/previewer/_includes/tables/twitter_emoji/100_relative_sizes.asciidoc +0 -47
  688. data/lib/starter_web/pages/public/previewer/_includes/tables/twitter_emoji/200_rotate.asciidoc +0 -71
  689. data/lib/starter_web/pages/public/previewer/_includes/tables/twitter_emoji/300_flip.asciidoc +0 -30
  690. data/lib/starter_web/pages/public/previewer/_includes/tables/twitter_emoji/400_spin_pulsed.asciidoc +0 -31
  691. data/lib/starter_web/pages/public/previewer/iframer.adoc +0 -93
  692. data/lib/starter_web/pages/public/previewer/justified_gallery.html +0 -41
  693. data/lib/starter_web/pages/public/previewer/md_color_palette.adoc +0 -574
  694. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +0 -220
  695. data/lib/starter_web/pages/public/previewer/mdil_icons_preview.adoc +0 -76
  696. data/lib/starter_web/pages/public/previewer/rouge.adoc +0 -133
  697. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +0 -191
@@ -51,7 +51,7 @@ padding-left: 1px;
51
51
  }
52
52
 
53
53
  .slider-title {
54
- color: #212121;
54
+ /* color: #424242; */
55
55
  line-height: 1.25rem;
56
56
  font-size: 1.125rem;
57
57
  font-weight: 500;
@@ -12,4 +12,4 @@
12
12
  # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
13
  # -----------------------------------------------------------------------------
14
14
  */
15
- .j1-owl-gutter.row{margin-right:0;margin-left:0}.j1-owl-gutter>[class^="col-"],.j1-owl-gutter>[class^=" col-"]{padding-right:0;padding-left:0}.j1-owl-gutter-2.row{margin-right:-1px;margin-left:-1px}.j1-owl-gutter-2>[class^="col-"],.j1-owl-gutter-2>[class^=" col-"]{padding-right:1px;padding-left:1px}.owl-carousel .item p{margin:3px}.owl-carousel .item img{opacity:1;width:100%;height:auto}.slider-title{color:#212121;line-height:1.25rem;font-size:1.125rem;font-weight:500;margin-bottom:.5rem}.owl-item .carousel-caption{opacity:0;position:absolute;bottom:3px;left:3px;right:3px;color:white;font-size:1rem;font-weight:300;font-family:sans-serif;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.owl-item .carousel-caption:hover{opacity:1;-webkit-transition:opacity 500ms;-moz-transition:opacity 500ms;-o-transition:opacity 500ms;transition:opacity 500ms;background:rgba(0,0,0,0.5)}span.carousel-caption a{color:#fff;text-decoration:none}.owl-btn{color:#777;cursor:pointer;font-size:18px;padding:2px 9px;text-align:center;background:#f5f5f5}.owl-btn:hover{color:#fff;background:#72c02c}.owl-theme .owl-controls{margin-top:10px;text-align:center}.owl-theme .owl-controls .owl-buttons div{color:#212121;display:inline-block;zoom:1;margin:5px;padding:3px 10px;font-size:12px;font-weight:500;-webkit-border-radius:30px;-moz-border-radius:30px;background:#2196f3}.owl-theme .owl-controls.clickable .owl-buttons div:hover{opacity:1;text-decoration:none}.owl-theme .owl-controls .owl-page{display:inline-block;zoom:1}.owl-theme .owl-controls .owl-page span{display:block;width:1.25rem;height:1.25rem;margin:5px 7px;filter:Alpha(Opacity=50);opacity:.5;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background:#2196f3}.owl-theme .owl-controls .owl-page.active span,.owl-theme .owl-controls.clickable .owl-page:hover span{opacity:1}.owl-theme .owl-controls .owl-page span.owl-numbers{height:auto;width:auto;color:#FFF;padding:2px 10px;font-size:12px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px}.owl-item.loading{min-height:150px;background:url(../../images/ajax-loader.gif) no-repeat center center}.owl-carousel .item{height:44vh;background-color:#fff;background-position:center 55%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.owl-carousel .container{display:table;height:inherit}.owl-carousel .caption{display:table-cell}.owl-carousel .caption h1,.owl-carousel .caption p,.owl-carousel .caption div{position:relative}.owl-carousel .caption h1 span{padding:.25em 0;line-height:180%}
15
+ .j1-owl-gutter.row{margin-right:0;margin-left:0}.j1-owl-gutter>[class^="col-"],.j1-owl-gutter>[class^=" col-"]{padding-right:0;padding-left:0}.j1-owl-gutter-2.row{margin-right:-1px;margin-left:-1px}.j1-owl-gutter-2>[class^="col-"],.j1-owl-gutter-2>[class^=" col-"]{padding-right:1px;padding-left:1px}.owl-carousel .item p{margin:3px}.owl-carousel .item img{opacity:1;width:100%;height:auto}.slider-title{line-height:1.25rem;font-size:1.125rem;font-weight:500;margin-bottom:.5rem}.owl-btn{color:#777;cursor:pointer;font-size:18px;padding:2px 9px;text-align:center;background:#f5f5f5}.owl-btn:hover{color:#fff;background:#72c02c}.owl-theme .owl-controls{margin-top:10px;text-align:center}.owl-theme .owl-controls .owl-buttons div{color:#212121;display:inline-block;zoom:1;margin:5px;padding:3px 10px;font-size:12px;font-weight:500;-webkit-border-radius:30px;-moz-border-radius:30px;background:#2196f3}.owl-theme .owl-controls.clickable .owl-buttons div:hover{opacity:1;text-decoration:none}.owl-theme .owl-controls .owl-page{display:inline-block;zoom:1}.owl-theme .owl-controls .owl-page span{display:block;width:1.25rem;height:1.25rem;margin:5px 7px;filter:Alpha(Opacity=50);opacity:.5;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background:#2196f3}.owl-theme .owl-controls .owl-page.active span,.owl-theme .owl-controls.clickable .owl-page:hover span{opacity:1}.owl-theme .owl-controls .owl-page span.owl-numbers{height:auto;width:auto;color:#FFF;padding:2px 10px;font-size:12px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px}.owl-item.loading{min-height:150px;background:url(../../images/ajax-loader.gif) no-repeat center center}.owl-carousel .container{display:table;height:inherit}.owl-carousel .caption{display:table-cell}.owl-carousel .caption h1,.owl-carousel .caption p,.owl-carousel .caption div{position:relative;margin-top:2rem;margin-right:2rem;margin-left:2rem}.owl-carousel .caption h1 span{padding:.25em 0;line-height:180%}.owl-item .carousel-caption{opacity:0;position:absolute;bottom:3px;left:3px;right:3px;color:white;font-size:1rem;font-weight:300;font-family:sans-serif;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.owl-item .carousel-caption:hover{opacity:1;-webkit-transition:opacity 500ms;-moz-transition:opacity 500ms;-o-transition:opacity 500ms;transition:opacity 500ms;background:rgba(0,0,0,0.5)}span.carousel-caption a{color:#fff;text-decoration:none}
@@ -24,7 +24,7 @@
24
24
  # outside of J1 Template!
25
25
  # -----------------------------------------------------------------------------
26
26
  */
27
- 'use strict';
27
+ //'use strict';
28
28
 
29
29
  // -----------------------------------------------------------------------------
30
30
  // ESLint shimming
@@ -39,11 +39,10 @@
39
39
 
40
40
  function BootstrapCookieConsent(props) {
41
41
  var logger = log4javascript.getLogger('j1.core.bsCookieConsent');
42
- var modalId = 'bccs-modal';
43
42
  var self = this;
44
43
  var detailedSettingsShown = false;
45
44
  var url = new liteURL(window.location.href);
46
- var secure = (url.protocol.includes('https')) ? true : false;
45
+ var cookieSecure = (url.protocol.includes('https')) ? true : false;
47
46
  var logText;
48
47
  var current_page;
49
48
  var whitelisted;
@@ -51,35 +50,43 @@ function BootstrapCookieConsent(props) {
51
50
  logger.info('\n' + 'initializing core module: started');
52
51
  logger.info('\n' + 'state: started');
53
52
 
53
+ // default settings
54
54
  this.props = {
55
- autoShowDialog: true, // disable autoShowModal on the privacy policy and legal notice pages, to make these pages readable
56
- language: navigator.language, // the language, in which the modal is shown
57
- languages: ["en", "de"], // supported languages (in ./content/), defaults to first in array
58
- contentURL: "./content", // this URL must contain the dialogs content in the needed languages
59
- cookieName: "cookie-consent-settings", // the name of the cookie in which the configuration is stored as JSON
60
- cookieStorageDays: 365, // the duration the cookie configuration is stored on the client
55
+ autoShowDialog: true, // show dialog if NO consent cookie found
56
+ dialogLanguage: 'content', // language used for the consent dialog (modal)
57
+ dialogLanguages: ['en','de'], // supported languages for the consent dialog (modal), defaults to first in array
58
+ contentURL: '/assets/data/cookieconsent', // URL contain the consent dialogs (modals) for ALL supported languages
59
+ cookieName: 'j1.user.translate', // name of the cookie, in which the configuration is stored
60
+ cookieStorageDays: 365, // duration the configuration cookie is stored on the client
61
61
  postSelectionCallback: undefined, // callback function, called after the user has made his selection
62
- whitelisted: [], // pages NO consent modal page is issued
63
- xhr_data_element: "", // container for the language-specific consent modal taken from /assets/data/cookieconsent.html
64
- sameSite: "Strict", // restrict consent cookie to first-party, do NOT send cookie to other domains
65
- secure: false //
66
- }
62
+ whitelisted: [], // pages NO consent modal dialog is issued
63
+ xhrDataElement: 'consent-data', // src container for all language-specific consent dialogs (taken from contentURL)
64
+ dialogContainerID: 'consent-modal', // dest container, the dialog modal is loaded (dynamically)
65
+ cookieSameSite: 'Strict', // restrict the consent cookie to first-party (do NOT send cookie to other domains)
66
+ };
67
67
 
68
+ // merge property settings
68
69
  for (var property in props) {
69
70
  this.props[property] = props[property];
70
71
  }
71
72
 
72
- this.language = this.props.language
73
- if (this.language.indexOf("-") !== -1) {
74
- this.language = this.language.split("-")[0];
73
+ if (this.props.dialogLanguage.indexOf("-") !== -1) {
74
+ this.props.dialogLanguage = this.props.dialogLanguage.split("-")[0];
75
75
  }
76
76
 
77
- if (!this.props.languages.includes(this.language)) {
78
- this.language = this.props.languages[0]; // fallback on default language
77
+ // fallback on default language (modal) if dialogLanguage not suppported
78
+ if (!this.props.dialogLanguages.includes(this.props.dialogLanguage)) {
79
+ this.props.dialogLanguage = this.props.dialogLanguages[0];
79
80
  }
80
81
 
82
+ // set modal by dialogLanguage that is loadad
83
+ this.props.xhrDataElement = this.props.xhrDataElement + '-' + this.props.dialogLanguage;
84
+
85
+ // set modal by dialogLanguage that is loadad
86
+ this.props.cookieSecure = cookieSecure;
87
+
81
88
  var Cookie = {
82
- set: function (name, value, days, samesite, secure) {
89
+ set: function (name, value, days, cookieSameSite, cookieSecure) {
83
90
  var value_encoded = window.btoa(value);
84
91
  var expires = "";
85
92
  if (days) {
@@ -87,10 +94,10 @@ function BootstrapCookieConsent(props) {
87
94
  date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
88
95
  expires = "; expires=" + date.toUTCString();
89
96
  }
90
- if (secure) {
91
- document.cookie = name + "=" + (value_encoded || '') + expires + '; Path=/; SameSite=' + samesite + '; ' + 'secure=' + secure + ';';
97
+ if (cookieSecure) {
98
+ document.cookie = name + "=" + (value_encoded || '') + expires + '; Path=/; cookieSameSite=' + cookieSameSite + '; ' + 'cookieSecure=' + cookieSecure + ';';
92
99
  } else {
93
- document.cookie = name + "=" + (value_encoded || '') + expires + '; Path=/; SameSite=' + samesite + ';';
100
+ document.cookie = name + "=" + (value_encoded || '') + expires + '; Path=/; cookieSameSite=' + cookieSameSite + ';';
94
101
  }
95
102
  },
96
103
  get: function (name) {
@@ -107,9 +114,9 @@ function BootstrapCookieConsent(props) {
107
114
  return value;
108
115
  }
109
116
  }
110
- return undefined
117
+ return undefined;
111
118
  }
112
- }
119
+ };
113
120
 
114
121
  var Events = {
115
122
  documentReady: function (onDocumentReady) {
@@ -119,20 +126,20 @@ function BootstrapCookieConsent(props) {
119
126
  document.addEventListener('DOMContentLoaded', onDocumentReady);
120
127
  }
121
128
  }
122
- }
129
+ };
123
130
 
124
131
  function showDialog(options) {
125
132
  Events.documentReady(function () {
126
133
 
127
- self.modal = document.getElementById(modalId);
134
+ self.modal = document.getElementById(self.props.dialogContainerID);
128
135
  if (!self.modal) {
129
136
  logger.info('\n' + 'load consent modal');
130
137
  self.modal = document.createElement("div");
131
- self.modal.id = modalId;
138
+ self.modal.id = self.props.dialogContainerID;
132
139
  self.modal.setAttribute("class", "modal fade");
133
140
  self.modal.setAttribute("tabindex", "-1");
134
141
  self.modal.setAttribute("role", "dialog");
135
- self.modal.setAttribute("aria-labelledby", modalId);
142
+ self.modal.setAttribute("aria-labelledby", self.props.dialogContainerID);
136
143
  document.body.append(self.modal);
137
144
  self.$modal = $(self.modal);
138
145
 
@@ -149,7 +156,7 @@ function BootstrapCookieConsent(props) {
149
156
  .done(function (data) {
150
157
  logger.info('\n' + 'loading consent modal: successfully');
151
158
  self.modal.innerHTML = data;
152
- self.modal.innerHTML = $('#' + self.props.xhr_data_element).eq(0).html();
159
+ self.modal.innerHTML = $('#' + self.props.xhrDataElement).eq(0).html();
153
160
 
154
161
  $(self.modal).modal({
155
162
  backdrop: "static",
@@ -196,11 +203,11 @@ function BootstrapCookieConsent(props) {
196
203
  .fail(function () {
197
204
  logger.error('\n' + 'loading consent modal: failed');
198
205
  logger.warn('\n' + 'probably no `contentURL` set');
199
- })
206
+ });
200
207
  } else {
201
- self.$modal.modal("show")
208
+ self.$modal.modal('show');
202
209
  }
203
- }.bind(this))
210
+ }.bind(this));
204
211
  }
205
212
 
206
213
  function updateOptionsFromCookie() {
@@ -242,16 +249,16 @@ function BootstrapCookieConsent(props) {
242
249
  options[name] = !!setAllExceptNecessary;
243
250
  }
244
251
  }
245
- return options
252
+ return options;
246
253
  }
247
254
 
248
255
  function agreeAll() {
249
- Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(true)), self.props.cookieStorageDays, self.props.sameSite, self.props.secure);
250
- self.$modal.modal("hide");
256
+ Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(true)), self.props.cookieStorageDays, self.props.cookieSameSite, self.props.cookieSecure);
257
+ self.$modal.modal('hide');
251
258
  }
252
259
 
253
260
  function doNotAgree() {
254
- Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(false)), self.props.cookieStorageDays, self.props.sameSite, self.props.secure);
261
+ Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(false)), self.props.cookieStorageDays, self.props.cookieSameSite, self.props.cookieSecure);
255
262
 
256
263
  // jadams, 2021-07-15: all cookies NOT longer supported by j1.expireCookie
257
264
  // TODO: Create loop over all cookies found in page
@@ -259,13 +266,13 @@ function BootstrapCookieConsent(props) {
259
266
  // logger.warn('expire all cookies');
260
267
  // j1.expireCookie('all');
261
268
 
262
- self.$modal.modal('hide')
269
+ self.$modal.modal('hide');
263
270
  j1.goHome();
264
271
  }
265
272
 
266
273
  function saveSettings() {
267
- Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions()), self.props.cookieStorageDays, self.props.sameSite, self.props.secure);
268
- self.$modal.modal("hide");
274
+ Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions()), self.props.cookieStorageDays, self.props.cookieSameSite, self.props.cookieSecure);
275
+ self.$modal.modal('hide');
269
276
  }
270
277
 
271
278
  // call consent dialog if no cookie found (except pages whitelisted)
@@ -288,7 +295,7 @@ function BootstrapCookieConsent(props) {
288
295
  if (!whitelisted) {
289
296
  showDialog();
290
297
  }
291
- }
298
+ };
292
299
 
293
300
  // collect settings from consent cookie
294
301
  // ---------------------------------------------------------------------------
@@ -308,6 +315,6 @@ function BootstrapCookieConsent(props) {
308
315
  } else {
309
316
  return undefined;
310
317
  }
311
- } // END getSettings
318
+ }; // END getSettings
312
319
 
313
320
  } // END BootstrapCookieConsent
@@ -0,0 +1,388 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/j1Deepl/js/j1deepl.js
4
+ # J1 core module for j1Deepl
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2021 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # For details, see https://jekyll.one
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 = 'j1deepl',
29
+ defaults = {
30
+ api: 'free', // free (default) | pro
31
+ auth_key: false, // 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 the plugin
67
+ // -----------------------------------------------------------------------
68
+ init: function(options) {
69
+ var logger = log4javascript.getLogger('j1deepl.init');
70
+
71
+ logger.info('\n' + 'initializing plugin: started');
72
+ this.translate(options);
73
+ logger.info('\n' + 'initializing plugin: finished');
74
+ },
75
+
76
+ // -----------------------------------------------------------------------
77
+ // prepareXHR
78
+ // Prepare a XHR request according to DeepL API specification
79
+ // for the required HTTP header settings
80
+ // See: https://www.deepl.com/de/docs-api/simulator/
81
+ // -----------------------------------------------------------------------
82
+ // NOTE: "User-Agent" NOT used as the use is qualified UNSECURE
83
+ // -----------------------------------------------------------------------
84
+ prepareXHR: function (settings) {
85
+ if (settings.api === 'free') {
86
+ this.xhr.open("POST", "https://api-free.deepl.com/v2/translate", true);
87
+ } else if (settings.api === 'pro') {
88
+ this.xhr.open("POST", "https://api.deepl.com/v2/translate", true);
89
+ } else {
90
+ this.xhr.open("POST", "https://api-free.deepl.com/v2/translate", true);
91
+ }
92
+ // Set required header parameters
93
+ this.xhr.setRequestHeader("Accept", "*/*");
94
+ this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
95
+ },
96
+
97
+ // -----------------------------------------------------------------------
98
+ // prepareText
99
+ // Prepare text function used to parse, or arrange text, designed as
100
+ // a module. Currently it splits all text whenever a newline ("\n")
101
+ // is met, so that it preserves the original layout of the text, which
102
+ // would have otherwise been lost because of the way DeepL accepts
103
+ // multiple sentences.
104
+ // -----------------------------------------------------------------------
105
+ prepareText: function (source_text) {
106
+ return source_text.split("\n");
107
+ },
108
+
109
+ // -----------------------------------------------------------------------
110
+ // translate
111
+ // Translate text function which uses all the other modules, in order to
112
+ // create a request, which is sent to the DeepL API to translate, and
113
+ // then display the result, designed as a module.
114
+ // -----------------------------------------------------------------------
115
+ translate: function (settings) {
116
+ const logger = log4javascript.getLogger('j1deepl.translate');
117
+ const READYSTATE_DONE = 4;
118
+ const STATUS_OK = 200;
119
+ 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'];
120
+ const ALLOWED_FORMALITY_LANG = ['DE', 'FR', 'IT', 'ES', 'NL', 'PL', 'PT', 'PT-BR', 'RU'];
121
+ const ALLOWED_TAG_HANDLING = ['xml'];
122
+ const TARGET_ELEMENT = settings.targetElement;
123
+ const TARGET_ELEMENT_EXISTS = $(TARGET_ELEMENT).length;
124
+ const ERROR_TEXT = 'Translation failed.' + '\n' + 'Reason: ';
125
+ const WARNING_TEXT = 'Translation skipped.' + '\n' + 'Reason: ';
126
+
127
+ var BASE_TARGET_ELEMENT;
128
+ var ELEMENT_TYPE;
129
+ var SOURCE_TEXT_FOUND;
130
+
131
+ var API_RESPONSE = {};
132
+ API_RESPONSE['400'] = 'Bad request. Please check error message and your parameters.';
133
+ API_RESPONSE['401'] = 'Authorization failed. Please supply a valid DeepL-Auth-Key.';
134
+ API_RESPONSE['403'] = 'Forbidden. The access to the requested resource is denied, because of insufficient access rights.';
135
+ API_RESPONSE['404'] = 'The requested resource could not be found.';
136
+ API_RESPONSE['413'] = 'The request size exceeds the limit.';
137
+ API_RESPONSE['415'] = 'The requested entries format specified in the Accept header is not supported.';
138
+ API_RESPONSE['429'] = 'Too many requests. Please wait and resend your request.';
139
+ API_RESPONSE['456'] = 'Quota exceeded. The maximum amount of glossaries has been reached.';
140
+ API_RESPONSE['500'] = 'Internal server error';
141
+ API_RESPONSE['503'] = 'Resource currently unavailable. Try again later.';
142
+ API_RESPONSE['529'] = 'Too many requests. Please wait and resend your request.';
143
+
144
+ var reason_text;
145
+ var request = '';
146
+ var element = '';
147
+ var source_text = '';
148
+ var source_text_lines = '';
149
+ var source_lang;
150
+ var target_lang;
151
+
152
+ // check if passed HTML element or ID exists
153
+ if (TARGET_ELEMENT_EXISTS) {
154
+ BASE_TARGET_ELEMENT = (TARGET_ELEMENT.includes('.')||TARGET_ELEMENT.includes('#')) ? TARGET_ELEMENT.substring(1) : TARGET_ELEMENT;
155
+ ELEMENT_TYPE = $(TARGET_ELEMENT).get(0).nodeName;
156
+
157
+ // Read the text to be translated from the given HTML element
158
+ if (ELEMENT_TYPE === 'TEXTAREA') {
159
+ source_text = this.element.value;
160
+ } else if (ELEMENT_TYPE === 'P') {
161
+ element = this.element;
162
+ source_text = $(TARGET_ELEMENT).text();
163
+ }
164
+ SOURCE_TEXT_FOUND = source_text.length;
165
+ } else {
166
+ logger.error('\n' + 'target element does not exists: ' + TARGET_ELEMENT);
167
+ return false;
168
+ }
169
+
170
+ // limit the source text if required
171
+ if (settings.max_char && source_text.length > settings.max_char ) {
172
+ var source_text_limited = source_text.substring(0, settings.max_char -3);
173
+ source_text = source_text_limited + ' ...';
174
+ logger.info('\n' + 'limit for source text ' + '(max: ' + settings.max_char + ')' + ' reached: ' + source_text.length);
175
+ }
176
+ source_text_lines = this.prepareText(source_text);
177
+
178
+ // prepare the XHR request for the API (free/pro) requested
179
+ this.prepareXHR(settings);
180
+
181
+ // Makes a request with every line, as a new text to translate
182
+ var source_text_request = "";
183
+ for(var i = 0; i < source_text_lines.length; i++) {
184
+ source_text_request += "&text=" + source_text_lines[i];
185
+ }
186
+
187
+ this.xhr.onload = function () {
188
+ if (this.readyState === READYSTATE_DONE) {
189
+ if (this.status === STATUS_OK) {
190
+ // JSON parse the response
191
+ var result = JSON.parse(this.responseText);
192
+
193
+ // recreate the response as one text to keep its original layout
194
+ var translated_text = "";
195
+ for(var i = 0; i < result.translations.length; i++) {
196
+ translated_text += result.translations[i].text;
197
+ translated_text += "\n";
198
+ }
199
+
200
+ // update the HTM element (content) by the tranlation
201
+ if (ELEMENT_TYPE === 'TEXTAREA') {
202
+ $(TARGET_ELEMENT).val(translated_text);
203
+ } else if (ELEMENT_TYPE === 'P') {
204
+ $(TARGET_ELEMENT).text(translated_text);
205
+ }
206
+ } else {
207
+ logger.error('\n' + 'API returned ' + this.status + ': ' + API_RESPONSE[this.status]);
208
+ }
209
+ }
210
+ };
211
+
212
+ // ---------------------------------------------------------------------
213
+ // preflight (validity check) on given parameters
214
+ // ---------------------------------------------------------------------
215
+
216
+ // Check for SUPPORTED language by option source_lang|target_lang
217
+ source_lang = this.settings.source_lang;
218
+ target_lang = this.settings.target_lang;
219
+
220
+ if (this.settings.source_lang !== 'auto') {
221
+ this.settings.source_lang = (SUPPORTED_LANG.indexOf(this.settings.source_lang) > -1) ? this.settings.source_lang : false;
222
+ }
223
+ this.settings.target_lang = (SUPPORTED_LANG.indexOf(this.settings.target_lang) > -1) ? this.settings.target_lang : false;
224
+
225
+ // stop processing if invalid language or NO AUTH key passed
226
+ if (!this.settings.auth_key || !this.settings.source_lang || !this.settings.target_lang) {
227
+ if (!this.settings.auth_key) {
228
+ reason_text = 'NO AUTH key passed.';
229
+ logger.error('\n' + 'invalid option found. ' + reason_text);
230
+ }
231
+ if (!this.settings.source_lang) {
232
+ reason_text = 'WRONG source language passed: ' + source_lang;
233
+ logger.error('\n' + 'invalid option found. ' + reason_text);
234
+ }
235
+ if (!this.settings.target_lang) {
236
+ reason_text = 'WRONG target language passed: ' + target_lang;
237
+ logger.error('\n' + 'invalid option found. ' + reason_text);
238
+ }
239
+
240
+ // update the HTML element (content) by an error text
241
+ if (ELEMENT_TYPE === 'TEXTAREA') {
242
+ $(TARGET_ELEMENT).val(ERROR_TEXT + reason_text);
243
+ } else if (ELEMENT_TYPE === 'P') {
244
+ $(TARGET_ELEMENT).text(ERROR_TEXT + reason_text);
245
+ }
246
+ return false;
247
+ }
248
+
249
+ if(!SOURCE_TEXT_FOUND) {
250
+ reason_text = 'NO text found for translation';
251
+ // update the HTML element (content) by an error text
252
+ if (ELEMENT_TYPE === 'TEXTAREA') {
253
+ $(TARGET_ELEMENT).val(WARNING_TEXT + reason_text);
254
+ } else if (ELEMENT_TYPE === 'P') {
255
+ $(TARGET_ELEMENT).text(WARNING_TEXT + reason_text);
256
+ }
257
+ logger.warn('\n' + 'no text found for translation');
258
+ return false;
259
+ }
260
+
261
+ // Check for VALID language supported by option 'formality'
262
+ if (this.settings.formality !== 'default' ) {
263
+ if (!(ALLOWED_FORMALITY_LANG.indexOf(this.settings.target_lang) > -1)) {
264
+ logger.warn('\n' + 'wrong language found for formality setting: ' + this.settings.target_lang);
265
+ }
266
+ this.settings.formality = (ALLOWED_FORMALITY_LANG.indexOf(this.settings.target_lang) > -1) ? this.settings.formality : 'default';
267
+ }
268
+
269
+ // Check for VALID tag handling and options
270
+ if (this.settings.tag_handling) {
271
+ var tag_handling = this.settings.tag_handling;
272
+ // check for VALID method
273
+ this.settings.tag_handling = (ALLOWED_TAG_HANDLING.indexOf(this.settings.tag_handling) > -1) ? this.settings.tag_handling : false;
274
+ if (this.settings.tag_handling) {
275
+ this.settings.non_splitting_tags = this.settings.non_splitting_tags ? encodeURIComponent(this.settings.non_splitting_tags) : false;
276
+ this.settings.splitting_tags = this.settings.splitting_tags ? encodeURIComponent(this.settings.splitting_tags) : false;
277
+ this.settings.ignore_tags = this.settings.ignore_tags ? encodeURIComponent(this.settings.ignore_tags) : false;
278
+ } else {
279
+ logger.error('\n' + 'invalid option found for tag handling : ' + tag_handling);
280
+ logger.warn('\n' + 'disable option: ' + 'tag_handling');
281
+ // reset to defaults if WRONG method detected
282
+ if (this.settings.non_splitting_tags) {
283
+ logger.warn('\n' + 'disable option: ' + this.settings.non_splitting_tags);
284
+ this.settings.non_splitting_tags = false;
285
+ }
286
+ if (this.settings.splitting_tags) {
287
+ logger.warn('\n' + 'disable option : ' + this.settings.splitting_tags);
288
+ this.settings.splitting_tags = false;
289
+ }
290
+ if (this.settings.ignore_tags) {
291
+ logger.warn('\n' + 'disable option: ' + this.settings.ignore_tags);
292
+ this.settings.ignore_tags = false;
293
+ }
294
+ }
295
+ } else {
296
+ // reset tags to their defaults if NO tag_handling is enabled but settings passed
297
+ if (this.settings.non_splitting_tags) {
298
+ logger.warn('\n' + 'invalid option found: ' + this.settings.non_splitting_tags);
299
+ this.settings.non_splitting_tags = false;
300
+ }
301
+ if (this.settings.splitting_tags) {
302
+ logger.warn('\n' + 'invalid option found: ' + this.settings.splitting_tags);
303
+ this.settings.splitting_tags = false;
304
+ }
305
+ if (this.settings.ignore_tags) {
306
+ logger.warn('\n' + 'invalid option found: ' + this.settings.ignore_tags);
307
+ this.settings.ignore_tags = false;
308
+ }
309
+ }
310
+
311
+ // ---------------------------------------------------------------------
312
+ // construct the API request body
313
+ // ---------------------------------------------------------------------
314
+ request = "auth_key=" + this.settings.auth_key;
315
+ request += (this.settings.source_lang !== 'auto' ) ? "&source_lang=" + this.settings.source_lang : '';
316
+ request += "&target_lang=" + this.settings.target_lang;
317
+ request += (this.settings.formality !== 'default' ) ? "&formality=" + this.settings.formality : '';
318
+ request += (this.settings.split_sentences) ? "&split_sentences=" + this.settings.formality : '';
319
+ request += (this.settings.tag_handling) ? "&tag_handling=" + this.settings.tag_handling : "&tag_handling=0";
320
+ request += (this.settings.tag_handling && this.settings.non_splitting_tags) ? "&non_splitting_tags=" + this.settings.non_splitting_tags : '';
321
+ request += (this.settings.tag_handling && this.settings.splitting_tags) ? "&splitting_tags=" + this.settings.splitting_tags : '';
322
+ request += (this.settings.tag_handling && this.settings.ignore_tags) ? "&ignore_tags=" + this.settings.ignore_tags : '';
323
+ request += source_text_request;
324
+
325
+ // Send the constructed request to the API for translation
326
+ this.xhr.send(request);
327
+ } // END translate
328
+
329
+ }); // END prototype
330
+
331
+ // ---------------------------------------------------------------------------
332
+ // plugin wrapper
333
+ // A really lightweight plugin wrapper around the constructor,
334
+ // wrapper around the constructor to prevent multiple instantiations
335
+ // preventing against multiple instantiations and allowing any
336
+ // public function (ie. a function whose name doesn't start
337
+ // with an underscore) to be called via the jQuery plugin,
338
+ // e.g. $(element).defaultPluginName('functionName', arg1, arg2)
339
+ // ---------------------------------------------------------------------------
340
+ $.fn[pluginName] = function ( options ) {
341
+ var args = arguments;
342
+
343
+ // Is the first parameter an object (options), or was omitted,
344
+ // instantiate a new instance of the plugin.
345
+ //
346
+ if (options === undefined || typeof options === 'object') {
347
+ return this.each(function () {
348
+ // Only allow the plugin to be instantiated once,
349
+ // so we check that the element has no plugin instantiation yet
350
+ if (!$.data(this, 'plugin_' + pluginName)) {
351
+ // if it has no instance, create a new one, pass options to the
352
+ // plugin constructor, and store the plugin instance in the
353
+ // elements jQuery data object.
354
+ $.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
355
+ }
356
+ });
357
+ } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
358
+ // If the first parameter is a string and it doesn't start
359
+ // with an underscore or "contains" the `init`-function,
360
+ // treat this as a call to a public method.
361
+
362
+ // Cache the method call to make it possible to return a value
363
+ var returns;
364
+
365
+ this.each(function () {
366
+ var instance = $.data(this, 'plugin_' + pluginName);
367
+
368
+ // Tests that there's already a plugin-instance
369
+ // and checks that the requested public method exists
370
+ if (instance instanceof Plugin && typeof instance[options] === 'function') {
371
+ // Call the method of our plugin instance,
372
+ // and pass it the supplied arguments.
373
+ returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
374
+ }
375
+
376
+ // Allow instances to be destroyed via the 'destroy' method
377
+ if (options === 'destroy') {
378
+ $.data(this, 'plugin_' + pluginName, null);
379
+ }
380
+ });
381
+
382
+ // If the earlier cached method gives a value back return the value,
383
+ // otherwise return "this" to preserve chainability.
384
+ return returns !== undefined ? returns : this;
385
+ }
386
+ }; // END plugin wrapper
387
+
388
+ })(jQuery, window, document);