j1-template 2020.0.11 → 2020.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/blocks/ads/ad.html +64 -0
  3. data/_includes/themes/j1/blocks/footer/boxes/links_box.proc +1 -1
  4. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +3 -2
  5. data/_includes/themes/j1/layouts/content_generator_collection.html +3 -1
  6. data/_includes/themes/j1/layouts/content_generator_page.html +3 -1
  7. data/_includes/themes/j1/layouts/content_generator_post.html +12 -11
  8. data/_includes/themes/j1/layouts/layout_metadata_generator.html +141 -4
  9. data/_includes/themes/j1/modules/connectors/ad/custom-provider.html +6 -9
  10. data/_includes/themes/j1/modules/connectors/ad/google-adsense.html +9 -6
  11. data/_includes/themes/j1/modules/connectors/ads +3 -6
  12. data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +3 -3
  13. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +7 -7
  14. data/assets/data/authclient.html +19 -8
  15. data/assets/data/banner.html +24 -23
  16. data/assets/data/carousel.json +31 -21
  17. data/assets/data/cookie_consent.html +81 -52
  18. data/assets/data/footer.html +15 -5
  19. data/assets/data/galleries.json +91 -81
  20. data/assets/data/gallery_customizer.html +20 -10
  21. data/assets/data/mdi_icons.json +56 -1
  22. data/assets/data/menu.html +14 -6
  23. data/assets/data/mmenu.html +47 -93
  24. data/assets/data/mmenu_sidebar.html +41 -44
  25. data/assets/data/mmenu_toc.html +20 -3
  26. data/assets/data/panel.html +35 -22
  27. data/assets/data/quicklinks.html +15 -3
  28. data/assets/data/{search.yml → search.json} +36 -28
  29. data/assets/data/ssm.html +14 -2
  30. data/assets/data/themes.json +17 -6
  31. data/assets/data/twa_v1.json +7035 -6978
  32. data/assets/themes/j1/adapter/js/algolia.js +13 -2
  33. data/assets/themes/j1/adapter/js/attic.js +35 -15
  34. data/assets/themes/j1/adapter/js/carousel.js +12 -2
  35. data/assets/themes/j1/adapter/js/clipboard.js +232 -0
  36. data/assets/themes/j1/adapter/js/cookie_consent.js +13 -4
  37. data/assets/themes/j1/adapter/js/framer.js +10 -2
  38. data/assets/themes/j1/adapter/js/gallery_customizer.js +11 -2
  39. data/assets/themes/j1/adapter/js/j1.js +300 -681
  40. data/assets/themes/j1/adapter/js/{justified_gallery.js → jf_gallery.js} +14 -5
  41. data/assets/themes/j1/adapter/js/lightbox.js +11 -2
  42. data/assets/themes/j1/adapter/js/logger.js +11 -2
  43. data/assets/themes/j1/adapter/js/mdb.js +167 -0
  44. data/assets/themes/j1/adapter/js/mmenu.js +13 -3
  45. data/assets/themes/j1/adapter/js/navigator.js +73 -74
  46. data/assets/themes/j1/adapter/js/searcher.js +12 -2
  47. data/assets/themes/j1/adapter/js/ssm.js +33 -9
  48. data/assets/themes/j1/adapter/js/themer.js +26 -51
  49. data/assets/themes/j1/adapter/js/toccer.js +19 -12
  50. data/assets/themes/j1/core/css/theme_extensions.css +85 -1241
  51. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  52. data/assets/themes/j1/core/css/uno.css +110 -1256
  53. data/assets/themes/j1/core/css/uno.min.css +1 -1
  54. data/assets/themes/j1/core/css/vendor.css +1 -55
  55. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  56. data/assets/themes/j1/core/js/template.js +12 -82
  57. data/assets/themes/j1/core/js/template.js.map +1 -1
  58. data/assets/themes/j1/core/js/template.min.js +1 -1
  59. data/assets/themes/j1/extensions/bsDatepicker/css/datepicker.css +203 -0
  60. data/assets/themes/j1/extensions/bsDatepicker/css/theme/uno.css +235 -0
  61. data/assets/themes/j1/extensions/bsDatepicker/js/datepicker.js +509 -0
  62. data/assets/themes/j1/extensions/bsDatepicker/less/datepicker.less +122 -0
  63. data/assets/themes/j1/extensions/bsThemeSwitcher/js/switcher.js +425 -0
  64. data/assets/themes/j1/extensions/bsThemeSwitcher/js/switcher.min.js +20 -0
  65. data/assets/themes/j1/extensions/clipboard/LICENSE +20 -0
  66. data/assets/themes/j1/extensions/clipboard/css/theme/uno.css +52 -0
  67. data/assets/themes/j1/extensions/clipboard/css/theme/uno.min.css +52 -0
  68. data/assets/themes/j1/extensions/clipboard/js/clipboard.js +975 -0
  69. data/assets/themes/j1/extensions/clipboard/js/clipboard.min.js +7 -0
  70. data/assets/themes/j1/extensions/{iconify → iconifyAPI}/js/iconify.min.js +0 -0
  71. data/assets/themes/j1/extensions/iframeResizer/LICENSE +21 -0
  72. data/assets/themes/j1/extensions/iframeResizer/examples/frame.absolute.html +127 -0
  73. data/assets/themes/j1/extensions/iframeResizer/examples/frame.content.html +157 -0
  74. data/assets/themes/j1/extensions/iframeResizer/examples/frame.hover.html +68 -0
  75. data/assets/themes/j1/extensions/iframeResizer/examples/frame.nested.html +100 -0
  76. data/assets/themes/j1/extensions/iframeResizer/examples/frame.textarea.html +45 -0
  77. data/assets/themes/j1/extensions/iframeResizer/examples/frame.tolerance.html +113 -0
  78. data/assets/themes/j1/extensions/iframeResizer/examples/index.html +83 -0
  79. data/assets/themes/j1/extensions/iframeResizer/examples/two.html +88 -0
  80. data/assets/themes/j1/extensions/iframeResizer/js/client/iframeResizer.contentWindow.js +1288 -0
  81. data/assets/themes/j1/extensions/iframeResizer/js/client/iframeResizer.contentWindow.map +1 -0
  82. data/assets/themes/j1/extensions/iframeResizer/js/client/iframeResizer.contentWindow.min.js +10 -0
  83. data/assets/themes/j1/extensions/iframeResizer/js/iframeResizer.js +1390 -0
  84. data/assets/themes/j1/extensions/iframeResizer/js/iframeResizer.map +1 -0
  85. data/assets/themes/j1/extensions/iframeResizer/js/iframeResizer.min.js +9 -0
  86. data/assets/themes/j1/extensions/jqMouseWheel/README.md +76 -0
  87. data/assets/themes/j1/extensions/jqMouseWheel/js/jquery.mousewheel.js +221 -0
  88. data/assets/themes/j1/extensions/jqMouseWheel/js/jquery.mousewheel.min.js +9 -0
  89. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/LICENSE +0 -0
  90. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/README.md +0 -0
  91. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/css/justifiedGallery.css +0 -0
  92. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/css/justifiedGallery.min.css +0 -0
  93. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/css/theme/uno.css +0 -0
  94. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/js/justifiedGallery.3.7.0.js +0 -0
  95. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/js/justifiedGallery.js +0 -0
  96. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/js/justifiedGallery.min.js +0 -0
  97. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/less/.csslintrc +0 -0
  98. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/less/justifiedGallery.less +0 -0
  99. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/css/justifiedGallery.css +0 -0
  100. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/css/justifiedGallery.min.css +0 -0
  101. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/css/theme/uno.css +0 -0
  102. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/js/jquery.justifiedGallery.js +0 -0
  103. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/js/jquery.justifiedGallery.min.js +0 -0
  104. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/justifiedGallery.css +0 -0
  105. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/justifiedGallery.min.css +0 -0
  106. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/theme/uno.css +0 -0
  107. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/theme/uno.min.css +0 -0
  108. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/js/justifiedGallery.js +0 -0
  109. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/js/justifiedGallery.min.js +0 -0
  110. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-fb-comment-box.css +0 -0
  111. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-fb-comment-box.min.css +0 -0
  112. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-transitions.css +0 -0
  113. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-transitions.min.css +0 -0
  114. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lightgallery.css +0 -0
  115. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lightgallery.min.css +0 -0
  116. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.eot +0 -0
  117. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.svg +0 -0
  118. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.ttf +0 -0
  119. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.woff +0 -0
  120. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/loading.gif +0 -0
  121. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/video-play.png +0 -0
  122. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/vimeo-play.png +0 -0
  123. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/youtube-play.png +0 -0
  124. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/animation-w.png +0 -0
  125. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/customize-w.png +0 -0
  126. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/dynamic-w.png +0 -0
  127. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/facebook-icon.svg +0 -0
  128. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/googleplus-icon.svg +0 -0
  129. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/html5-w.png +0 -0
  130. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/linked-in.png +0 -0
  131. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/module-w.png +0 -0
  132. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/play-button.png +0 -0
  133. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/responsive-w.png +0 -0
  134. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/thumb-w.png +0 -0
  135. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/touch-w.png +0 -0
  136. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/twitter-icon.svg +0 -0
  137. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/twitter.png +0 -0
  138. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/video1-w.png +0 -0
  139. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/zoom-w.png +0 -0
  140. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/zoom.png +0 -0
  141. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/uno.css +1 -1
  142. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/uno.min.css +1 -1
  143. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/core/lightgallery.js +0 -0
  144. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/core/lightgallery.min.js +0 -0
  145. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/j1/j1-video.js +0 -0
  146. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/j1/j1-video.min.js +0 -0
  147. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-autoplay.js +0 -0
  148. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-autoplay.min.js +0 -0
  149. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-fullscreen.js +0 -0
  150. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-fullscreen.min.js +0 -0
  151. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-hash.js +0 -0
  152. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-hash.min.js +0 -0
  153. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-pager.js +0 -0
  154. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-pager.min.js +0 -0
  155. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-share.js +0 -0
  156. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-share.min.js +0 -0
  157. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-thumbnail.js +0 -0
  158. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-thumbnail.min.js +0 -0
  159. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-video.js +0 -0
  160. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-video.min.js +0 -0
  161. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-zoom.js +0 -0
  162. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-zoom.min.js +0 -0
  163. data/assets/themes/j1/extensions/lightbox/LICENSE +22 -0
  164. data/assets/themes/j1/extensions/lightbox/css/lightbox.css +224 -0
  165. data/assets/themes/j1/extensions/lightbox/css/lightbox.min.css +21 -0
  166. data/assets/themes/j1/extensions/lightbox/css/theme/uno.css +25 -0
  167. data/assets/themes/j1/extensions/lightbox/css/theme/uno.min.css +26 -0
  168. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/close.png +0 -0
  169. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/loading.gif +0 -0
  170. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/next.png +0 -0
  171. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/prev.png +0 -0
  172. data/assets/themes/j1/extensions/lightbox/js/lightbox.js +583 -0
  173. data/assets/themes/j1/extensions/lightbox/js/lightbox.min.js +35 -0
  174. data/assets/themes/j1/extensions/mmenuLight/css/mmenu.css +392 -0
  175. data/assets/themes/j1/extensions/mmenuLight/css/mmenu.min.css +393 -0
  176. data/assets/themes/j1/extensions/mmenuLight/css/theme/uno.css +170 -0
  177. data/assets/themes/j1/extensions/mmenuLight/css/theme/uno.min.css +169 -0
  178. data/assets/themes/j1/extensions/mmenuLight/js/mmenu.js +30 -0
  179. data/assets/themes/j1/extensions/noUISlider/LICENSE +13 -0
  180. data/assets/themes/j1/extensions/noUISlider/css/nouislider.css +260 -0
  181. data/assets/themes/j1/extensions/noUISlider/css/nouislider.min.css +1 -0
  182. data/assets/themes/j1/extensions/noUISlider/js/nouislider.js +2312 -0
  183. data/assets/themes/j1/extensions/noUISlider/js/nouislider.min.js +3 -0
  184. data/assets/themes/j1/extensions/twemoji/js/LICENSE +21 -0
  185. data/assets/themes/j1/extensions/twemoji/js/picker/LICENSE +21 -0
  186. data/assets/themes/j1/extensions/twemoji/js/picker/twemoji-picker.js +21 -0
  187. data/assets/themes/j1/extensions/twemoji/js/picker/twemoji-picker.min.js +21 -0
  188. data/assets/themes/j1/extensions/twemoji/js/twemoji.js +590 -0
  189. data/assets/themes/j1/extensions/twemoji/js/twemoji.min.js +25 -0
  190. data/lib/j1/version.rb +1 -1
  191. data/lib/starter_web/Gemfile +7 -1
  192. data/lib/starter_web/_config.yml +9 -8
  193. data/lib/starter_web/_data/_defaults/resources.yml +13 -13
  194. data/lib/starter_web/_data/blocks/banner.yml +21 -29
  195. data/lib/starter_web/_data/blocks/footer.yml +10 -3
  196. data/lib/starter_web/_data/blocks/panel.yml +13 -13
  197. data/lib/starter_web/_data/layouts/default.yml +10 -0
  198. data/lib/starter_web/_data/layouts/home.yml +7 -7
  199. data/lib/starter_web/_data/layouts/page.yml +15 -16
  200. data/lib/starter_web/_data/modules/advertising.yml +48 -0
  201. data/lib/starter_web/_data/modules/attics.yml +2 -38
  202. data/lib/starter_web/_data/modules/cookie_consent.yml +3 -95
  203. data/lib/starter_web/_data/modules/defaults/attics.yml +16 -15
  204. data/lib/starter_web/_data/modules/defaults/cookie_consent.yml +75 -12
  205. data/lib/starter_web/_data/modules/defaults/jekyll_search.yml +9 -9
  206. data/lib/starter_web/_data/modules/defaults/navigator.yml +54 -20
  207. data/lib/starter_web/_data/modules/jekyll_search.yml +1 -20
  208. data/lib/starter_web/_data/modules/navigator.yml +1 -1
  209. data/lib/starter_web/_data/modules/themer.yml +2 -3
  210. data/lib/starter_web/_data/resources.yml +239 -111
  211. data/lib/starter_web/_data/template_settings.yml +87 -4
  212. data/lib/starter_web/_plugins/asciidoctor-extensions/fab-icon-inline.rb +1 -1
  213. data/lib/starter_web/_plugins/asciidoctor-extensions/fas-icon-inline.rb +2 -2
  214. data/lib/starter_web/_plugins/asciidoctor-extensions/iconify-icon-inline.rb +2 -2
  215. data/lib/starter_web/_plugins/asciidoctor-extensions/mdi-icon-inline.rb +2 -2
  216. data/lib/starter_web/_plugins/asciidoctor-extensions/twitter-emoji-inline.rb +2 -2
  217. data/lib/starter_web/_plugins/minifyJS.rb +54 -0
  218. data/lib/starter_web/_plugins/minifyJSON.rb +47 -0
  219. data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.jpg +0 -0
  220. data/lib/starter_web/assets/images/modules/attics/alex-holyoake-1920x1280.jpg +0 -0
  221. data/lib/starter_web/assets/images/modules/attics/anaya-katlego-1920x1280.jpg +0 -0
  222. data/lib/starter_web/assets/images/modules/attics/antonella-lombardi-1920x1280.jpg +0 -0
  223. data/lib/starter_web/assets/images/modules/attics/antonino-visalli-1920x1280.jpg +0 -0
  224. data/lib/starter_web/assets/images/modules/attics/banner/library-1920x800-bw.jpg +0 -0
  225. data/lib/starter_web/assets/images/modules/attics/banner/signpost-1920x800-bw.jpg +0 -0
  226. data/lib/starter_web/assets/images/modules/attics/banner/water-journal-1280x600.jpg +0 -0
  227. data/lib/starter_web/assets/images/modules/attics/banner/write-1280x600-bw.jpg +0 -0
  228. data/lib/starter_web/assets/images/modules/attics/brandon-mowinkel-1920x1280.jpg +0 -0
  229. data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280-bw.jpg +0 -0
  230. data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200-bw.jpg +0 -0
  231. data/lib/starter_web/assets/images/modules/attics/daniel-jensen-1920x1280.jpg +0 -0
  232. data/lib/starter_web/assets/images/modules/attics/giammarco-boscaro-1920x1280.jpg +0 -0
  233. data/lib/starter_web/assets/images/modules/attics/go-up-1920x1280-bw.jpg +0 -0
  234. data/lib/starter_web/assets/images/modules/attics/ian-schneider-1920x1280.jpg +0 -0
  235. data/lib/starter_web/assets/images/modules/attics/ideas-start-here-1920x1280-bw.jpg +0 -0
  236. data/lib/starter_web/assets/images/modules/attics/jason-rosewell-1920x1280.jpg +0 -0
  237. data/lib/starter_web/assets/images/modules/attics/jessica-ruscello-1920x1280.jpg +0 -0
  238. data/lib/starter_web/assets/images/modules/attics/lianhao-1920x1280.jpg +0 -0
  239. data/lib/starter_web/assets/images/modules/attics/library-1920x1280-bw.jpg +0 -0
  240. data/lib/starter_web/assets/images/modules/attics/matthaeus-1920x1280.jpg +0 -0
  241. data/lib/starter_web/assets/images/modules/attics/nousnou-iwasaki-1920x1280.jpg +0 -0
  242. data/lib/starter_web/assets/images/modules/attics/premium-1920x1280-bw.jpg +0 -0
  243. data/lib/starter_web/assets/images/modules/attics/robert-v-ruggiero-1920x1280.jpg +0 -0
  244. data/lib/starter_web/assets/images/modules/attics/romain-vignes-1920x1280.jpg +0 -0
  245. data/lib/starter_web/assets/images/modules/attics/runner-1920x1200-bw.jpg +0 -0
  246. data/lib/starter_web/assets/images/modules/attics/spider-web-1920x1200-bw.jpg +0 -0
  247. data/lib/starter_web/assets/images/modules/attics/the-place-1920x1280-bw.jpg +0 -0
  248. data/lib/starter_web/assets/images/modules/attics/welcome-1920x1280-bw.jpg +0 -0
  249. data/lib/starter_web/assets/images/modules/carousel/cats/cat-1.jpg +0 -0
  250. data/lib/starter_web/assets/images/modules/carousel/mega_cities/andreas-brucker_b.jpg +0 -0
  251. data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  252. data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-2_b.jpg +0 -0
  253. data/lib/starter_web/assets/images/modules/carousel/mega_cities/luca-bravo_b.jpg +0 -0
  254. data/lib/starter_web/assets/images/modules/carousel/mega_cities/thomas-tucker_b.jpg +0 -0
  255. data/lib/starter_web/assets/images/modules/gallery/mega_cities/banter-snaps_b.jpg +0 -0
  256. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  257. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2-bw.jpg +0 -0
  258. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2_b.jpg +0 -0
  259. data/lib/starter_web/assets/images/modules/gallery/mega_cities/emmad-mazhari_b.jpg +0 -0
  260. data/lib/starter_web/assets/images/modules/gallery/mega_cities/ethan-brooke_b.jpg +0 -0
  261. data/lib/starter_web/assets/images/modules/gallery/mega_cities/federico-rizzarelli_b.jpg +0 -0
  262. data/lib/starter_web/assets/images/modules/gallery/mega_cities/gints-gailis_b.jpg +0 -0
  263. data/lib/starter_web/assets/images/modules/gallery/mega_cities/johan-mouchet_b.jpg +0 -0
  264. data/lib/starter_web/assets/images/modules/gallery/mega_cities/luca-bravo_b.jpg +0 -0
  265. data/lib/starter_web/assets/images/modules/gallery/mega_cities/oskars-sylwan_b.jpg +0 -0
  266. data/lib/starter_web/assets/images/modules/gallery/mega_cities/steven-diaz_b.jpg +0 -0
  267. data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker-bw.jpg +0 -0
  268. data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker_b.jpg +0 -0
  269. data/lib/starter_web/index.html +9 -8
  270. data/lib/starter_web/package.json +1 -1
  271. data/lib/starter_web/pages/public/learn/examples/floating_ad.adoc +221 -0
  272. data/lib/starter_web/pages/public/learn/examples/floating_div.adoc +33 -1
  273. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/419_advanced_modals_html.asciidoc +5 -5
  274. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  275. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +2 -1
  276. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +35 -44
  277. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +39 -39
  278. data/lib/starter_web/pages/public/learn/whats_up.adoc +1 -0
  279. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +3 -5
  280. data/lib/starter_web/pages/public/previewer/iframer.adoc +15 -14
  281. data/lib/starter_web/pages/public/previewer/justified_gallery.html +1 -1
  282. data/lib/starter_web/pages/public/previewer/mdb_preview/mdb_previewer.adoc +2 -2
  283. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +2 -2
  284. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  285. data/lib/starter_web/utilsrv/package.json +1 -1
  286. metadata +143 -103
  287. data/assets/data/colors.json +0 -42
  288. data/assets/data/font_sizes.json +0 -42
  289. data/assets/data/messages.yml +0 -131
  290. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.absolute.html +0 -86
  291. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.content.html +0 -58
  292. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.hover.html +0 -51
  293. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.nested.html +0 -68
  294. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.textarea.html +0 -46
  295. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.tolerance.html +0 -79
  296. data/assets/themes/j1/extensions/iframe_resizer/examples/index.html +0 -70
  297. data/assets/themes/j1/extensions/iframe_resizer/examples/two.html +0 -71
  298. data/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.js +0 -1104
  299. data/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.map +0 -1
  300. data/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.min.js +0 -10
  301. data/assets/themes/j1/extensions/log4javascript/log4javascript.js +0 -5826
  302. data/assets/themes/j1/extensions/log4javascript/log4javascript.min.js +0 -266
  303. data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.png +0 -0
  304. data/lib/starter_web/assets/images/modules/attics/mae-mu-Vf9gbsLZyf0-unsplash.jpg +0 -0
  305. data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280-v.jpg +0 -0
  306. data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280.jpg +0 -0
@@ -0,0 +1,3 @@
1
+ /*! nouislider - 10.1.0 - 2017-07-28 13:09:54 */
2
+
3
+ !function(a){"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a():window.noUiSlider=a()}(function(){"use strict";function a(a){return"object"==typeof a&&"function"==typeof a.to&&"function"==typeof a.from}function b(a){a.parentElement.removeChild(a)}function c(a){a.preventDefault()}function d(a){return a.filter(function(a){return!this[a]&&(this[a]=!0)},{})}function e(a,b){return Math.round(a/b)*b}function f(a,b){var c=a.getBoundingClientRect(),d=a.ownerDocument,e=d.documentElement,f=o(d);return/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(f.x=0),b?c.top+f.y-e.clientTop:c.left+f.x-e.clientLeft}function g(a){return"number"==typeof a&&!isNaN(a)&&isFinite(a)}function h(a,b,c){c>0&&(l(a,b),setTimeout(function(){m(a,b)},c))}function i(a){return Math.max(Math.min(a,100),0)}function j(a){return Array.isArray(a)?a:[a]}function k(a){a=String(a);var b=a.split(".");return b.length>1?b[1].length:0}function l(a,b){a.classList?a.classList.add(b):a.className+=" "+b}function m(a,b){a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("(^|\\b)"+b.split(" ").join("|")+"(\\b|$)","gi")," ")}function n(a,b){return a.classList?a.classList.contains(b):new RegExp("\\b"+b+"\\b").test(a.className)}function o(a){var b=void 0!==window.pageXOffset,c="CSS1Compat"===(a.compatMode||"");return{x:b?window.pageXOffset:c?a.documentElement.scrollLeft:a.body.scrollLeft,y:b?window.pageYOffset:c?a.documentElement.scrollTop:a.body.scrollTop}}function p(){return window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"}}function q(){var a=!1;try{var b=Object.defineProperty({},"passive",{get:function(){a=!0}});window.addEventListener("test",null,b)}catch(a){}return a}function r(){return window.CSS&&CSS.supports&&CSS.supports("touch-action","none")}function s(a,b){return 100/(b-a)}function t(a,b){return 100*b/(a[1]-a[0])}function u(a,b){return t(a,a[0]<0?b+Math.abs(a[0]):b-a[0])}function v(a,b){return b*(a[1]-a[0])/100+a[0]}function w(a,b){for(var c=1;a>=b[c];)c+=1;return c}function x(a,b,c){if(c>=a.slice(-1)[0])return 100;var d,e,f,g,h=w(c,a);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],f+u([d,e],c)/s(f,g)}function y(a,b,c){if(c>=100)return a.slice(-1)[0];var d,e,f,g,h=w(c,b);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],v([d,e],(c-f)*s(f,g))}function z(a,b,c,d){if(100===d)return d;var f,g,h=w(d,a);return c?(f=a[h-1],g=a[h],d-f>(g-f)/2?g:f):b[h-1]?a[h-1]+e(d-a[h-1],b[h-1]):d}function A(a,b,c){var d;if("number"==typeof b&&(b=[b]),"[object Array]"!==Object.prototype.toString.call(b))throw new Error("noUiSlider ("+_+"): 'range' contains invalid value.");if(d="min"===a?0:"max"===a?100:parseFloat(a),!g(d)||!g(b[0]))throw new Error("noUiSlider ("+_+"): 'range' value isn't numeric.");c.xPct.push(d),c.xVal.push(b[0]),d?c.xSteps.push(!isNaN(b[1])&&b[1]):isNaN(b[1])||(c.xSteps[0]=b[1]),c.xHighestCompleteStep.push(0)}function B(a,b,c){if(!b)return!0;c.xSteps[a]=t([c.xVal[a],c.xVal[a+1]],b)/s(c.xPct[a],c.xPct[a+1]);var d=(c.xVal[a+1]-c.xVal[a])/c.xNumSteps[a],e=Math.ceil(Number(d.toFixed(3))-1),f=c.xVal[a]+c.xNumSteps[a]*e;c.xHighestCompleteStep[a]=f}function C(a,b,c){this.xPct=[],this.xVal=[],this.xSteps=[c||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=b;var d,e=[];for(d in a)a.hasOwnProperty(d)&&e.push([a[d],d]);for(e.length&&"object"==typeof e[0][0]?e.sort(function(a,b){return a[0][0]-b[0][0]}):e.sort(function(a,b){return a[0]-b[0]}),d=0;d<e.length;d++)A(e[d][1],e[d][0],this);for(this.xNumSteps=this.xSteps.slice(0),d=0;d<this.xNumSteps.length;d++)B(d,this.xNumSteps[d],this)}function D(b){if(a(b))return!0;throw new Error("noUiSlider ("+_+"): 'format' requires 'to' and 'from' methods.")}function E(a,b){if(!g(b))throw new Error("noUiSlider ("+_+"): 'step' is not numeric.");a.singleStep=b}function F(a,b){if("object"!=typeof b||Array.isArray(b))throw new Error("noUiSlider ("+_+"): 'range' is not an object.");if(void 0===b.min||void 0===b.max)throw new Error("noUiSlider ("+_+"): Missing 'min' or 'max' in 'range'.");if(b.min===b.max)throw new Error("noUiSlider ("+_+"): 'range' 'min' and 'max' cannot be equal.");a.spectrum=new C(b,a.snap,a.singleStep)}function G(a,b){if(b=j(b),!Array.isArray(b)||!b.length)throw new Error("noUiSlider ("+_+"): 'start' option is incorrect.");a.handles=b.length,a.start=b}function H(a,b){if(a.snap=b,"boolean"!=typeof b)throw new Error("noUiSlider ("+_+"): 'snap' option must be a boolean.")}function I(a,b){if(a.animate=b,"boolean"!=typeof b)throw new Error("noUiSlider ("+_+"): 'animate' option must be a boolean.")}function J(a,b){if(a.animationDuration=b,"number"!=typeof b)throw new Error("noUiSlider ("+_+"): 'animationDuration' option must be a number.")}function K(a,b){var c,d=[!1];if("lower"===b?b=[!0,!1]:"upper"===b&&(b=[!1,!0]),!0===b||!1===b){for(c=1;c<a.handles;c++)d.push(b);d.push(!1)}else{if(!Array.isArray(b)||!b.length||b.length!==a.handles+1)throw new Error("noUiSlider ("+_+"): 'connect' option doesn't match handle count.");d=b}a.connect=d}function L(a,b){switch(b){case"horizontal":a.ort=0;break;case"vertical":a.ort=1;break;default:throw new Error("noUiSlider ("+_+"): 'orientation' option is invalid.")}}function M(a,b){if(!g(b))throw new Error("noUiSlider ("+_+"): 'margin' option must be numeric.");if(0!==b&&(a.margin=a.spectrum.getMargin(b),!a.margin))throw new Error("noUiSlider ("+_+"): 'margin' option is only supported on linear sliders.")}function N(a,b){if(!g(b))throw new Error("noUiSlider ("+_+"): 'limit' option must be numeric.");if(a.limit=a.spectrum.getMargin(b),!a.limit||a.handles<2)throw new Error("noUiSlider ("+_+"): 'limit' option is only supported on linear sliders with 2 or more handles.")}function O(a,b){if(!g(b))throw new Error("noUiSlider ("+_+"): 'padding' option must be numeric.");if(0!==b){if(a.padding=a.spectrum.getMargin(b),!a.padding)throw new Error("noUiSlider ("+_+"): 'padding' option is only supported on linear sliders.");if(a.padding<0)throw new Error("noUiSlider ("+_+"): 'padding' option must be a positive number.");if(a.padding>=50)throw new Error("noUiSlider ("+_+"): 'padding' option must be less than half the range.")}}function P(a,b){switch(b){case"ltr":a.dir=0;break;case"rtl":a.dir=1;break;default:throw new Error("noUiSlider ("+_+"): 'direction' option was not recognized.")}}function Q(a,b){if("string"!=typeof b)throw new Error("noUiSlider ("+_+"): 'behaviour' must be a string containing options.");var c=b.indexOf("tap")>=0,d=b.indexOf("drag")>=0,e=b.indexOf("fixed")>=0,f=b.indexOf("snap")>=0,g=b.indexOf("hover")>=0;if(e){if(2!==a.handles)throw new Error("noUiSlider ("+_+"): 'fixed' behaviour must be used with 2 handles");M(a,a.start[1]-a.start[0])}a.events={tap:c||f,drag:d,fixed:e,snap:f,hover:g}}function R(a,b){if(a.multitouch=b,"boolean"!=typeof b)throw new Error("noUiSlider ("+_+"): 'multitouch' option must be a boolean.")}function S(a,b){if(!1!==b)if(!0===b){a.tooltips=[];for(var c=0;c<a.handles;c++)a.tooltips.push(!0)}else{if(a.tooltips=j(b),a.tooltips.length!==a.handles)throw new Error("noUiSlider ("+_+"): must pass a formatter for all handles.");a.tooltips.forEach(function(a){if("boolean"!=typeof a&&("object"!=typeof a||"function"!=typeof a.to))throw new Error("noUiSlider ("+_+"): 'tooltips' must be passed a formatter or 'false'.")})}}function T(a,b){a.ariaFormat=b,D(b)}function U(a,b){a.format=b,D(b)}function V(a,b){if(void 0!==b&&"string"!=typeof b&&!1!==b)throw new Error("noUiSlider ("+_+"): 'cssPrefix' must be a string or `false`.");a.cssPrefix=b}function W(a,b){if(void 0!==b&&"object"!=typeof b)throw new Error("noUiSlider ("+_+"): 'cssClasses' must be an object.");if("string"==typeof a.cssPrefix){a.cssClasses={};for(var c in b)b.hasOwnProperty(c)&&(a.cssClasses[c]=a.cssPrefix+b[c])}else a.cssClasses=b}function X(a,b){if(!0!==b&&!1!==b)throw new Error("noUiSlider ("+_+"): 'useRequestAnimationFrame' option should be true (default) or false.");a.useRequestAnimationFrame=b}function Y(a){var b={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:aa,format:aa},c={step:{r:!1,t:E},start:{r:!0,t:G},connect:{r:!0,t:K},direction:{r:!0,t:P},snap:{r:!1,t:H},animate:{r:!1,t:I},animationDuration:{r:!1,t:J},range:{r:!0,t:F},orientation:{r:!1,t:L},margin:{r:!1,t:M},limit:{r:!1,t:N},padding:{r:!1,t:O},behaviour:{r:!0,t:Q},multitouch:{r:!0,t:R},ariaFormat:{r:!1,t:T},format:{r:!1,t:U},tooltips:{r:!1,t:S},cssPrefix:{r:!1,t:V},cssClasses:{r:!1,t:W},useRequestAnimationFrame:{r:!1,t:X}},d={connect:!1,direction:"ltr",behaviour:"tap",multitouch:!1,orientation:"horizontal",cssPrefix:"noUi-",cssClasses:{target:"target",base:"base",origin:"origin",handle:"handle",handleLower:"handle-lower",handleUpper:"handle-upper",horizontal:"horizontal",vertical:"vertical",background:"background",connect:"connect",ltr:"ltr",rtl:"rtl",draggable:"draggable",drag:"state-drag",tap:"state-tap",active:"active",tooltip:"tooltip",pips:"pips",pipsHorizontal:"pips-horizontal",pipsVertical:"pips-vertical",marker:"marker",markerHorizontal:"marker-horizontal",markerVertical:"marker-vertical",markerNormal:"marker-normal",markerLarge:"marker-large",markerSub:"marker-sub",value:"value",valueHorizontal:"value-horizontal",valueVertical:"value-vertical",valueNormal:"value-normal",valueLarge:"value-large",valueSub:"value-sub"},useRequestAnimationFrame:!0};a.format&&!a.ariaFormat&&(a.ariaFormat=a.format),Object.keys(c).forEach(function(e){if(void 0===a[e]&&void 0===d[e]){if(c[e].r)throw new Error("noUiSlider ("+_+"): '"+e+"' is required.");return!0}c[e].t(b,void 0===a[e]?d[e]:a[e])}),b.pips=a.pips;var e=[["left","top"],["right","bottom"]];return b.style=e[b.dir][b.ort],b.styleOposite=e[b.dir?0:1][b.ort],b}function Z(a,e,g){function k(a,b){var c=wa.createElement("div");return b&&l(c,b),a.appendChild(c),c}function s(a,b){var c=k(a,e.cssClasses.origin),d=k(c,e.cssClasses.handle);return d.setAttribute("data-handle",b),d.setAttribute("tabindex","0"),d.setAttribute("role","slider"),d.setAttribute("aria-orientation",e.ort?"vertical":"horizontal"),0===b?l(d,e.cssClasses.handleLower):b===e.handles-1&&l(d,e.cssClasses.handleUpper),c}function t(a,b){return!!b&&k(a,e.cssClasses.connect)}function u(a,b){ia=[],ja=[],ja.push(t(b,a[0]));for(var c=0;c<e.handles;c++)ia.push(s(b,c)),ra[c]=c,ja.push(t(b,a[c+1]))}function v(a){l(a,e.cssClasses.target),0===e.dir?l(a,e.cssClasses.ltr):l(a,e.cssClasses.rtl),0===e.ort?l(a,e.cssClasses.horizontal):l(a,e.cssClasses.vertical),ha=k(a,e.cssClasses.base)}function w(a,b){return!!e.tooltips[b]&&k(a.firstChild,e.cssClasses.tooltip)}function x(){var a=ia.map(w);ea("update",function(b,c,d){if(a[c]){var f=b[c];!0!==e.tooltips[c]&&(f=e.tooltips[c].to(d[c])),a[c].innerHTML=f}})}function y(){ea("update",function(a,b,c,d,f){ra.forEach(function(a){var b=ia[a],d=S(qa,a,0,!0,!0,!0),g=S(qa,a,100,!0,!0,!0),h=f[a],i=e.ariaFormat.to(c[a]);b.children[0].setAttribute("aria-valuemin",d.toFixed(1)),b.children[0].setAttribute("aria-valuemax",g.toFixed(1)),b.children[0].setAttribute("aria-valuenow",h.toFixed(1)),b.children[0].setAttribute("aria-valuetext",i)})})}function z(a,b,c){if("range"===a||"steps"===a)return ta.xVal;if("count"===a){if(!b)throw new Error("noUiSlider ("+_+"): 'values' required for mode 'count'.");var d,e=100/(b-1),f=0;for(b=[];(d=f++*e)<=100;)b.push(d);a="positions"}return"positions"===a?b.map(function(a){return ta.fromStepping(c?ta.getStep(a):a)}):"values"===a?c?b.map(function(a){return ta.fromStepping(ta.getStep(ta.toStepping(a)))}):b:void 0}function A(a,b,c){function e(a,b){return(a+b).toFixed(7)/1}var f={},g=ta.xVal[0],h=ta.xVal[ta.xVal.length-1],i=!1,j=!1,k=0;return c=d(c.slice().sort(function(a,b){return a-b})),c[0]!==g&&(c.unshift(g),i=!0),c[c.length-1]!==h&&(c.push(h),j=!0),c.forEach(function(d,g){var h,l,m,n,o,p,q,r,s,t,u=d,v=c[g+1];if("steps"===b&&(h=ta.xNumSteps[g]),h||(h=v-u),!1!==u&&void 0!==v)for(h=Math.max(h,1e-7),l=u;l<=v;l=e(l,h)){for(n=ta.toStepping(l),o=n-k,r=o/a,s=Math.round(r),t=o/s,m=1;m<=s;m+=1)p=k+m*t,f[p.toFixed(5)]=["x",0];q=c.indexOf(l)>-1?1:"steps"===b?2:0,!g&&i&&(q=0),l===v&&j||(f[n.toFixed(5)]=[l,q]),k=n}}),f}function B(a,b,c){function d(a,b){var c=b===e.cssClasses.value,d=c?j:m,f=c?h:i;return b+" "+d[e.ort]+" "+f[a]}function f(a,f){f[1]=f[1]&&b?b(f[0],f[1]):f[1];var h=k(g,!1);h.className=d(f[1],e.cssClasses.marker),h.style[e.style]=a+"%",f[1]&&(h=k(g,!1),h.className=d(f[1],e.cssClasses.value),h.style[e.style]=a+"%",h.innerText=c.to(f[0]))}var g=wa.createElement("div"),h=[e.cssClasses.valueNormal,e.cssClasses.valueLarge,e.cssClasses.valueSub],i=[e.cssClasses.markerNormal,e.cssClasses.markerLarge,e.cssClasses.markerSub],j=[e.cssClasses.valueHorizontal,e.cssClasses.valueVertical],m=[e.cssClasses.markerHorizontal,e.cssClasses.markerVertical];return l(g,e.cssClasses.pips),l(g,0===e.ort?e.cssClasses.pipsHorizontal:e.cssClasses.pipsVertical),Object.keys(a).forEach(function(b){f(b,a[b])}),g}function C(){la&&(b(la),la=null)}function D(a){C();var b=a.mode,c=a.density||1,d=a.filter||!1,e=a.values||!1,f=a.stepped||!1,g=z(b,e,f),h=A(c,b,g),i=a.format||{to:Math.round};return la=pa.appendChild(B(h,d,i))}function E(){var a=ha.getBoundingClientRect(),b="offset"+["Width","Height"][e.ort];return 0===e.ort?a.width||ha[b]:a.height||ha[b]}function F(a,b,c,d){var f=function(f){return!pa.hasAttribute("disabled")&&(!n(pa,e.cssClasses.tap)&&(!!(f=G(f,d.pageOffset,d.target||b))&&(!(a===ma.start&&void 0!==f.buttons&&f.buttons>1)&&((!d.hover||!f.buttons)&&(oa||f.preventDefault(),f.calcPoint=f.points[e.ort],void c(f,d))))))},g=[];return a.split(" ").forEach(function(a){b.addEventListener(a,f,!!oa&&{passive:!0}),g.push([a,f])}),g}function G(a,b,c){var d,f,g=0===a.type.indexOf("touch"),h=0===a.type.indexOf("mouse"),i=0===a.type.indexOf("pointer");if(0===a.type.indexOf("MSPointer")&&(i=!0),g&&e.multitouch){var j=function(a){return a.target===c||c.contains(a.target)};if("touchstart"===a.type){var k=Array.prototype.filter.call(a.touches,j);if(k.length>1)return!1;d=k[0].pageX,f=k[0].pageY}else{var l=Array.prototype.find.call(a.changedTouches,j);if(!l)return!1;d=l.pageX,f=l.pageY}}else if(g){if(a.touches.length>1)return!1;d=a.changedTouches[0].pageX,f=a.changedTouches[0].pageY}return b=b||o(wa),(h||i)&&(d=a.clientX+b.x,f=a.clientY+b.y),a.pageOffset=b,a.points=[d,f],a.cursor=h||i,a}function H(a){var b=a-f(ha,e.ort),c=100*b/E();return e.dir?100-c:c}function I(a){var b=100,c=!1;return ia.forEach(function(d,e){if(!d.hasAttribute("disabled")){var f=Math.abs(qa[e]-a);f<b&&(c=e,b=f)}}),c}function J(a,b,c,d){var e=c.slice(),f=[!a,a],g=[a,!a];d=d.slice(),a&&d.reverse(),d.length>1?d.forEach(function(a,c){var d=S(e,a,e[a]+b,f[c],g[c],!1);!1===d?b=0:(b=d-e[a],e[a]=d)}):f=g=[!0];var h=!1;d.forEach(function(a,d){h=W(a,c[a]+b,f[d],g[d])||h}),h&&d.forEach(function(a){K("update",a),K("slide",a)})}function K(a,b,c){Object.keys(va).forEach(function(d){var f=d.split(".")[0];a===f&&va[d].forEach(function(a){a.call(ka,ua.map(e.format.to),b,ua.slice(),c||!1,qa.slice())})})}function L(a,b){"mouseout"===a.type&&"HTML"===a.target.nodeName&&null===a.relatedTarget&&N(a,b)}function M(a,b){if(-1===navigator.appVersion.indexOf("MSIE 9")&&0===a.buttons&&0!==b.buttonsProperty)return N(a,b);var c=(e.dir?-1:1)*(a.calcPoint-b.startCalcPoint);J(c>0,100*c/b.baseSize,b.locations,b.handleNumbers)}function N(a,b){b.handle&&(m(b.handle,e.cssClasses.active),sa-=1),b.listeners.forEach(function(a){xa.removeEventListener(a[0],a[1])}),0===sa&&(m(pa,e.cssClasses.drag),V(),a.cursor&&(ya.style.cursor="",ya.removeEventListener("selectstart",c))),b.handleNumbers.forEach(function(a){K("change",a),K("set",a),K("end",a)})}function O(a,b){var d;if(1===b.handleNumbers.length){var f=ia[b.handleNumbers[0]];if(f.hasAttribute("disabled"))return!1;d=f.children[0],sa+=1,l(d,e.cssClasses.active)}a.stopPropagation();var g=[],h=F(ma.move,xa,M,{target:a.target,handle:d,listeners:g,startCalcPoint:a.calcPoint,baseSize:E(),pageOffset:a.pageOffset,handleNumbers:b.handleNumbers,buttonsProperty:a.buttons,locations:qa.slice()}),i=F(ma.end,xa,N,{target:a.target,handle:d,listeners:g,handleNumbers:b.handleNumbers}),j=F("mouseout",xa,L,{target:a.target,handle:d,listeners:g,handleNumbers:b.handleNumbers});g.push.apply(g,h.concat(i,j)),a.cursor&&(ya.style.cursor=getComputedStyle(a.target).cursor,ia.length>1&&l(pa,e.cssClasses.drag),ya.addEventListener("selectstart",c,!1)),b.handleNumbers.forEach(function(a){K("start",a)})}function P(a){a.stopPropagation();var b=H(a.calcPoint),c=I(b);if(!1===c)return!1;e.events.snap||h(pa,e.cssClasses.tap,e.animationDuration),W(c,b,!0,!0),V(),K("slide",c,!0),K("update",c,!0),K("change",c,!0),K("set",c,!0),e.events.snap&&O(a,{handleNumbers:[c]})}function Q(a){var b=H(a.calcPoint),c=ta.getStep(b),d=ta.fromStepping(c);Object.keys(va).forEach(function(a){"hover"===a.split(".")[0]&&va[a].forEach(function(a){a.call(ka,d)})})}function R(a){a.fixed||ia.forEach(function(a,b){F(ma.start,a.children[0],O,{handleNumbers:[b]})}),a.tap&&F(ma.start,ha,P,{}),a.hover&&F(ma.move,ha,Q,{hover:!0}),a.drag&&ja.forEach(function(b,c){if(!1!==b&&0!==c&&c!==ja.length-1){var d=ia[c-1],f=ia[c],g=[b];l(b,e.cssClasses.draggable),a.fixed&&(g.push(d.children[0]),g.push(f.children[0])),g.forEach(function(a){F(ma.start,a,O,{handles:[d,f],handleNumbers:[c-1,c]})})}})}function S(a,b,c,d,f,g){return ia.length>1&&(d&&b>0&&(c=Math.max(c,a[b-1]+e.margin)),f&&b<ia.length-1&&(c=Math.min(c,a[b+1]-e.margin))),ia.length>1&&e.limit&&(d&&b>0&&(c=Math.min(c,a[b-1]+e.limit)),f&&b<ia.length-1&&(c=Math.max(c,a[b+1]-e.limit))),e.padding&&(0===b&&(c=Math.max(c,e.padding)),b===ia.length-1&&(c=Math.min(c,100-e.padding))),c=ta.getStep(c),!((c=i(c))===a[b]&&!g)&&c}function T(a){return a+"%"}function U(a,b){qa[a]=b,ua[a]=ta.fromStepping(b);var c=function(){ia[a].style[e.style]=T(b),X(a),X(a+1)};window.requestAnimationFrame&&e.useRequestAnimationFrame?window.requestAnimationFrame(c):c()}function V(){ra.forEach(function(a){var b=qa[a]>50?-1:1,c=3+(ia.length+b*a);ia[a].childNodes[0].style.zIndex=c})}function W(a,b,c,d){return!1!==(b=S(qa,a,b,c,d,!1))&&(U(a,b),!0)}function X(a){if(ja[a]){var b=0,c=100;0!==a&&(b=qa[a-1]),a!==ja.length-1&&(c=qa[a]),ja[a].style[e.style]=T(b),ja[a].style[e.styleOposite]=T(100-c)}}function Z(a,b){null!==a&&!1!==a&&("number"==typeof a&&(a=String(a)),!1===(a=e.format.from(a))||isNaN(a)||W(b,ta.toStepping(a),!1,!1))}function $(a,b){var c=j(a),d=void 0===qa[0];b=void 0===b||!!b,c.forEach(Z),e.animate&&!d&&h(pa,e.cssClasses.tap,e.animationDuration),ra.forEach(function(a){W(a,qa[a],!0,!1)}),V(),ra.forEach(function(a){K("update",a),null!==c[a]&&b&&K("set",a)})}function aa(a){$(e.start,a)}function ba(){var a=ua.map(e.format.to);return 1===a.length?a[0]:a}function ca(){for(var a in e.cssClasses)e.cssClasses.hasOwnProperty(a)&&m(pa,e.cssClasses[a]);for(;pa.firstChild;)pa.removeChild(pa.firstChild);delete pa.noUiSlider}function da(){return qa.map(function(a,b){var c=ta.getNearbySteps(a),d=ua[b],e=c.thisStep.step,f=null;!1!==e&&d+e>c.stepAfter.startValue&&(e=c.stepAfter.startValue-d),f=d>c.thisStep.startValue?c.thisStep.step:!1!==c.stepBefore.step&&d-c.stepBefore.highestStep,100===a?e=null:0===a&&(f=null);var g=ta.countStepDecimals();return null!==e&&!1!==e&&(e=Number(e.toFixed(g))),null!==f&&!1!==f&&(f=Number(f.toFixed(g))),[f,e]})}function ea(a,b){va[a]=va[a]||[],va[a].push(b),"update"===a.split(".")[0]&&ia.forEach(function(a,b){K("update",b)})}function fa(a){var b=a&&a.split(".")[0],c=b&&a.substring(b.length);Object.keys(va).forEach(function(a){var d=a.split(".")[0],e=a.substring(d.length);b&&b!==d||c&&c!==e||delete va[a]})}function ga(a,b){var c=ba(),d=["margin","limit","padding","range","animate","snap","step","format"];d.forEach(function(b){void 0!==a[b]&&(g[b]=a[b])});var f=Y(g);d.forEach(function(b){void 0!==a[b]&&(e[b]=f[b])}),ta=f.spectrum,e.margin=f.margin,e.limit=f.limit,e.padding=f.padding,e.pips&&D(e.pips),qa=[],$(a.start||c,b)}var ha,ia,ja,ka,la,ma=p(),na=r(),oa=na&&q(),pa=a,qa=[],ra=[],sa=0,ta=e.spectrum,ua=[],va={},wa=a.ownerDocument,xa=wa.documentElement,ya=wa.body;if(pa.noUiSlider)throw new Error("noUiSlider ("+_+"): Slider was already initialized.");return v(pa),u(e.connect,ha),ka={destroy:ca,steps:da,on:ea,off:fa,get:ba,set:$,reset:aa,__moveHandles:function(a,b,c){J(a,b,qa,c)},options:g,updateOptions:ga,target:pa,removePips:C,pips:D},R(e.events),$(e.start),e.pips&&D(e.pips),e.tooltips&&x(),y(),ka}function $(a,b){if(!a||!a.nodeName)throw new Error("noUiSlider ("+_+"): create requires a single element, got: "+a);var c=Y(b,a),d=Z(a,c,b);return a.noUiSlider=d,d}var _="10.1.0";C.prototype.getMargin=function(a){var b=this.xNumSteps[0];if(b&&a/b%1!=0)throw new Error("noUiSlider ("+_+"): 'limit', 'margin' and 'padding' must be divisible by step.");return 2===this.xPct.length&&t(this.xVal,a)},C.prototype.toStepping=function(a){return a=x(this.xVal,this.xPct,a)},C.prototype.fromStepping=function(a){return y(this.xVal,this.xPct,a)},C.prototype.getStep=function(a){return a=z(this.xPct,this.xSteps,this.snap,a)},C.prototype.getNearbySteps=function(a){var b=w(a,this.xPct);return{stepBefore:{startValue:this.xVal[b-2],step:this.xNumSteps[b-2],highestStep:this.xHighestCompleteStep[b-2]},thisStep:{startValue:this.xVal[b-1],step:this.xNumSteps[b-1],highestStep:this.xHighestCompleteStep[b-1]},stepAfter:{startValue:this.xVal[b-0],step:this.xNumSteps[b-0],highestStep:this.xHighestCompleteStep[b-0]}}},C.prototype.countStepDecimals=function(){var a=this.xNumSteps.map(k);return Math.max.apply(null,a)},C.prototype.convert=function(a){return this.getStep(this.toStepping(a))};var aa={to:function(a){return void 0!==a&&a.toFixed(2)},from:Number};return{version:_,create:$}});
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Twitter, Inc and other contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 xLs51
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,21 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/twemoji/twemoji-picker.js
4
+ # Twemoji-Picker v2017-06-03 implementation for J1 template
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ # https://github.com/xLs51/Twemoji-Picker
9
+ #
10
+ # Copyright (C) 2020 Juergen Adams
11
+ # Copyright (C) 2015 xLs51
12
+ #
13
+ # J1 Template is licensed under the MIT License.
14
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
15
+ # Twemoji-Picker is licensed under under the MIT License.
16
+ # For details, https://github.com/xLs51/Twemoji-Picker
17
+ #
18
+ # -----------------------------------------------------------------------------
19
+ */
20
+
21
+ (function(e,c,g){var b=150;var d={};var a="/assets/data/twa_v1.json";e.TwemojiPicker=function(j,i){var h=this;e.when(h._loadDatabase()).done(function(k){h.$el=e(j);h._init(i)})};e.TwemojiPicker.defaults={init:null,size:25,icon:"grinning",iconSize:25,height:100,width:null,category:["smile","cherry-blossom","video-game","oncoming-automobile","symbols"],categorySize:20,pickerPosition:null,pickerHeight:150,pickerWidth:null,placeholder:"",};e.TwemojiPicker.prototype={_init:function(h){this.options=e.extend(true,{},e.TwemojiPicker.defaults,h);this._initPicker();this._initCategory();this._initTwemoji();this._initText();this._initStyle();this._initEvents()},_loadDatabase:function f(){return e.ajax({url:a,success:function(h){if(typeof h=="string"){d=JSON.parse(h)}if(typeof h=="object"){d=h}}})},_initPicker:function(){var h=this;h.$id="#"+h.$el["0"].id;h.$pickerHeigth=h.options.height.replace("px","");h.$pickerHeigth=Number(h.$pickerHeigth);h.$wrapper=h.$el.wrap('<div class="twemoji-wrap"></div>').parent();h.$wrapper.append('<div class="twemoji-textarea" contentEditable="true" placeholder="'+h.options.placeholder+'"></div>');h.$wrapper.append('<div class="twemoji-textarea-duplicate"></div>');h.$wrapper.append('<div class="twemoji-icon-picker"> <span id="open-group" class="mr-2"><button type="button" name="open-group" class="btn btn-indigo btn-md btn-raised btn-flex mt-3 mb-3"><i class="toggle-button mdi mdi-toggle-switch-off mdi-lg mdi-md-indigo-50 mr-1"></i> Picker </button></span><span id="clear-textarea"><button type="button" name="clear-textarea" class="btn btn-red btn-md btn-raised btn-flex mt-3 mb-3"><i class="mdi mdi-sticker-emoji mdi-lg mdi-md-indigo-50 mr-1"></i> Clear </button></span></div>');h.$wrapper.append('<div class="twemoji-picker"></div>');h.$el.hide();h.$textarea=h.$wrapper.find(".twemoji-textarea");h.$textareaDuplicate=h.$wrapper.find(".twemoji-textarea-duplicate").hide();h.$iconPicker=h.$wrapper.find("#open-group");h.$clearTextarea=h.$wrapper.find("#clear-textarea");h.$picker=h.$wrapper.find(".twemoji-picker").hide()},_initCategory:function(){var h=this;var i=this.options.category;this.categoryName=["people","nature","object","place","symbol"];this.$picker.append('<div class="twemoji-picker-category"></div>');this.$pickerCategory=this.$picker.find(".twemoji-picker-category");e.each(this.categoryName,function(j,k){h.$pickerCategory.append('<span data-category="'+k+'">'+h.imageFromName(i[j])+"</span>")});this.$pickerCategory.find("span:first").addClass("active")},_initTwemoji:function(){var h=this;e.each(this.categoryName,function(j,k){h.$picker.append('<div class="twemoji-list '+k+'"></div>');e.each(d,function(i,l){if(l.category===k){h.$wrapper.find(".twemoji-picker ."+k).append('<span><img class="emoji" draggable="false" src="'+l.base64+'" alt="'+l.value+'" title="'+l.name+'"></span>')}})});this.$twemojiList=this.$picker.find(".twemoji-list");this.$twemojiList.not(":first").hide()},_initText:function(){if(this.options.init){var j=this.options.init;var i=/:([\w-]+):/g;var h;while(h==i.exec(j)){j=j.replace(h[0],this.imageFromName(h[1],true))}this.$textarea.html(j);this.copyTextArea(this.$textarea.html())}},_initStyle:function(){this.$wrapper.css({width:this.options.width?this.options.width:"100%",height:this.options.height?this.options.height:"",});this.$wrapper.find("img").css({width:this.options.size,height:this.options.size,});this.$iconPicker.css({width:this.options.iconSize,height:this.options.iconSize,});this.$pickerCategory.find("img").css({width:this.options.categorySize,height:this.options.categorySize,});this.$twemojiList.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",height:this.options.pickerHeight,});this.$picker.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",top:this.options.pickerPosition==="top"?"-"+this.$picker.outerHeight()+"px":"",})},_initEvents:function(){var h=this;this.$textarea.on("keyup",function(){h.copyTextArea(e(this).html())});this.$iconPicker.on("click",function(){var i=e(".twemoji-picker").height()+b;e("#picker").height(i);e(".toggle-button").toggleClass("mdi-toggle-switch-off mdi-toggle-switch");if(!h.openedPicker){h.openPicker()}else{h.closePicker();e("#picker").height(h.$pickerHeigth)}});this.$clearTextarea.on("click",function(){h.copyTextArea("");e(h.$id).val("");e(".twemoji-textarea > .emoji-span").remove()});this.$pickerCategory.find("span").on("click",function(){var i=e(this).data("category");h.openCategory(e(this),i)});this.$pickerCategory.find(".close").on("click",function(){if(h.openedPicker){h.closePicker()}});this.$twemojiList.find("img").on("click",function(){h.copyTwemoji(e(this))})},copyText:function(j){var i=document.createElement("textarea");i.setAttribute("style","position:fixed;opacity:0;top:100px;left:100px");i.value=j;document.body.appendChild(i);i.select();document.execCommand("copy");var h=document.createElement("div");h.setAttribute("class","copied");h.appendChild(document.createTextNode("Copied to Clipboard"));document.body.appendChild(h);setTimeout(function(){document.body.removeChild(i);document.body.removeChild(h)},1500)},openPicker:function(){this.$picker.show();this.openedPicker=true},closePicker:function(){this.$picker.hide();this.openedPicker=false},openCategory:function(h,i){this.$pickerCategory.find("span").removeClass("active");h.addClass("active");this.$twemojiList.not(".twemoji-picker ."+i).hide();this.$twemojiList.filter(".twemoji-picker ."+i).show()},copyTwemoji:function(l){var i=l.attr("alt");var k=l.attr("src");var j=l.attr("title");var h="emoji:"+j+"[]";this.copyText(h);this.$textarea.focus();this.pasteAtCursor('<span class="emoji-span"><img class="emoji" src="'+k+'" title="'+j+'" alt="'+i+'" width="'+this.options.size+'" height="'+this.options.size+'"> '+h+"</span> ");this.copyTextArea(this.$textarea.html())},copyTextArea:function(j){var h=this.$textareaDuplicate.html(j);h.find("img").replaceWith(function(){return this.alt});var i=h.html();this.$el.text(i)},imageFromName:function(i,j){var h=e.grep(d,function(k){return k.name==i});if(j){return'<img class="emoji" src="'+h[0].base64+'" alt="'+h[0].value+'" width="'+this.options.size+'" height="'+this.options.size+'">'}return'<img class="emoji" draggable="false" src="'+h[0].base64+'" alt="'+i+'">'},pasteAtCursor:function(m){var l,h;if(c.getSelection){l=c.getSelection();if(l.getRangeAt&&l.rangeCount){h=l.getRangeAt(0);h.deleteContents();var i=document.createElement("div");i.innerHTML=m;var n=document.createDocumentFragment(),k,j;while((k=i.firstChild)){j=n.appendChild(k)}h.insertNode(n);if(j){h=h.cloneRange();h.setStartAfter(j);h.collapse(true);l.removeAllRanges();l.addRange(h)}}}else{if(document.selection&&document.selection.type!="Control"){document.selection.createRange().pasteHTML(m)}}}};e.fn.twemojiPicker=function(i){var h=e.data(this,"twemojiPicker");this.each(function(){h?h._init():h=e.data(this,"twemojiPicker",new e.TwemojiPicker(this,i))});return h}})(jQuery,window);
@@ -0,0 +1,21 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/twemoji/twemoji-picker.js
4
+ # Twemoji-Picker v2017-06-03 implementation for J1 template
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ # https://github.com/xLs51/Twemoji-Picker
9
+ #
10
+ # Copyright (C) 2020 Juergen Adams
11
+ # Copyright (C) 2015 xLs51
12
+ #
13
+ # J1 Template is licensed under the MIT License.
14
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
15
+ # Twemoji-Picker is licensed under under the MIT License.
16
+ # For details, https://github.com/xLs51/Twemoji-Picker
17
+ #
18
+ # -----------------------------------------------------------------------------
19
+ */
20
+
21
+ (function(e,c,g){var b=150;var d={};var a="/assets/data/twa_v1.json";e.TwemojiPicker=function(j,i){var h=this;e.when(h._loadDatabase()).done(function(k){h.$el=e(j);h._init(i)})};e.TwemojiPicker.defaults={init:null,size:25,icon:"grinning",iconSize:25,height:100,width:null,category:["smile","cherry-blossom","video-game","oncoming-automobile","symbols"],categorySize:20,pickerPosition:null,pickerHeight:150,pickerWidth:null,placeholder:"",};e.TwemojiPicker.prototype={_init:function(h){this.options=e.extend(true,{},e.TwemojiPicker.defaults,h);this._initPicker();this._initCategory();this._initTwemoji();this._initText();this._initStyle();this._initEvents()},_loadDatabase:function f(){return e.ajax({url:a,success:function(h){if(typeof h=="string"){d=JSON.parse(h)}if(typeof h=="object"){d=h}}})},_initPicker:function(){var h=this;h.$id="#"+h.$el["0"].id;h.$pickerHeigth=h.options.height.replace("px","");h.$pickerHeigth=Number(h.$pickerHeigth);h.$wrapper=h.$el.wrap('<div class="twemoji-wrap"></div>').parent();h.$wrapper.append('<div class="twemoji-textarea" contentEditable="true" placeholder="'+h.options.placeholder+'"></div>');h.$wrapper.append('<div class="twemoji-textarea-duplicate"></div>');h.$wrapper.append('<div class="twemoji-icon-picker"> <span id="open-group" class="mr-2"><button type="button" name="open-group" class="btn btn-indigo btn-md btn-raised btn-flex mt-3 mb-3"><i class="toggle-button mdi mdi-toggle-switch-off mdi-lg mdi-md-indigo-50 mr-1"></i> Picker </button></span><span id="clear-textarea"><button type="button" name="clear-textarea" class="btn btn-red btn-md btn-raised btn-flex mt-3 mb-3"><i class="mdi mdi-sticker-emoji mdi-lg mdi-md-indigo-50 mr-1"></i> Clear </button></span></div>');h.$wrapper.append('<div class="twemoji-picker"></div>');h.$el.hide();h.$textarea=h.$wrapper.find(".twemoji-textarea");h.$textareaDuplicate=h.$wrapper.find(".twemoji-textarea-duplicate").hide();h.$iconPicker=h.$wrapper.find("#open-group");h.$clearTextarea=h.$wrapper.find("#clear-textarea");h.$picker=h.$wrapper.find(".twemoji-picker").hide()},_initCategory:function(){var h=this;var i=this.options.category;this.categoryName=["people","nature","object","place","symbol"];this.$picker.append('<div class="twemoji-picker-category"></div>');this.$pickerCategory=this.$picker.find(".twemoji-picker-category");e.each(this.categoryName,function(j,k){h.$pickerCategory.append('<span data-category="'+k+'">'+h.imageFromName(i[j])+"</span>")});this.$pickerCategory.find("span:first").addClass("active")},_initTwemoji:function(){var h=this;e.each(this.categoryName,function(j,k){h.$picker.append('<div class="twemoji-list '+k+'"></div>');e.each(d,function(i,l){if(l.category===k){h.$wrapper.find(".twemoji-picker ."+k).append('<span><img class="emoji" draggable="false" src="'+l.base64+'" alt="'+l.value+'" title="'+l.name+'"></span>')}})});this.$twemojiList=this.$picker.find(".twemoji-list");this.$twemojiList.not(":first").hide()},_initText:function(){if(this.options.init){var j=this.options.init;var i=/:([\w-]+):/g;var h;while(h==i.exec(j)){j=j.replace(h[0],this.imageFromName(h[1],true))}this.$textarea.html(j);this.copyTextArea(this.$textarea.html())}},_initStyle:function(){this.$wrapper.css({width:this.options.width?this.options.width:"100%",height:this.options.height?this.options.height:"",});this.$wrapper.find("img").css({width:this.options.size,height:this.options.size,});this.$iconPicker.css({width:this.options.iconSize,height:this.options.iconSize,});this.$pickerCategory.find("img").css({width:this.options.categorySize,height:this.options.categorySize,});this.$twemojiList.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",height:this.options.pickerHeight,});this.$picker.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",top:this.options.pickerPosition==="top"?"-"+this.$picker.outerHeight()+"px":"",})},_initEvents:function(){var h=this;this.$textarea.on("keyup",function(){h.copyTextArea(e(this).html())});this.$iconPicker.on("click",function(){var i=e(".twemoji-picker").height()+b;e("#picker").height(i);e(".toggle-button").toggleClass("mdi-toggle-switch-off mdi-toggle-switch");if(!h.openedPicker){h.openPicker()}else{h.closePicker();e("#picker").height(h.$pickerHeigth)}});this.$clearTextarea.on("click",function(){h.copyTextArea("");e(h.$id).val("");e(".twemoji-textarea > .emoji-span").remove()});this.$pickerCategory.find("span").on("click",function(){var i=e(this).data("category");h.openCategory(e(this),i)});this.$pickerCategory.find(".close").on("click",function(){if(h.openedPicker){h.closePicker()}});this.$twemojiList.find("img").on("click",function(){h.copyTwemoji(e(this))})},copyText:function(j){var i=document.createElement("textarea");i.setAttribute("style","position:fixed;opacity:0;top:100px;left:100px");i.value=j;document.body.appendChild(i);i.select();document.execCommand("copy");var h=document.createElement("div");h.setAttribute("class","copied");h.appendChild(document.createTextNode("Copied to Clipboard"));document.body.appendChild(h);setTimeout(function(){document.body.removeChild(i);document.body.removeChild(h)},1500)},openPicker:function(){this.$picker.show();this.openedPicker=true},closePicker:function(){this.$picker.hide();this.openedPicker=false},openCategory:function(h,i){this.$pickerCategory.find("span").removeClass("active");h.addClass("active");this.$twemojiList.not(".twemoji-picker ."+i).hide();this.$twemojiList.filter(".twemoji-picker ."+i).show()},copyTwemoji:function(l){var i=l.attr("alt");var k=l.attr("src");var j=l.attr("title");var h="emoji:"+j+"[]";this.copyText(h);this.$textarea.focus();this.pasteAtCursor('<span class="emoji-span"><img class="emoji" src="'+k+'" title="'+j+'" alt="'+i+'" width="'+this.options.size+'" height="'+this.options.size+'"> '+h+"</span> ");this.copyTextArea(this.$textarea.html())},copyTextArea:function(j){var h=this.$textareaDuplicate.html(j);h.find("img").replaceWith(function(){return this.alt});var i=h.html();this.$el.text(i)},imageFromName:function(i,j){var h=e.grep(d,function(k){return k.name==i});if(j){return'<img class="emoji" src="'+h[0].base64+'" alt="'+h[0].value+'" width="'+this.options.size+'" height="'+this.options.size+'">'}return'<img class="emoji" draggable="false" src="'+h[0].base64+'" alt="'+i+'">'},pasteAtCursor:function(m){var l,h;if(c.getSelection){l=c.getSelection();if(l.getRangeAt&&l.rangeCount){h=l.getRangeAt(0);h.deleteContents();var i=document.createElement("div");i.innerHTML=m;var n=document.createDocumentFragment(),k,j;while((k=i.firstChild)){j=n.appendChild(k)}h.insertNode(n);if(j){h=h.cloneRange();h.setStartAfter(j);h.collapse(true);l.removeAllRanges();l.addRange(h)}}}else{if(document.selection&&document.selection.type!="Control"){document.selection.createRange().pasteHTML(m)}}}};e.fn.twemojiPicker=function(i){var h=e.data(this,"twemojiPicker");this.each(function(){h?h._init():h=e.data(this,"twemojiPicker",new e.TwemojiPicker(this,i))});return h}})(jQuery,window);
@@ -0,0 +1,590 @@
1
+
2
+ /*
3
+ # -----------------------------------------------------------------------------
4
+ # ~/twemoji/twemoji.js
5
+ # Twemoji v13.0.0 implementation for J1 template
6
+ #
7
+ # Product/Info:
8
+ # https://jekyll.one
9
+ # https://github.com/twitter/twemoji
10
+ #
11
+ # Copyright (C) 2020 Juergen Adams
12
+ # Copyright (C) 2018 Twitter, Inc and other contributors
13
+ #
14
+ # J1 Template is licensed under the MIT License.
15
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
16
+ # Twemoji is licensed under under the MIT License.
17
+ # See: https://github.com/twitter/twemoji/blob/gh-pages/LICENSE
18
+ #
19
+ # -----------------------------------------------------------------------------
20
+ */
21
+
22
+ /*! Copyright Twitter Inc. and other contributors. Licensed under MIT *//*
23
+ https://github.com/twitter/twemoji/blob/gh-pages/LICENSE
24
+ */
25
+
26
+ /*jslint indent: 2, browser: true, bitwise: true, plusplus: true */
27
+
28
+ var twemoji = (function (
29
+ // WARNING: this file is generated automatically via
30
+ // `node scripts/build.js`
31
+ // please update its `createTwemoji` function
32
+ // at the bottom of the same file instead.
33
+
34
+ ) {
35
+ 'use strict';
36
+
37
+ /*jshint maxparams:4 */
38
+
39
+ var
40
+ // the exported module object
41
+ twemoji = {
42
+
43
+
44
+ /////////////////////////
45
+ // properties //
46
+ /////////////////////////
47
+
48
+ // default assets url, by default will be Twitter Inc. CDN
49
+ base: 'https://twemoji.maxcdn.com/v/13.0.0/',
50
+
51
+ // default assets file extensions, by default '.png'
52
+ ext: '.png',
53
+
54
+ // default assets/folder size, by default "72x72"
55
+ // available via Twitter CDN: 72
56
+ size: '72x72',
57
+
58
+ // default class name, by default 'emoji'
59
+ className: 'emoji',
60
+
61
+ // basic utilities / helpers to convert code points
62
+ // to JavaScript surrogates and vice versa
63
+ convert: {
64
+
65
+ /**
66
+ * Given an HEX codepoint, returns UTF16 surrogate pairs.
67
+ *
68
+ * @param string generic codepoint, i.e. '1F4A9'
69
+ * @return string codepoint transformed into utf16 surrogates pair,
70
+ * i.e. \uD83D\uDCA9
71
+ *
72
+ * @example
73
+ * twemoji.convert.fromCodePoint('1f1e8');
74
+ * // "\ud83c\udde8"
75
+ *
76
+ * '1f1e8-1f1f3'.split('-').map(twemoji.convert.fromCodePoint).join('')
77
+ * // "\ud83c\udde8\ud83c\uddf3"
78
+ */
79
+ fromCodePoint: fromCodePoint,
80
+
81
+ /**
82
+ * Given UTF16 surrogate pairs, returns the equivalent HEX codepoint.
83
+ *
84
+ * @param string generic utf16 surrogates pair, i.e. \uD83D\uDCA9
85
+ * @param string optional separator for double code points, default='-'
86
+ * @return string utf16 transformed into codepoint, i.e. '1F4A9'
87
+ *
88
+ * @example
89
+ * twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3');
90
+ * // "1f1e8-1f1f3"
91
+ *
92
+ * twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3', '~');
93
+ * // "1f1e8~1f1f3"
94
+ */
95
+ toCodePoint: toCodePoint
96
+ },
97
+
98
+
99
+ /////////////////////////
100
+ // methods //
101
+ /////////////////////////
102
+
103
+ /**
104
+ * User first: used to remove missing images
105
+ * preserving the original text intent when
106
+ * a fallback for network problems is desired.
107
+ * Automatically added to Image nodes via DOM
108
+ * It could be recycled for string operations via:
109
+ * $('img.emoji').on('error', twemoji.onerror)
110
+ */
111
+ onerror: function onerror() {
112
+ if (this.parentNode) {
113
+ this.parentNode.replaceChild(createText(this.alt, false), this);
114
+ }
115
+ },
116
+
117
+ /**
118
+ * Main method/logic to generate either <img> tags or HTMLImage nodes.
119
+ * "emojify" a generic text or DOM Element.
120
+ *
121
+ * @overloads
122
+ *
123
+ * String replacement for `innerHTML` or server side operations
124
+ * twemoji.parse(string);
125
+ * twemoji.parse(string, Function);
126
+ * twemoji.parse(string, Object);
127
+ *
128
+ * HTMLElement tree parsing for safer operations over existing DOM
129
+ * twemoji.parse(HTMLElement);
130
+ * twemoji.parse(HTMLElement, Function);
131
+ * twemoji.parse(HTMLElement, Object);
132
+ *
133
+ * @param string|HTMLElement the source to parse and enrich with emoji.
134
+ *
135
+ * string replace emoji matches with <img> tags.
136
+ * Mainly used to inject emoji via `innerHTML`
137
+ * It does **not** parse the string or validate it,
138
+ * it simply replaces found emoji with a tag.
139
+ * NOTE: be sure this won't affect security.
140
+ *
141
+ * HTMLElement walk through the DOM tree and find emoji
142
+ * that are inside **text node only** (nodeType === 3)
143
+ * Mainly used to put emoji in already generated DOM
144
+ * without compromising surrounding nodes and
145
+ * **avoiding** the usage of `innerHTML`.
146
+ * NOTE: Using DOM elements instead of strings should
147
+ * improve security without compromising too much
148
+ * performance compared with a less safe `innerHTML`.
149
+ *
150
+ * @param Function|Object [optional]
151
+ * either the callback that will be invoked or an object
152
+ * with all properties to use per each found emoji.
153
+ *
154
+ * Function if specified, this will be invoked per each emoji
155
+ * that has been found through the RegExp except
156
+ * those follwed by the invariant \uFE0E ("as text").
157
+ * Once invoked, parameters will be:
158
+ *
159
+ * iconId:string the lower case HEX code point
160
+ * i.e. "1f4a9"
161
+ *
162
+ * options:Object all info for this parsing operation
163
+ *
164
+ * variant:char the optional \uFE0F ("as image")
165
+ * variant, in case this info
166
+ * is anyhow meaningful.
167
+ * By default this is ignored.
168
+ *
169
+ * If such callback will return a falsy value instead
170
+ * of a valid `src` to use for the image, nothing will
171
+ * actually change for that specific emoji.
172
+ *
173
+ *
174
+ * Object if specified, an object containing the following properties
175
+ *
176
+ * callback Function the callback to invoke per each found emoji.
177
+ * base string the base url, by default twemoji.base
178
+ * ext string the image extension, by default twemoji.ext
179
+ * size string the assets size, by default twemoji.size
180
+ *
181
+ * @example
182
+ *
183
+ * twemoji.parse("I \u2764\uFE0F emoji!");
184
+ * // I <img class="emoji" draggable="false" alt="❤️" src="/assets/2764.gif"/> emoji!
185
+ *
186
+ *
187
+ * twemoji.parse("I \u2764\uFE0F emoji!", function(iconId, options) {
188
+ * return '/assets/' + iconId + '.gif';
189
+ * });
190
+ * // I <img class="emoji" draggable="false" alt="❤️" src="/assets/2764.gif"/> emoji!
191
+ *
192
+ *
193
+ * twemoji.parse("I \u2764\uFE0F emoji!", {
194
+ * size: 72,
195
+ * callback: function(iconId, options) {
196
+ * return '/assets/' + options.size + '/' + iconId + options.ext;
197
+ * }
198
+ * });
199
+ * // I <img class="emoji" draggable="false" alt="❤️" src="/assets/72x72/2764.png"/> emoji!
200
+ *
201
+ */
202
+ parse: parse,
203
+
204
+ /**
205
+ * Given a string, invokes the callback argument
206
+ * per each emoji found in such string.
207
+ * This is the most raw version used by
208
+ * the .parse(string) method itself.
209
+ *
210
+ * @param string generic string to parse
211
+ * @param Function a generic callback that will be
212
+ * invoked to replace the content.
213
+ * This calback wil receive standard
214
+ * String.prototype.replace(str, callback)
215
+ * arguments such:
216
+ * callback(
217
+ * rawText, // the emoji match
218
+ * );
219
+ *
220
+ * and others commonly received via replace.
221
+ */
222
+ replace: replace,
223
+
224
+ /**
225
+ * Simplify string tests against emoji.
226
+ *
227
+ * @param string some text that might contain emoji
228
+ * @return boolean true if any emoji was found, false otherwise.
229
+ *
230
+ * @example
231
+ *
232
+ * if (twemoji.test(someContent)) {
233
+ * console.log("emoji All The Things!");
234
+ * }
235
+ */
236
+ test: test
237
+ },
238
+
239
+ // used to escape HTML special chars in attributes
240
+ escaper = {
241
+ '&': '&amp;',
242
+ '<': '&lt;',
243
+ '>': '&gt;',
244
+ "'": '&#39;',
245
+ '"': '&quot;'
246
+ },
247
+
248
+ // RegExp based on emoji's official Unicode standards
249
+ // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
250
+ re = /(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,
251
+
252
+ // avoid runtime RegExp creation for not so smart,
253
+ // not JIT based, and old browsers / engines
254
+ UFE0Fg = /\uFE0F/g,
255
+
256
+ // avoid using a string literal like '\u200D' here because minifiers expand it inline
257
+ U200D = String.fromCharCode(0x200D),
258
+
259
+ // used to find HTML special chars in attributes
260
+ rescaper = /[&<>'"]/g,
261
+
262
+ // nodes with type 1 which should **not** be parsed
263
+ shouldntBeParsed = /^(?:iframe|noframes|noscript|script|select|style|textarea)$/,
264
+
265
+ // just a private shortcut
266
+ fromCharCode = String.fromCharCode;
267
+
268
+ return twemoji;
269
+
270
+
271
+ /////////////////////////
272
+ // private functions //
273
+ // declaration //
274
+ /////////////////////////
275
+
276
+ /**
277
+ * Shortcut to create text nodes
278
+ * @param string text used to create DOM text node
279
+ * @return Node a DOM node with that text
280
+ */
281
+ function createText(text, clean) {
282
+ return document.createTextNode(clean ? text.replace(UFE0Fg, '') : text);
283
+ }
284
+
285
+ /**
286
+ * Utility function to escape html attribute text
287
+ * @param string text use in HTML attribute
288
+ * @return string text encoded to use in HTML attribute
289
+ */
290
+ function escapeHTML(s) {
291
+ return s.replace(rescaper, replacer);
292
+ }
293
+
294
+ /**
295
+ * Default callback used to generate emoji src
296
+ * based on Twitter CDN
297
+ * @param string the emoji codepoint string
298
+ * @param string the default size to use, i.e. "36x36"
299
+ * @return string the image source to use
300
+ */
301
+ function defaultImageSrcGenerator(icon, options) {
302
+ return ''.concat(options.base, options.size, '/', icon, options.ext);
303
+ }
304
+
305
+ /**
306
+ * Given a generic DOM nodeType 1, walk through all children
307
+ * and store every nodeType 3 (#text) found in the tree.
308
+ * @param Element a DOM Element with probably some text in it
309
+ * @param Array the list of previously discovered text nodes
310
+ * @return Array same list with new discovered nodes, if any
311
+ */
312
+ function grabAllTextNodes(node, allText) {
313
+ var
314
+ childNodes = node.childNodes,
315
+ length = childNodes.length,
316
+ subnode,
317
+ nodeType;
318
+ while (length--) {
319
+ subnode = childNodes[length];
320
+ nodeType = subnode.nodeType;
321
+ // parse emoji only in text nodes
322
+ if (nodeType === 3) {
323
+ // collect them to process emoji later
324
+ allText.push(subnode);
325
+ }
326
+ // ignore all nodes that are not type 1, that are svg, or that
327
+ // should not be parsed as script, style, and others
328
+ else if (nodeType === 1 && !('ownerSVGElement' in subnode) &&
329
+ !shouldntBeParsed.test(subnode.nodeName.toLowerCase())) {
330
+ grabAllTextNodes(subnode, allText);
331
+ }
332
+ }
333
+ return allText;
334
+ }
335
+
336
+ /**
337
+ * Used to both remove the possible variant
338
+ * and to convert utf16 into code points.
339
+ * If there is a zero-width-joiner (U+200D), leave the variants in.
340
+ * @param string the raw text of the emoji match
341
+ * @return string the code point
342
+ */
343
+ function grabTheRightIcon(rawText) {
344
+ // if variant is present as \uFE0F
345
+ return toCodePoint(rawText.indexOf(U200D) < 0 ?
346
+ rawText.replace(UFE0Fg, '') :
347
+ rawText
348
+ );
349
+ }
350
+
351
+ /**
352
+ * DOM version of the same logic / parser:
353
+ * emojify all found sub-text nodes placing images node instead.
354
+ * @param Element generic DOM node with some text in some child node
355
+ * @param Object options containing info about how to parse
356
+ *
357
+ * .callback Function the callback to invoke per each found emoji.
358
+ * .base string the base url, by default twemoji.base
359
+ * .ext string the image extension, by default twemoji.ext
360
+ * .size string the assets size, by default twemoji.size
361
+ *
362
+ * @return Element same generic node with emoji in place, if any.
363
+ */
364
+ function parseNode(node, options) {
365
+ var
366
+ allText = grabAllTextNodes(node, []),
367
+ length = allText.length,
368
+ attrib,
369
+ attrname,
370
+ modified,
371
+ fragment,
372
+ subnode,
373
+ text,
374
+ match,
375
+ i,
376
+ index,
377
+ img,
378
+ rawText,
379
+ iconId,
380
+ src;
381
+ while (length--) {
382
+ modified = false;
383
+ fragment = document.createDocumentFragment();
384
+ subnode = allText[length];
385
+ text = subnode.nodeValue;
386
+ i = 0;
387
+ while ((match = re.exec(text))) {
388
+ index = match.index;
389
+ if (index !== i) {
390
+ fragment.appendChild(
391
+ createText(text.slice(i, index), true)
392
+ );
393
+ }
394
+ rawText = match[0];
395
+ iconId = grabTheRightIcon(rawText);
396
+ i = index + rawText.length;
397
+ src = options.callback(iconId, options);
398
+ if (iconId && src) {
399
+ img = new Image();
400
+ img.onerror = options.onerror;
401
+ img.setAttribute('draggable', 'false');
402
+ attrib = options.attributes(rawText, iconId);
403
+ for (attrname in attrib) {
404
+ if (
405
+ attrib.hasOwnProperty(attrname) &&
406
+ // don't allow any handlers to be set + don't allow overrides
407
+ attrname.indexOf('on') !== 0 &&
408
+ !img.hasAttribute(attrname)
409
+ ) {
410
+ img.setAttribute(attrname, attrib[attrname]);
411
+ }
412
+ }
413
+ img.className = options.className;
414
+ img.alt = rawText;
415
+ img.src = src;
416
+ modified = true;
417
+ fragment.appendChild(img);
418
+ }
419
+ if (!img) fragment.appendChild(createText(rawText, false));
420
+ img = null;
421
+ }
422
+ // is there actually anything to replace in here ?
423
+ if (modified) {
424
+ // any text left to be added ?
425
+ if (i < text.length) {
426
+ fragment.appendChild(
427
+ createText(text.slice(i), true)
428
+ );
429
+ }
430
+ // replace the text node only, leave intact
431
+ // anything else surrounding such text
432
+ subnode.parentNode.replaceChild(fragment, subnode);
433
+ }
434
+ }
435
+ return node;
436
+ }
437
+
438
+ /**
439
+ * String/HTML version of the same logic / parser:
440
+ * emojify a generic text placing images tags instead of surrogates pair.
441
+ * @param string generic string with possibly some emoji in it
442
+ * @param Object options containing info about how to parse
443
+ *
444
+ * .callback Function the callback to invoke per each found emoji.
445
+ * .base string the base url, by default twemoji.base
446
+ * .ext string the image extension, by default twemoji.ext
447
+ * .size string the assets size, by default twemoji.size
448
+ *
449
+ * @return the string with <img tags> replacing all found and parsed emoji
450
+ */
451
+ function parseString(str, options) {
452
+ return replace(str, function (rawText) {
453
+ var
454
+ ret = rawText,
455
+ iconId = grabTheRightIcon(rawText),
456
+ src = options.callback(iconId, options),
457
+ attrib,
458
+ attrname;
459
+ if (iconId && src) {
460
+ // recycle the match string replacing the emoji
461
+ // with its image counter part
462
+ ret = '<img '.concat(
463
+ 'class="', options.className, '" ',
464
+ 'draggable="false" ',
465
+ // needs to preserve user original intent
466
+ // when variants should be copied and pasted too
467
+ 'alt="',
468
+ rawText,
469
+ '"',
470
+ ' src="',
471
+ src,
472
+ '"'
473
+ );
474
+ attrib = options.attributes(rawText, iconId);
475
+ for (attrname in attrib) {
476
+ if (
477
+ attrib.hasOwnProperty(attrname) &&
478
+ // don't allow any handlers to be set + don't allow overrides
479
+ attrname.indexOf('on') !== 0 &&
480
+ ret.indexOf(' ' + attrname + '=') === -1
481
+ ) {
482
+ ret = ret.concat(' ', attrname, '="', escapeHTML(attrib[attrname]), '"');
483
+ }
484
+ }
485
+ ret = ret.concat('/>');
486
+ }
487
+ return ret;
488
+ });
489
+ }
490
+
491
+ /**
492
+ * Function used to actually replace HTML special chars
493
+ * @param string HTML special char
494
+ * @return string encoded HTML special char
495
+ */
496
+ function replacer(m) {
497
+ return escaper[m];
498
+ }
499
+
500
+ /**
501
+ * Default options.attribute callback
502
+ * @return null
503
+ */
504
+ function returnNull() {
505
+ return null;
506
+ }
507
+
508
+ /**
509
+ * Given a generic value, creates its squared counterpart if it's a number.
510
+ * As example, number 36 will return '36x36'.
511
+ * @param any a generic value.
512
+ * @return any a string representing asset size, i.e. "36x36"
513
+ * only in case the value was a number.
514
+ * Returns initial value otherwise.
515
+ */
516
+ function toSizeSquaredAsset(value) {
517
+ return typeof value === 'number' ?
518
+ value + 'x' + value :
519
+ value;
520
+ }
521
+
522
+
523
+ /////////////////////////
524
+ // exported functions //
525
+ // declaration //
526
+ /////////////////////////
527
+
528
+ function fromCodePoint(codepoint) {
529
+ var code = typeof codepoint === 'string' ?
530
+ parseInt(codepoint, 16) : codepoint;
531
+ if (code < 0x10000) {
532
+ return fromCharCode(code);
533
+ }
534
+ code -= 0x10000;
535
+ return fromCharCode(
536
+ 0xD800 + (code >> 10),
537
+ 0xDC00 + (code & 0x3FF)
538
+ );
539
+ }
540
+
541
+ function parse(what, how) {
542
+ if (!how || typeof how === 'function') {
543
+ how = {callback: how};
544
+ }
545
+ // if first argument is string, inject html <img> tags
546
+ // otherwise use the DOM tree and parse text nodes only
547
+ return (typeof what === 'string' ? parseString : parseNode)(what, {
548
+ callback: how.callback || defaultImageSrcGenerator,
549
+ attributes: typeof how.attributes === 'function' ? how.attributes : returnNull,
550
+ base: typeof how.base === 'string' ? how.base : twemoji.base,
551
+ ext: how.ext || twemoji.ext,
552
+ size: how.folder || toSizeSquaredAsset(how.size || twemoji.size),
553
+ className: how.className || twemoji.className,
554
+ onerror: how.onerror || twemoji.onerror
555
+ });
556
+ }
557
+
558
+ function replace(text, callback) {
559
+ return String(text).replace(re, callback);
560
+ }
561
+
562
+ function test(text) {
563
+ // IE6 needs a reset before too
564
+ re.lastIndex = 0;
565
+ var result = re.test(text);
566
+ re.lastIndex = 0;
567
+ return result;
568
+ }
569
+
570
+ function toCodePoint(unicodeSurrogates, sep) {
571
+ var
572
+ r = [],
573
+ c = 0,
574
+ p = 0,
575
+ i = 0;
576
+ while (i < unicodeSurrogates.length) {
577
+ c = unicodeSurrogates.charCodeAt(i++);
578
+ if (p) {
579
+ r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
580
+ p = 0;
581
+ } else if (0xD800 <= c && c <= 0xDBFF) {
582
+ p = c;
583
+ } else {
584
+ r.push(c.toString(16));
585
+ }
586
+ }
587
+ return r.join(sep || '-');
588
+ }
589
+
590
+ }());