j1-template 2020.0.7 → 2020.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (341) 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/generator.html +6 -6
  13. data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +10 -5
  14. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  15. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +7 -7
  16. data/_layouts/default.html +18 -8
  17. data/assets/data/authclient.html +19 -8
  18. data/assets/data/banner.html +24 -23
  19. data/assets/data/carousel.json +31 -21
  20. data/assets/data/cookie_consent.html +81 -52
  21. data/assets/data/footer.html +15 -5
  22. data/assets/data/galleries.json +91 -81
  23. data/assets/data/gallery_customizer.html +20 -10
  24. data/assets/data/mdi_icons.json +56 -1
  25. data/assets/data/menu.html +14 -6
  26. data/assets/data/mmenu.html +47 -93
  27. data/assets/data/mmenu_sidebar.html +41 -44
  28. data/assets/data/mmenu_toc.html +20 -3
  29. data/assets/data/panel.html +35 -22
  30. data/assets/data/quicklinks.html +15 -3
  31. data/assets/data/{search.yml → search.json} +44 -14
  32. data/assets/data/ssm.html +30 -14
  33. data/assets/data/themes.json +17 -6
  34. data/assets/data/twa_v1.json +7035 -6978
  35. data/assets/themes/j1/adapter/js/algolia.js +34 -15
  36. data/assets/themes/j1/adapter/js/attic.js +66 -45
  37. data/assets/themes/j1/adapter/js/carousel.js +43 -22
  38. data/assets/themes/j1/adapter/js/clipboard.js +232 -0
  39. data/assets/themes/j1/adapter/js/cookie_consent.js +21 -4
  40. data/assets/themes/j1/adapter/js/framer.js +18 -3
  41. data/assets/themes/j1/adapter/js/gallery_customizer.js +27 -10
  42. data/assets/themes/j1/adapter/js/j1.js +349 -759
  43. data/assets/themes/j1/adapter/js/{justified_gallery.js → jf_gallery.js} +64 -38
  44. data/assets/themes/j1/adapter/js/lightbox.js +20 -3
  45. data/assets/themes/j1/adapter/js/logger.js +23 -6
  46. data/assets/themes/j1/adapter/js/mdb.js +167 -0
  47. data/assets/themes/j1/adapter/js/mmenu.js +29 -11
  48. data/assets/themes/j1/adapter/js/navigator.js +126 -139
  49. data/assets/themes/j1/adapter/js/searcher.js +22 -4
  50. data/assets/themes/j1/adapter/js/ssm.js +96 -63
  51. data/assets/themes/j1/adapter/js/themer.js +35 -52
  52. data/assets/themes/j1/adapter/js/toccer.js +69 -158
  53. data/assets/themes/j1/core/css/theme_extensions.css +120 -1230
  54. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  55. data/assets/themes/j1/core/css/uno.css +253 -1275
  56. data/assets/themes/j1/core/css/uno.min.css +1 -1
  57. data/assets/themes/j1/core/css/vendor.css +7 -57
  58. data/assets/themes/j1/core/css/vendor.min.css +2 -2
  59. data/assets/themes/j1/core/js/template.js +16 -86
  60. data/assets/themes/j1/core/js/template.js.map +1 -1
  61. data/assets/themes/j1/core/js/template.min.js +1 -1
  62. data/assets/themes/j1/extensions/bsDatepicker/css/datepicker.css +203 -0
  63. data/assets/themes/j1/extensions/bsDatepicker/css/theme/uno.css +235 -0
  64. data/assets/themes/j1/extensions/bsDatepicker/js/datepicker.js +509 -0
  65. data/assets/themes/j1/extensions/bsDatepicker/less/datepicker.less +122 -0
  66. data/assets/themes/j1/extensions/bsThemeSwitcher/js/switcher.js +425 -0
  67. data/assets/themes/j1/extensions/bsThemeSwitcher/js/switcher.min.js +20 -0
  68. data/assets/themes/j1/extensions/clipboard/LICENSE +20 -0
  69. data/assets/themes/j1/extensions/clipboard/css/theme/uno.css +52 -0
  70. data/assets/themes/j1/extensions/clipboard/css/theme/uno.min.css +52 -0
  71. data/assets/themes/j1/extensions/clipboard/js/clipboard.js +975 -0
  72. data/assets/themes/j1/extensions/clipboard/js/clipboard.min.js +7 -0
  73. data/assets/themes/j1/extensions/{iconify → iconifyAPI}/js/iconify.min.js +0 -0
  74. data/assets/themes/j1/extensions/iframeResizer/LICENSE +21 -0
  75. data/assets/themes/j1/extensions/iframeResizer/examples/frame.absolute.html +127 -0
  76. data/assets/themes/j1/extensions/iframeResizer/examples/frame.content.html +157 -0
  77. data/assets/themes/j1/extensions/iframeResizer/examples/frame.hover.html +68 -0
  78. data/assets/themes/j1/extensions/iframeResizer/examples/frame.nested.html +100 -0
  79. data/assets/themes/j1/extensions/iframeResizer/examples/frame.textarea.html +45 -0
  80. data/assets/themes/j1/extensions/iframeResizer/examples/frame.tolerance.html +113 -0
  81. data/assets/themes/j1/extensions/iframeResizer/examples/index.html +83 -0
  82. data/assets/themes/j1/extensions/iframeResizer/examples/two.html +88 -0
  83. data/assets/themes/j1/extensions/iframeResizer/js/client/iframeResizer.contentWindow.js +1288 -0
  84. data/assets/themes/j1/extensions/iframeResizer/js/client/iframeResizer.contentWindow.map +1 -0
  85. data/assets/themes/j1/extensions/iframeResizer/js/client/iframeResizer.contentWindow.min.js +10 -0
  86. data/assets/themes/j1/extensions/iframeResizer/js/iframeResizer.js +1390 -0
  87. data/assets/themes/j1/extensions/iframeResizer/js/iframeResizer.map +1 -0
  88. data/assets/themes/j1/extensions/iframeResizer/js/iframeResizer.min.js +9 -0
  89. data/assets/themes/j1/extensions/jqMouseWheel/README.md +76 -0
  90. data/assets/themes/j1/extensions/jqMouseWheel/js/jquery.mousewheel.js +221 -0
  91. data/assets/themes/j1/extensions/jqMouseWheel/js/jquery.mousewheel.min.js +9 -0
  92. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/LICENSE +0 -0
  93. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/README.md +0 -0
  94. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/css/justifiedGallery.css +0 -0
  95. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/css/justifiedGallery.min.css +0 -0
  96. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/css/theme/uno.css +0 -0
  97. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/js/justifiedGallery.3.7.0.js +0 -0
  98. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/js/justifiedGallery.js +0 -0
  99. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/js/justifiedGallery.min.js +0 -0
  100. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/less/.csslintrc +0 -0
  101. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v3.7.0/less/justifiedGallery.less +0 -0
  102. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/css/justifiedGallery.css +0 -0
  103. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/css/justifiedGallery.min.css +0 -0
  104. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/css/theme/uno.css +0 -0
  105. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/js/jquery.justifiedGallery.js +0 -0
  106. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/_versions/v4.0.0/js/jquery.justifiedGallery.min.js +0 -0
  107. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/justifiedGallery.css +0 -0
  108. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/justifiedGallery.min.css +0 -0
  109. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/theme/uno.css +0 -0
  110. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/css/theme/uno.min.css +0 -0
  111. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/js/justifiedGallery.js +0 -0
  112. data/assets/themes/j1/extensions/{justified_gallery → justifiedGallery}/js/justifiedGallery.min.js +0 -0
  113. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-fb-comment-box.css +0 -0
  114. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-fb-comment-box.min.css +0 -0
  115. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-transitions.css +0 -0
  116. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lg-transitions.min.css +0 -0
  117. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lightgallery.css +0 -0
  118. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/core/lightgallery.min.css +0 -0
  119. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.eot +0 -0
  120. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.svg +0 -0
  121. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.ttf +0 -0
  122. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/fonts/lg.woff +0 -0
  123. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/loading.gif +0 -0
  124. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/video-play.png +0 -0
  125. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/vimeo-play.png +0 -0
  126. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/img/youtube-play.png +0 -0
  127. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/animation-w.png +0 -0
  128. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/customize-w.png +0 -0
  129. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/dynamic-w.png +0 -0
  130. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/facebook-icon.svg +0 -0
  131. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/googleplus-icon.svg +0 -0
  132. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/html5-w.png +0 -0
  133. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/linked-in.png +0 -0
  134. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/module-w.png +0 -0
  135. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/play-button.png +0 -0
  136. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/responsive-w.png +0 -0
  137. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/thumb-w.png +0 -0
  138. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/touch-w.png +0 -0
  139. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/twitter-icon.svg +0 -0
  140. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/twitter.png +0 -0
  141. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/video1-w.png +0 -0
  142. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/zoom-w.png +0 -0
  143. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/icons/zoom.png +0 -0
  144. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/uno.css +1 -1
  145. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/css/themes/uno.min.css +1 -1
  146. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/core/lightgallery.js +0 -0
  147. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/core/lightgallery.min.js +0 -0
  148. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/j1/j1-video.js +0 -0
  149. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/j1/j1-video.min.js +0 -0
  150. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-autoplay.js +0 -0
  151. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-autoplay.min.js +0 -0
  152. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-fullscreen.js +0 -0
  153. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-fullscreen.min.js +0 -0
  154. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-hash.js +0 -0
  155. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-hash.min.js +0 -0
  156. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-pager.js +0 -0
  157. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-pager.min.js +0 -0
  158. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-share.js +0 -0
  159. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-share.min.js +0 -0
  160. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-thumbnail.js +0 -0
  161. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-thumbnail.min.js +0 -0
  162. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-video.js +0 -0
  163. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-video.min.js +0 -0
  164. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-zoom.js +0 -0
  165. data/assets/themes/j1/extensions/{light_gallery → lightGallery}/js/modules/lg-zoom.min.js +0 -0
  166. data/assets/themes/j1/extensions/lightbox/LICENSE +22 -0
  167. data/assets/themes/j1/extensions/lightbox/css/lightbox.css +224 -0
  168. data/assets/themes/j1/extensions/lightbox/css/lightbox.min.css +21 -0
  169. data/assets/themes/j1/extensions/lightbox/css/theme/uno.css +25 -0
  170. data/assets/themes/j1/extensions/lightbox/css/theme/uno.min.css +26 -0
  171. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/close.png +0 -0
  172. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/loading.gif +0 -0
  173. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/next.png +0 -0
  174. data/{lib/starter_web/assets/images/modules/lightbox → assets/themes/j1/extensions/lightbox/images}/prev.png +0 -0
  175. data/assets/themes/j1/extensions/lightbox/js/lightbox.js +583 -0
  176. data/assets/themes/j1/extensions/lightbox/js/lightbox.min.js +35 -0
  177. data/assets/themes/j1/extensions/mmenuLight/css/mmenu.css +392 -0
  178. data/assets/themes/j1/extensions/mmenuLight/css/mmenu.min.css +393 -0
  179. data/assets/themes/j1/extensions/mmenuLight/css/theme/uno.css +170 -0
  180. data/assets/themes/j1/extensions/mmenuLight/css/theme/uno.min.css +169 -0
  181. data/assets/themes/j1/extensions/mmenuLight/js/mmenu.js +30 -0
  182. data/assets/themes/j1/extensions/noUISlider/LICENSE +13 -0
  183. data/assets/themes/j1/extensions/noUISlider/css/nouislider.css +260 -0
  184. data/assets/themes/j1/extensions/noUISlider/css/nouislider.min.css +1 -0
  185. data/assets/themes/j1/extensions/noUISlider/js/nouislider.js +2312 -0
  186. data/assets/themes/j1/extensions/noUISlider/js/nouislider.min.js +3 -0
  187. data/assets/themes/j1/extensions/twemoji/js/LICENSE +21 -0
  188. data/assets/themes/j1/extensions/twemoji/js/picker/LICENSE +21 -0
  189. data/assets/themes/j1/extensions/twemoji/js/picker/twemoji-picker.js +21 -0
  190. data/assets/themes/j1/extensions/twemoji/js/picker/twemoji-picker.min.js +21 -0
  191. data/assets/themes/j1/extensions/twemoji/js/twemoji.js +590 -0
  192. data/assets/themes/j1/extensions/twemoji/js/twemoji.min.js +25 -0
  193. data/lib/j1/version.rb +1 -1
  194. data/lib/starter_web/Gemfile +7 -1
  195. data/lib/starter_web/_config.yml +9 -8
  196. data/lib/starter_web/_data/_defaults/resources.yml +13 -13
  197. data/lib/starter_web/_data/blocks/banner.yml +21 -29
  198. data/lib/starter_web/_data/blocks/footer.yml +10 -3
  199. data/lib/starter_web/_data/blocks/panel.yml +13 -13
  200. data/lib/starter_web/_data/layouts/default.yml +10 -0
  201. data/lib/starter_web/_data/layouts/home.yml +7 -7
  202. data/lib/starter_web/_data/layouts/page.yml +15 -16
  203. data/lib/starter_web/_data/modules/advertising.yml +48 -0
  204. data/lib/starter_web/_data/modules/attics.yml +2 -38
  205. data/lib/starter_web/_data/modules/cookie_consent.yml +3 -95
  206. data/lib/starter_web/_data/modules/defaults/attics.yml +16 -15
  207. data/lib/starter_web/_data/modules/defaults/cookie_consent.yml +75 -12
  208. data/lib/starter_web/_data/modules/defaults/jekyll_search.yml +9 -9
  209. data/lib/starter_web/_data/modules/defaults/navigator.yml +56 -21
  210. data/lib/starter_web/_data/modules/defaults/ssm.yml +3 -3
  211. data/lib/starter_web/_data/modules/defaults/toccer.yml +4 -8
  212. data/lib/starter_web/_data/modules/jekyll_search.yml +3 -21
  213. data/lib/starter_web/_data/modules/navigator.yml +1 -1
  214. data/lib/starter_web/_data/modules/navigator_menu.yml +4 -0
  215. data/lib/starter_web/_data/modules/ssm.yml +10 -1
  216. data/lib/starter_web/_data/modules/themer.yml +2 -3
  217. data/lib/starter_web/_data/modules/toccer.yml +7 -12
  218. data/lib/starter_web/_data/resources.yml +240 -112
  219. data/lib/starter_web/_data/template_settings.yml +109 -6
  220. data/lib/starter_web/_plugins/asciidoctor-extensions/fab-icon-inline.rb +1 -1
  221. data/lib/starter_web/_plugins/asciidoctor-extensions/fas-icon-inline.rb +2 -2
  222. data/lib/starter_web/_plugins/asciidoctor-extensions/iconify-icon-inline.rb +2 -2
  223. data/lib/starter_web/_plugins/asciidoctor-extensions/mdi-icon-inline.rb +2 -2
  224. data/lib/starter_web/_plugins/asciidoctor-extensions/twitter-emoji-inline.rb +2 -2
  225. data/lib/starter_web/_plugins/minifyJS.rb +54 -0
  226. data/lib/starter_web/_plugins/{uglify.rb → minifyJSON.rb} +15 -9
  227. data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.jpg +0 -0
  228. data/lib/starter_web/assets/images/modules/attics/alex-holyoake-1920x1280.jpg +0 -0
  229. data/lib/starter_web/assets/images/modules/attics/anaya-katlego-1920x1280.jpg +0 -0
  230. data/lib/starter_web/assets/images/modules/attics/antonella-lombardi-1920x1280.jpg +0 -0
  231. data/lib/starter_web/assets/images/modules/attics/antonino-visalli-1920x1280.jpg +0 -0
  232. data/lib/starter_web/assets/images/modules/attics/banner/library-1920x800-bw.jpg +0 -0
  233. data/lib/starter_web/assets/images/modules/attics/banner/signpost-1920x800-bw.jpg +0 -0
  234. data/lib/starter_web/assets/images/modules/attics/banner/water-journal-1280x600.jpg +0 -0
  235. data/lib/starter_web/assets/images/modules/attics/banner/write-1280x600-bw.jpg +0 -0
  236. data/lib/starter_web/assets/images/modules/attics/brandon-mowinkel-1920x1280.jpg +0 -0
  237. data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280-bw.jpg +0 -0
  238. data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200-bw.jpg +0 -0
  239. data/lib/starter_web/assets/images/modules/attics/daniel-jensen-1920x1280.jpg +0 -0
  240. data/lib/starter_web/assets/images/modules/attics/giammarco-boscaro-1920x1280.jpg +0 -0
  241. data/lib/starter_web/assets/images/modules/attics/go-up-1920x1280-bw.jpg +0 -0
  242. data/lib/starter_web/assets/images/modules/attics/ian-schneider-1920x1280.jpg +0 -0
  243. data/lib/starter_web/assets/images/modules/attics/ideas-start-here-1920x1280-bw.jpg +0 -0
  244. data/lib/starter_web/assets/images/modules/attics/jason-rosewell-1920x1280.jpg +0 -0
  245. data/lib/starter_web/assets/images/modules/attics/jessica-ruscello-1920x1280.jpg +0 -0
  246. data/lib/starter_web/assets/images/modules/attics/lianhao-1920x1280.jpg +0 -0
  247. data/lib/starter_web/assets/images/modules/attics/library-1920x1280-bw.jpg +0 -0
  248. data/lib/starter_web/assets/images/modules/attics/matthaeus-1920x1280.jpg +0 -0
  249. data/lib/starter_web/assets/images/modules/attics/nousnou-iwasaki-1920x1280.jpg +0 -0
  250. data/lib/starter_web/assets/images/modules/attics/premium-1920x1280-bw.jpg +0 -0
  251. data/lib/starter_web/assets/images/modules/attics/robert-v-ruggiero-1920x1280.jpg +0 -0
  252. data/lib/starter_web/assets/images/modules/attics/romain-vignes-1920x1280.jpg +0 -0
  253. data/lib/starter_web/assets/images/modules/attics/runner-1920x1200-bw.jpg +0 -0
  254. data/lib/starter_web/assets/images/modules/attics/spider-web-1920x1200-bw.jpg +0 -0
  255. data/lib/starter_web/assets/images/modules/attics/the-place-1920x1280-bw.jpg +0 -0
  256. data/lib/starter_web/assets/images/modules/attics/welcome-1920x1280-bw.jpg +0 -0
  257. data/lib/starter_web/assets/images/modules/carousel/cats/cat-1.jpg +0 -0
  258. data/lib/starter_web/assets/images/modules/carousel/mega_cities/andreas-brucker_b.jpg +0 -0
  259. data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  260. data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-2_b.jpg +0 -0
  261. data/lib/starter_web/assets/images/modules/carousel/mega_cities/luca-bravo_b.jpg +0 -0
  262. data/lib/starter_web/assets/images/modules/carousel/mega_cities/thomas-tucker_b.jpg +0 -0
  263. data/lib/starter_web/assets/images/modules/gallery/mega_cities/banter-snaps_b.jpg +0 -0
  264. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  265. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2-bw.jpg +0 -0
  266. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2_b.jpg +0 -0
  267. data/lib/starter_web/assets/images/modules/gallery/mega_cities/emmad-mazhari_b.jpg +0 -0
  268. data/lib/starter_web/assets/images/modules/gallery/mega_cities/ethan-brooke_b.jpg +0 -0
  269. data/lib/starter_web/assets/images/modules/gallery/mega_cities/federico-rizzarelli_b.jpg +0 -0
  270. data/lib/starter_web/assets/images/modules/gallery/mega_cities/gints-gailis_b.jpg +0 -0
  271. data/lib/starter_web/assets/images/modules/gallery/mega_cities/johan-mouchet_b.jpg +0 -0
  272. data/lib/starter_web/assets/images/modules/gallery/mega_cities/luca-bravo_b.jpg +0 -0
  273. data/lib/starter_web/assets/images/modules/gallery/mega_cities/oskars-sylwan_b.jpg +0 -0
  274. data/lib/starter_web/assets/images/modules/gallery/mega_cities/steven-diaz_b.jpg +0 -0
  275. data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker-bw.jpg +0 -0
  276. data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker_b.jpg +0 -0
  277. data/lib/starter_web/index.html +9 -8
  278. data/lib/starter_web/package.json +1 -1
  279. data/lib/starter_web/pages/public/clear_button.adoc +121 -0
  280. data/lib/starter_web/pages/public/learn/examples/floating_ad.adoc +221 -0
  281. data/lib/starter_web/pages/public/learn/{floating_sidebar.adoc → examples/floating_div.adoc} +60 -50
  282. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/000_includes/parts.asciidoc +1 -1
  283. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/100_meet_and_greet_jekyll.adoc +9 -4
  284. data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour_api.adoc +2 -2
  285. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_table_3_column.asciidoc +1 -1
  286. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/419_advanced_modals_html.asciidoc +5 -5
  287. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  288. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +8 -3
  289. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +35 -44
  290. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +1 -1
  291. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +39 -39
  292. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_table_3_column.asciidoc +1 -1
  293. data/lib/starter_web/pages/public/learn/whats_up.adoc +1 -0
  294. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +54 -48
  295. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/100_absolute_sizes.asciidoc +1 -1
  296. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/110_bs_grid_sizes.asciidoc +1 -1
  297. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/120_relative_sizes.asciidoc +1 -41
  298. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +1 -1
  299. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/300_flip.asciidoc +1 -1
  300. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/400_spin_pulsed.asciidoc +1 -1
  301. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/500_bw_color_palette.asciidoc +1 -1
  302. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/510_bs_color_palette.asciidoc +1 -1
  303. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/600_md_color_palette.asciidoc +1 -1
  304. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/601_md_color_palette_indigo.asciidoc +1 -1
  305. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/602_md_color_palette_pink.asciidoc +1 -1
  306. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/100_bs_sizes.asciidoc +1 -1
  307. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/100_relative_sizes.asciidoc +1 -1
  308. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/200_rotate.asciidoc +1 -1
  309. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/300_flip.asciidoc +1 -1
  310. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/400_spin_pulsed.asciidoc +1 -1
  311. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +672 -863
  312. data/lib/starter_web/pages/public/previewer/iframer.adoc +15 -14
  313. data/lib/starter_web/pages/public/previewer/justified_gallery.html +1 -1
  314. data/lib/starter_web/pages/public/previewer/mdb_preview/000_includes/attributes.asciidoc +69 -0
  315. data/lib/starter_web/pages/public/previewer/mdb_preview/000_includes/documents/100_buttons.asciidoc +170 -0
  316. data/lib/starter_web/pages/public/previewer/mdb_preview/mdb_previewer.adoc +52 -0
  317. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +1 -1
  318. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +2 -2
  319. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  320. data/lib/starter_web/utilsrv/package.json +1 -1
  321. metadata +148 -105
  322. data/assets/data/colors.json +0 -42
  323. data/assets/data/font_sizes.json +0 -42
  324. data/assets/data/messages.yml +0 -131
  325. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.absolute.html +0 -86
  326. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.content.html +0 -58
  327. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.hover.html +0 -51
  328. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.nested.html +0 -68
  329. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.textarea.html +0 -46
  330. data/assets/themes/j1/extensions/iframe_resizer/examples/frame.tolerance.html +0 -79
  331. data/assets/themes/j1/extensions/iframe_resizer/examples/index.html +0 -70
  332. data/assets/themes/j1/extensions/iframe_resizer/examples/two.html +0 -71
  333. data/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.js +0 -1104
  334. data/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.map +0 -1
  335. data/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.min.js +0 -10
  336. data/assets/themes/j1/extensions/log4javascript/log4javascript.js +0 -5826
  337. data/assets/themes/j1/extensions/log4javascript/log4javascript.min.js +0 -266
  338. data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.png +0 -0
  339. data/lib/starter_web/assets/images/modules/attics/mae-mu-Vf9gbsLZyf0-unsplash.jpg +0 -0
  340. data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280-v.jpg +0 -0
  341. data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280.jpg +0 -0
@@ -0,0 +1,20 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/extensions/bsThemeSwitcher/js/switcher.min.js
4
+ # Provides Javascript functions for Bootstrap ThemeSwitcher
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ # https://github.com/jguadagno/bootstrapThemeSwitcher
9
+ #
10
+ # Copyright (C) 2020 Juergen Adams
11
+ # Copyright (C) 2014 Joseph Guadagno
12
+ #
13
+ # J1 Template is licensed under the MIT License.
14
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
15
+ # Bootstrap Theme Switcher is licensed under the MIT License.
16
+ # See: https://github.com/jguadagno/bootstrapThemeSwitcher
17
+ #
18
+ # -----------------------------------------------------------------------------
19
+ */
20
+ (function(h,i,j,e){var d=h.fn.bootstrapThemeSwitcher;var f=j1.getCookieNames();const n=f.user_state;var m=log4javascript.getLogger("j1.core.switcher");var a;var g;var b={};var k;var c;var l=function(p,o){this.$element=h(p);this.settings=h.extend({},h.fn.bootstrapThemeSwitcher.defaults,o);this.themesList=[];this.getThemes();return this};l.prototype={clear:function(){m.debug("bootstrapThemeSwitcher.clear");return this.$element.each(function(){this.$element.empty()})},update:function(){m.debug("bootstrapThemeSwitcher.update");this.getThemes()},checkStyleSheetByName:function(o){var r=false;var s="/"+o+"/";var q=new RegExp(s,"i");for(var p=0;p<j.styleSheets.length;p++){if(q.test(j.styleSheets[p].href)){r=true;break}}return r},switchTheme:function(p,u){var v=h(this);var r=h.extend({},h.fn.bootstrapThemeSwitcher.defaults,v.data("bootstrapThemeSwitcher"));var t;var x;var w;var q=r.cssThemeLink;var o=r.debug;var s=this.settings.includeBootswatch;g=j1.existsCookie("j1.user.state");if(g){m.debug("user state cookie found");b=j1.readCookie(n)}else{m.error("user state NOT cookie found")}t=b.theme_name;x=b.theme_css;w=b.theme_extension_css;if(u===e){u=this.settings.defaultCssFile}if(p===e){p=u}if(p===this.settings.skipIncludeBootswatch){s=""}if(r.saveToCookie){if(Cookies===e){if(o==="true"){m.error("saveToCookie is set to true but Cookies library is not present")}return false}b.theme_name=p;b.theme_css=u;if(p!="Uno"&&p!="Bootstrap"){b.theme_author="Bootswatch";b.theme_link="https://bootswatch.com/"}else{b.theme_author="J1 Team";b.theme_link="https://jekyll.one/"}j1.writeCookie({name:n,data:b});location.reload(true)}else{m.warn("write to cookie : disabled");m.warn("selected theme not activated: "+p)}},loadThemeFromCookie:function(o){if(Cookies===e){m.error("loadThemeFromCookie was called but Cookies library is not present");return false}var p=h.extend({},h.fn.bootstrapThemeSwitcher.defaults,o);g=j1.existsCookie("j1.user.state");if(g){m.info("User state cookie found");b=j1.readCookie(n)}else{m.error("User state NOT cookie found")}var r=b.theme_name;var q=b.theme_css;this.switchTheme(r,q)},addTheme:function(p,o,r,q){if(r===e){r=0}if(q===e){q=0}this.themesList.splice(r,q,{name:p,css:o});this.addThemesToControl()},addThemesToControl:function(){if(this.$element===e){m.error("bootstrapThemeSelector|addThemesToControl: Element is undefined");return false}if(this.themesList===e){m.error("bootstrapThemeSelector|addThemesToControl: Themes is undefined");return false}if(this.settings.excludeBootswatch){var v;if(this.settings.excludeBootswatch.indexOf(",")!==-1){v=this.settings.excludeBootswatch.split(",")}else{v=[];v.push(this.settings.excludeBootswatch)}var r=this.themesList;h.each(r,function(z,A){if(A&&A.name){if(jQuery.inArray(A.name,v)!==-1){r.splice(z,1)}}});this.themesList=r}var q=this;if(this.$element.is("ul")){var w=h(this);var s=h.extend({},h.fn.bootstrapThemeSwitcher.defaults,w.data("bootstrapThemeSwitcher"));var p=s.cssThemeLink;var t;var o=s.debug;g=j1.existsCookie("j1.user.state");if(g){m.debug("User state cookie found");b=j1.readCookie(n)}else{m.error("User state NOT cookie found")}t=b.theme_name;if(o==="true"){m.debug("bootstrapThemeSelector: UL element selected")}this.$element.empty();var y;var x="#9E9E9E";h.each(this.themesList,function(A,B){y="dropdown-item";if(B.name===t){y="dropdown-item active"}var z=h("<li />").attr("class",y).append('<a href="#"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: '+x+'"></i>'+B.name+"</a>").on("click",function(){if(s.loadFromBootswatch){q.switchTheme(B.name,B.css)}else{q.switchTheme(B.name,B.cssCdn)}h(this).parent().find("li").removeClass("active");h(this).addClass("active")});q.$element.append(z)})}else{if(this.$element.is("select")){m.debug("bootstrapThemeSelector: SELECT element selected");this.$element.empty();var u;h.each(this.themesList,function(z,A){u=null;if(A.name===t){u="selected"}if(s.loadFromBootswatch){q.$element.append("<option "+u+" value='"+A.css+"'>"+A.name+"</option>")}else{q.$element.append("<option "+u+" value='"+A.cssCdn+"'>"+A.name+"</option>")}});this.$element.on("change",function(){var z=h("option:selected",this);q.switchTheme(z.text(),z.val())})}else{}}},getThemes:function(){var o=this;if(this.settings.localFeed!==null&&this.settings.localFeed!==""){h.ajax({url:this.settings.localFeed,dataType:"json",success:function(p){o.themesList=p.themes;o.addThemesToControl()},error:function(p,r,q){m.error("Failed to retrieve the local feed from: '"+o.settings.localFeed+"'")}});return true}h.ajax({url:this.settings.bootswatchApiUrl+"/"+this.settings.bootswatchApiVersion+".json",dataType:"json",success:function(p){if(p.themes===e){return null}o.themesList=p.themes;o.themesList.splice(0,0,{name:"default",css:o.settings.defaultCssFile});o.addThemesToControl()}})},themes:function(o){if(o===e){return this.themesList}else{this.themesList=o}}};h.fn.bootstrapThemeSwitcher=function(q){var s;var p=Array.prototype.slice.call(arguments,1);var t=h(this);var r=t.data("bootstrapThemeSwitcher");var o=typeof q==="object"&&q;if(!r){t.data("bootstrapThemeSwitcher",(r=new l(this,o)))}if(typeof q==="string"){s=r[q].apply(r,p)}return(s===e)?t:s};h.fn.bootstrapThemeSwitcher.defaults={debug:false,saveToCookie:true,cssThemeLink:"bootstrapTheme",cookieThemeName:"bootstrapTheme.name",cookieThemeCss:"boostrapTheme.css",cookieExpiration:7,cookiePath:"/",defaultCssFile:"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css",bootswatchApiUrl:"https://bootswatch.com/api/",bootswatchApiVersion:"3",loadFromBootswatch:true,localFeed:"",excludeBootswatch:""};h.fn.bootstrapThemeSwitcher.Constructor=l;h.fn.bootstrapThemeSwitcher.noConflict=function(){h.fn.BootstrapThemeSwitcher=d;return this}})(jQuery,window,document);
@@ -0,0 +1,20 @@
1
+ Copyright © 2020 Zeno Rocha <hi@zenorocha.com>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,52 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/extensions/clipboard/css/theme/uno.css
4
+ # Provides Clipboard styles for J1 Theme Uno (v2.0.6)
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2020 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ /* Clipboard
17
+ ------------------------------------------------------------------------------- */
18
+
19
+ .j1-clipboard {
20
+ position: relative;
21
+ display: block;
22
+ float: right;
23
+ }
24
+
25
+ .btn-clipboard {
26
+ position: absolute;
27
+ top: .6rem;
28
+ right: .5rem;
29
+ z-index: 3;
30
+ display: block;
31
+ padding: .25rem .5rem;
32
+ font-size: .75rem;
33
+ color: #9e9e9e;
34
+ cursor: pointer;
35
+ text-transform: uppercase;
36
+ background-color: transparent;
37
+ border-radius: .25rem;
38
+ }
39
+
40
+ .btn-clipboard:hover {
41
+ color: #fff;
42
+ background-color: #9E9E9E;
43
+ }
44
+
45
+
46
+ /* NOT used on mobile
47
+ ------------------------------------------------------------------------------- */
48
+ @media (min-width: 320px) and (max-width: 767px) {
49
+ .j1-clipboard {
50
+ display: none;
51
+ }
52
+ }
@@ -0,0 +1,52 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/extensions/clipboard/css/theme/uno.css
4
+ # Provides Clipboard styles for J1 Theme Uno (v2.0.6)
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2020 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ /* Clipboard
17
+ ------------------------------------------------------------------------------- */
18
+
19
+ .j1-clipboard {
20
+ position: relative;
21
+ display: block;
22
+ float: right;
23
+ }
24
+
25
+ .btn-clipboard {
26
+ position: absolute;
27
+ top: .6rem;
28
+ right: .5rem;
29
+ z-index: 3;
30
+ display: block;
31
+ padding: .25rem .5rem;
32
+ font-size: .75rem;
33
+ color: #9e9e9e;
34
+ cursor: pointer;
35
+ text-transform: uppercase;
36
+ background-color: transparent;
37
+ border-radius: .25rem;
38
+ }
39
+
40
+ .btn-clipboard:hover {
41
+ color: #fff;
42
+ background-color: #9E9E9E;
43
+ }
44
+
45
+
46
+ /* NOT used on mobile
47
+ ------------------------------------------------------------------------------- */
48
+ @media (min-width: 320px) and (max-width: 767px) {
49
+ .j1-clipboard {
50
+ display: none;
51
+ }
52
+ }
@@ -0,0 +1,975 @@
1
+ /*!
2
+ * clipboard.js v2.0.6
3
+ * https://clipboardjs.com/
4
+ *
5
+ * Licensed MIT © Zeno Rocha
6
+ * https://github.com/zenorocha/clipboard.js/blob/master/LICENSE
7
+ */
8
+
9
+ (function webpackUniversalModuleDefinition(root, factory) {
10
+ if(typeof exports === 'object' && typeof module === 'object')
11
+ module.exports = factory();
12
+ else if(typeof define === 'function' && define.amd)
13
+ define([], factory);
14
+ else if(typeof exports === 'object')
15
+ exports["ClipboardJS"] = factory();
16
+ else
17
+ root["ClipboardJS"] = factory();
18
+ })(this, function() {
19
+ return /******/ (function(modules) { // webpackBootstrap
20
+ /******/ // The module cache
21
+ /******/ var installedModules = {};
22
+ /******/
23
+ /******/ // The require function
24
+ /******/ function __webpack_require__(moduleId) {
25
+ /******/
26
+ /******/ // Check if module is in cache
27
+ /******/ if(installedModules[moduleId]) {
28
+ /******/ return installedModules[moduleId].exports;
29
+ /******/ }
30
+ /******/ // Create a new module (and put it into the cache)
31
+ /******/ var module = installedModules[moduleId] = {
32
+ /******/ i: moduleId,
33
+ /******/ l: false,
34
+ /******/ exports: {}
35
+ /******/ };
36
+ /******/
37
+ /******/ // Execute the module function
38
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
39
+ /******/
40
+ /******/ // Flag the module as loaded
41
+ /******/ module.l = true;
42
+ /******/
43
+ /******/ // Return the exports of the module
44
+ /******/ return module.exports;
45
+ /******/ }
46
+ /******/
47
+ /******/
48
+ /******/ // expose the modules object (__webpack_modules__)
49
+ /******/ __webpack_require__.m = modules;
50
+ /******/
51
+ /******/ // expose the module cache
52
+ /******/ __webpack_require__.c = installedModules;
53
+ /******/
54
+ /******/ // define getter function for harmony exports
55
+ /******/ __webpack_require__.d = function(exports, name, getter) {
56
+ /******/ if(!__webpack_require__.o(exports, name)) {
57
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
58
+ /******/ }
59
+ /******/ };
60
+ /******/
61
+ /******/ // define __esModule on exports
62
+ /******/ __webpack_require__.r = function(exports) {
63
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
64
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
65
+ /******/ }
66
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
67
+ /******/ };
68
+ /******/
69
+ /******/ // create a fake namespace object
70
+ /******/ // mode & 1: value is a module id, require it
71
+ /******/ // mode & 2: merge all properties of value into the ns
72
+ /******/ // mode & 4: return value when already ns object
73
+ /******/ // mode & 8|1: behave like require
74
+ /******/ __webpack_require__.t = function(value, mode) {
75
+ /******/ if(mode & 1) value = __webpack_require__(value);
76
+ /******/ if(mode & 8) return value;
77
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
78
+ /******/ var ns = Object.create(null);
79
+ /******/ __webpack_require__.r(ns);
80
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
81
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
82
+ /******/ return ns;
83
+ /******/ };
84
+ /******/
85
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
86
+ /******/ __webpack_require__.n = function(module) {
87
+ /******/ var getter = module && module.__esModule ?
88
+ /******/ function getDefault() { return module['default']; } :
89
+ /******/ function getModuleExports() { return module; };
90
+ /******/ __webpack_require__.d(getter, 'a', getter);
91
+ /******/ return getter;
92
+ /******/ };
93
+ /******/
94
+ /******/ // Object.prototype.hasOwnProperty.call
95
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
96
+ /******/
97
+ /******/ // __webpack_public_path__
98
+ /******/ __webpack_require__.p = "";
99
+ /******/
100
+ /******/
101
+ /******/ // Load entry module and return exports
102
+ /******/ return __webpack_require__(__webpack_require__.s = 6);
103
+ /******/ })
104
+ /************************************************************************/
105
+ /******/ ([
106
+ /* 0 */
107
+ /***/ (function(module, exports) {
108
+
109
+ function select(element) {
110
+ var selectedText;
111
+
112
+ if (element.nodeName === 'SELECT') {
113
+ element.focus();
114
+
115
+ selectedText = element.value;
116
+ }
117
+ else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
118
+ var isReadOnly = element.hasAttribute('readonly');
119
+
120
+ if (!isReadOnly) {
121
+ element.setAttribute('readonly', '');
122
+ }
123
+
124
+ element.select();
125
+ element.setSelectionRange(0, element.value.length);
126
+
127
+ if (!isReadOnly) {
128
+ element.removeAttribute('readonly');
129
+ }
130
+
131
+ selectedText = element.value;
132
+ }
133
+ else {
134
+ if (element.hasAttribute('contenteditable')) {
135
+ element.focus();
136
+ }
137
+
138
+ var selection = window.getSelection();
139
+ var range = document.createRange();
140
+
141
+ range.selectNodeContents(element);
142
+ selection.removeAllRanges();
143
+ selection.addRange(range);
144
+
145
+ selectedText = selection.toString();
146
+ }
147
+
148
+ return selectedText;
149
+ }
150
+
151
+ module.exports = select;
152
+
153
+
154
+ /***/ }),
155
+ /* 1 */
156
+ /***/ (function(module, exports) {
157
+
158
+ function E () {
159
+ // Keep this empty so it's easier to inherit from
160
+ // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
161
+ }
162
+
163
+ E.prototype = {
164
+ on: function (name, callback, ctx) {
165
+ var e = this.e || (this.e = {});
166
+
167
+ (e[name] || (e[name] = [])).push({
168
+ fn: callback,
169
+ ctx: ctx
170
+ });
171
+
172
+ return this;
173
+ },
174
+
175
+ once: function (name, callback, ctx) {
176
+ var self = this;
177
+ function listener () {
178
+ self.off(name, listener);
179
+ callback.apply(ctx, arguments);
180
+ };
181
+
182
+ listener._ = callback
183
+ return this.on(name, listener, ctx);
184
+ },
185
+
186
+ emit: function (name) {
187
+ var data = [].slice.call(arguments, 1);
188
+ var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
189
+ var i = 0;
190
+ var len = evtArr.length;
191
+
192
+ for (i; i < len; i++) {
193
+ evtArr[i].fn.apply(evtArr[i].ctx, data);
194
+ }
195
+
196
+ return this;
197
+ },
198
+
199
+ off: function (name, callback) {
200
+ var e = this.e || (this.e = {});
201
+ var evts = e[name];
202
+ var liveEvents = [];
203
+
204
+ if (evts && callback) {
205
+ for (var i = 0, len = evts.length; i < len; i++) {
206
+ if (evts[i].fn !== callback && evts[i].fn._ !== callback)
207
+ liveEvents.push(evts[i]);
208
+ }
209
+ }
210
+
211
+ // Remove event from queue to prevent memory leak
212
+ // Suggested by https://github.com/lazd
213
+ // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
214
+
215
+ (liveEvents.length)
216
+ ? e[name] = liveEvents
217
+ : delete e[name];
218
+
219
+ return this;
220
+ }
221
+ };
222
+
223
+ module.exports = E;
224
+ module.exports.TinyEmitter = E;
225
+
226
+
227
+ /***/ }),
228
+ /* 2 */
229
+ /***/ (function(module, exports, __webpack_require__) {
230
+
231
+ var is = __webpack_require__(3);
232
+ var delegate = __webpack_require__(4);
233
+
234
+ /**
235
+ * Validates all params and calls the right
236
+ * listener function based on its target type.
237
+ *
238
+ * @param {String|HTMLElement|HTMLCollection|NodeList} target
239
+ * @param {String} type
240
+ * @param {Function} callback
241
+ * @return {Object}
242
+ */
243
+ function listen(target, type, callback) {
244
+ if (!target && !type && !callback) {
245
+ throw new Error('Missing required arguments');
246
+ }
247
+
248
+ if (!is.string(type)) {
249
+ throw new TypeError('Second argument must be a String');
250
+ }
251
+
252
+ if (!is.fn(callback)) {
253
+ throw new TypeError('Third argument must be a Function');
254
+ }
255
+
256
+ if (is.node(target)) {
257
+ return listenNode(target, type, callback);
258
+ }
259
+ else if (is.nodeList(target)) {
260
+ return listenNodeList(target, type, callback);
261
+ }
262
+ else if (is.string(target)) {
263
+ return listenSelector(target, type, callback);
264
+ }
265
+ else {
266
+ throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');
267
+ }
268
+ }
269
+
270
+ /**
271
+ * Adds an event listener to a HTML element
272
+ * and returns a remove listener function.
273
+ *
274
+ * @param {HTMLElement} node
275
+ * @param {String} type
276
+ * @param {Function} callback
277
+ * @return {Object}
278
+ */
279
+ function listenNode(node, type, callback) {
280
+ node.addEventListener(type, callback);
281
+
282
+ return {
283
+ destroy: function() {
284
+ node.removeEventListener(type, callback);
285
+ }
286
+ }
287
+ }
288
+
289
+ /**
290
+ * Add an event listener to a list of HTML elements
291
+ * and returns a remove listener function.
292
+ *
293
+ * @param {NodeList|HTMLCollection} nodeList
294
+ * @param {String} type
295
+ * @param {Function} callback
296
+ * @return {Object}
297
+ */
298
+ function listenNodeList(nodeList, type, callback) {
299
+ Array.prototype.forEach.call(nodeList, function(node) {
300
+ node.addEventListener(type, callback);
301
+ });
302
+
303
+ return {
304
+ destroy: function() {
305
+ Array.prototype.forEach.call(nodeList, function(node) {
306
+ node.removeEventListener(type, callback);
307
+ });
308
+ }
309
+ }
310
+ }
311
+
312
+ /**
313
+ * Add an event listener to a selector
314
+ * and returns a remove listener function.
315
+ *
316
+ * @param {String} selector
317
+ * @param {String} type
318
+ * @param {Function} callback
319
+ * @return {Object}
320
+ */
321
+ function listenSelector(selector, type, callback) {
322
+ return delegate(document.body, selector, type, callback);
323
+ }
324
+
325
+ module.exports = listen;
326
+
327
+
328
+ /***/ }),
329
+ /* 3 */
330
+ /***/ (function(module, exports) {
331
+
332
+ /**
333
+ * Check if argument is a HTML element.
334
+ *
335
+ * @param {Object} value
336
+ * @return {Boolean}
337
+ */
338
+ exports.node = function(value) {
339
+ return value !== undefined
340
+ && value instanceof HTMLElement
341
+ && value.nodeType === 1;
342
+ };
343
+
344
+ /**
345
+ * Check if argument is a list of HTML elements.
346
+ *
347
+ * @param {Object} value
348
+ * @return {Boolean}
349
+ */
350
+ exports.nodeList = function(value) {
351
+ var type = Object.prototype.toString.call(value);
352
+
353
+ return value !== undefined
354
+ && (type === '[object NodeList]' || type === '[object HTMLCollection]')
355
+ && ('length' in value)
356
+ && (value.length === 0 || exports.node(value[0]));
357
+ };
358
+
359
+ /**
360
+ * Check if argument is a string.
361
+ *
362
+ * @param {Object} value
363
+ * @return {Boolean}
364
+ */
365
+ exports.string = function(value) {
366
+ return typeof value === 'string'
367
+ || value instanceof String;
368
+ };
369
+
370
+ /**
371
+ * Check if argument is a function.
372
+ *
373
+ * @param {Object} value
374
+ * @return {Boolean}
375
+ */
376
+ exports.fn = function(value) {
377
+ var type = Object.prototype.toString.call(value);
378
+
379
+ return type === '[object Function]';
380
+ };
381
+
382
+
383
+ /***/ }),
384
+ /* 4 */
385
+ /***/ (function(module, exports, __webpack_require__) {
386
+
387
+ var closest = __webpack_require__(5);
388
+
389
+ /**
390
+ * Delegates event to a selector.
391
+ *
392
+ * @param {Element} element
393
+ * @param {String} selector
394
+ * @param {String} type
395
+ * @param {Function} callback
396
+ * @param {Boolean} useCapture
397
+ * @return {Object}
398
+ */
399
+ function _delegate(element, selector, type, callback, useCapture) {
400
+ var listenerFn = listener.apply(this, arguments);
401
+
402
+ element.addEventListener(type, listenerFn, useCapture);
403
+
404
+ return {
405
+ destroy: function() {
406
+ element.removeEventListener(type, listenerFn, useCapture);
407
+ }
408
+ }
409
+ }
410
+
411
+ /**
412
+ * Delegates event to a selector.
413
+ *
414
+ * @param {Element|String|Array} [elements]
415
+ * @param {String} selector
416
+ * @param {String} type
417
+ * @param {Function} callback
418
+ * @param {Boolean} useCapture
419
+ * @return {Object}
420
+ */
421
+ function delegate(elements, selector, type, callback, useCapture) {
422
+ // Handle the regular Element usage
423
+ if (typeof elements.addEventListener === 'function') {
424
+ return _delegate.apply(null, arguments);
425
+ }
426
+
427
+ // Handle Element-less usage, it defaults to global delegation
428
+ if (typeof type === 'function') {
429
+ // Use `document` as the first parameter, then apply arguments
430
+ // This is a short way to .unshift `arguments` without running into deoptimizations
431
+ return _delegate.bind(null, document).apply(null, arguments);
432
+ }
433
+
434
+ // Handle Selector-based usage
435
+ if (typeof elements === 'string') {
436
+ elements = document.querySelectorAll(elements);
437
+ }
438
+
439
+ // Handle Array-like based usage
440
+ return Array.prototype.map.call(elements, function (element) {
441
+ return _delegate(element, selector, type, callback, useCapture);
442
+ });
443
+ }
444
+
445
+ /**
446
+ * Finds closest match and invokes callback.
447
+ *
448
+ * @param {Element} element
449
+ * @param {String} selector
450
+ * @param {String} type
451
+ * @param {Function} callback
452
+ * @return {Function}
453
+ */
454
+ function listener(element, selector, type, callback) {
455
+ return function(e) {
456
+ e.delegateTarget = closest(e.target, selector);
457
+
458
+ if (e.delegateTarget) {
459
+ callback.call(element, e);
460
+ }
461
+ }
462
+ }
463
+
464
+ module.exports = delegate;
465
+
466
+
467
+ /***/ }),
468
+ /* 5 */
469
+ /***/ (function(module, exports) {
470
+
471
+ var DOCUMENT_NODE_TYPE = 9;
472
+
473
+ /**
474
+ * A polyfill for Element.matches()
475
+ */
476
+ if (typeof Element !== 'undefined' && !Element.prototype.matches) {
477
+ var proto = Element.prototype;
478
+
479
+ proto.matches = proto.matchesSelector ||
480
+ proto.mozMatchesSelector ||
481
+ proto.msMatchesSelector ||
482
+ proto.oMatchesSelector ||
483
+ proto.webkitMatchesSelector;
484
+ }
485
+
486
+ /**
487
+ * Finds the closest parent that matches a selector.
488
+ *
489
+ * @param {Element} element
490
+ * @param {String} selector
491
+ * @return {Function}
492
+ */
493
+ function closest (element, selector) {
494
+ while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {
495
+ if (typeof element.matches === 'function' &&
496
+ element.matches(selector)) {
497
+ return element;
498
+ }
499
+ element = element.parentNode;
500
+ }
501
+ }
502
+
503
+ module.exports = closest;
504
+
505
+
506
+ /***/ }),
507
+ /* 6 */
508
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
509
+
510
+ "use strict";
511
+ __webpack_require__.r(__webpack_exports__);
512
+
513
+ // EXTERNAL MODULE: ./node_modules/select/src/select.js
514
+ var src_select = __webpack_require__(0);
515
+ var select_default = /*#__PURE__*/__webpack_require__.n(src_select);
516
+
517
+ // CONCATENATED MODULE: ./src/clipboard-action.js
518
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
519
+
520
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
521
+
522
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
523
+
524
+
525
+
526
+ /**
527
+ * Inner class which performs selection from either `text` or `target`
528
+ * properties and then executes copy or cut operations.
529
+ */
530
+
531
+ var clipboard_action_ClipboardAction = function () {
532
+ /**
533
+ * @param {Object} options
534
+ */
535
+ function ClipboardAction(options) {
536
+ _classCallCheck(this, ClipboardAction);
537
+
538
+ this.resolveOptions(options);
539
+ this.initSelection();
540
+ }
541
+
542
+ /**
543
+ * Defines base properties passed from constructor.
544
+ * @param {Object} options
545
+ */
546
+
547
+
548
+ _createClass(ClipboardAction, [{
549
+ key: 'resolveOptions',
550
+ value: function resolveOptions() {
551
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
552
+
553
+ this.action = options.action;
554
+ this.container = options.container;
555
+ this.emitter = options.emitter;
556
+ this.target = options.target;
557
+ this.text = options.text;
558
+ this.trigger = options.trigger;
559
+
560
+ this.selectedText = '';
561
+ }
562
+
563
+ /**
564
+ * Decides which selection strategy is going to be applied based
565
+ * on the existence of `text` and `target` properties.
566
+ */
567
+
568
+ }, {
569
+ key: 'initSelection',
570
+ value: function initSelection() {
571
+ if (this.text) {
572
+ this.selectFake();
573
+ } else if (this.target) {
574
+ this.selectTarget();
575
+ }
576
+ }
577
+
578
+ /**
579
+ * Creates a fake textarea element, sets its value from `text` property,
580
+ * and makes a selection on it.
581
+ */
582
+
583
+ }, {
584
+ key: 'selectFake',
585
+ value: function selectFake() {
586
+ var _this = this;
587
+
588
+ var isRTL = document.documentElement.getAttribute('dir') == 'rtl';
589
+
590
+ this.removeFake();
591
+
592
+ this.fakeHandlerCallback = function () {
593
+ return _this.removeFake();
594
+ };
595
+ this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;
596
+
597
+ this.fakeElem = document.createElement('textarea');
598
+ // Prevent zooming on iOS
599
+ this.fakeElem.style.fontSize = '12pt';
600
+ // Reset box model
601
+ this.fakeElem.style.border = '0';
602
+ this.fakeElem.style.padding = '0';
603
+ this.fakeElem.style.margin = '0';
604
+ // Move element out of screen horizontally
605
+ this.fakeElem.style.position = 'absolute';
606
+ this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';
607
+ // Move element to the same position vertically
608
+ var yPosition = window.pageYOffset || document.documentElement.scrollTop;
609
+ this.fakeElem.style.top = yPosition + 'px';
610
+
611
+ this.fakeElem.setAttribute('readonly', '');
612
+ this.fakeElem.value = this.text;
613
+
614
+ this.container.appendChild(this.fakeElem);
615
+
616
+ this.selectedText = select_default()(this.fakeElem);
617
+ this.copyText();
618
+ }
619
+
620
+ /**
621
+ * Only removes the fake element after another click event, that way
622
+ * a user can hit `Ctrl+C` to copy because selection still exists.
623
+ */
624
+
625
+ }, {
626
+ key: 'removeFake',
627
+ value: function removeFake() {
628
+ if (this.fakeHandler) {
629
+ this.container.removeEventListener('click', this.fakeHandlerCallback);
630
+ this.fakeHandler = null;
631
+ this.fakeHandlerCallback = null;
632
+ }
633
+
634
+ if (this.fakeElem) {
635
+ this.container.removeChild(this.fakeElem);
636
+ this.fakeElem = null;
637
+ }
638
+ }
639
+
640
+ /**
641
+ * Selects the content from element passed on `target` property.
642
+ */
643
+
644
+ }, {
645
+ key: 'selectTarget',
646
+ value: function selectTarget() {
647
+ this.selectedText = select_default()(this.target);
648
+ this.copyText();
649
+ }
650
+
651
+ /**
652
+ * Executes the copy operation based on the current selection.
653
+ */
654
+
655
+ }, {
656
+ key: 'copyText',
657
+ value: function copyText() {
658
+ var succeeded = void 0;
659
+
660
+ try {
661
+ succeeded = document.execCommand(this.action);
662
+ } catch (err) {
663
+ succeeded = false;
664
+ }
665
+
666
+ this.handleResult(succeeded);
667
+ }
668
+
669
+ /**
670
+ * Fires an event based on the copy operation result.
671
+ * @param {Boolean} succeeded
672
+ */
673
+
674
+ }, {
675
+ key: 'handleResult',
676
+ value: function handleResult(succeeded) {
677
+ this.emitter.emit(succeeded ? 'success' : 'error', {
678
+ action: this.action,
679
+ text: this.selectedText,
680
+ trigger: this.trigger,
681
+ clearSelection: this.clearSelection.bind(this)
682
+ });
683
+ }
684
+
685
+ /**
686
+ * Moves focus away from `target` and back to the trigger, removes current selection.
687
+ */
688
+
689
+ }, {
690
+ key: 'clearSelection',
691
+ value: function clearSelection() {
692
+ if (this.trigger) {
693
+ this.trigger.focus();
694
+ }
695
+ document.activeElement.blur();
696
+ window.getSelection().removeAllRanges();
697
+ }
698
+
699
+ /**
700
+ * Sets the `action` to be performed which can be either 'copy' or 'cut'.
701
+ * @param {String} action
702
+ */
703
+
704
+ }, {
705
+ key: 'destroy',
706
+
707
+
708
+ /**
709
+ * Destroy lifecycle.
710
+ */
711
+ value: function destroy() {
712
+ this.removeFake();
713
+ }
714
+ }, {
715
+ key: 'action',
716
+ set: function set() {
717
+ var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';
718
+
719
+ this._action = action;
720
+
721
+ if (this._action !== 'copy' && this._action !== 'cut') {
722
+ throw new Error('Invalid "action" value, use either "copy" or "cut"');
723
+ }
724
+ }
725
+
726
+ /**
727
+ * Gets the `action` property.
728
+ * @return {String}
729
+ */
730
+ ,
731
+ get: function get() {
732
+ return this._action;
733
+ }
734
+
735
+ /**
736
+ * Sets the `target` property using an element
737
+ * that will be have its content copied.
738
+ * @param {Element} target
739
+ */
740
+
741
+ }, {
742
+ key: 'target',
743
+ set: function set(target) {
744
+ if (target !== undefined) {
745
+ if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {
746
+ if (this.action === 'copy' && target.hasAttribute('disabled')) {
747
+ throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
748
+ }
749
+
750
+ if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {
751
+ throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
752
+ }
753
+
754
+ this._target = target;
755
+ } else {
756
+ throw new Error('Invalid "target" value, use a valid Element');
757
+ }
758
+ }
759
+ }
760
+
761
+ /**
762
+ * Gets the `target` property.
763
+ * @return {String|HTMLElement}
764
+ */
765
+ ,
766
+ get: function get() {
767
+ return this._target;
768
+ }
769
+ }]);
770
+
771
+ return ClipboardAction;
772
+ }();
773
+
774
+ /* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction);
775
+ // EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js
776
+ var tiny_emitter = __webpack_require__(1);
777
+ var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);
778
+
779
+ // EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js
780
+ var listen = __webpack_require__(2);
781
+ var listen_default = /*#__PURE__*/__webpack_require__.n(listen);
782
+
783
+ // CONCATENATED MODULE: ./src/clipboard.js
784
+ var clipboard_typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
785
+
786
+ var clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
787
+
788
+ function clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
789
+
790
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
791
+
792
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
793
+
794
+
795
+
796
+
797
+
798
+ /**
799
+ * Base class which takes one or more elements, adds event listeners to them,
800
+ * and instantiates a new `ClipboardAction` on each click.
801
+ */
802
+
803
+ var clipboard_Clipboard = function (_Emitter) {
804
+ _inherits(Clipboard, _Emitter);
805
+
806
+ /**
807
+ * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
808
+ * @param {Object} options
809
+ */
810
+ function Clipboard(trigger, options) {
811
+ clipboard_classCallCheck(this, Clipboard);
812
+
813
+ var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));
814
+
815
+ _this.resolveOptions(options);
816
+ _this.listenClick(trigger);
817
+ return _this;
818
+ }
819
+
820
+ /**
821
+ * Defines if attributes would be resolved using internal setter functions
822
+ * or custom functions that were passed in the constructor.
823
+ * @param {Object} options
824
+ */
825
+
826
+
827
+ clipboard_createClass(Clipboard, [{
828
+ key: 'resolveOptions',
829
+ value: function resolveOptions() {
830
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
831
+
832
+ this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
833
+ this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
834
+ this.text = typeof options.text === 'function' ? options.text : this.defaultText;
835
+ this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;
836
+ }
837
+
838
+ /**
839
+ * Adds a click event listener to the passed trigger.
840
+ * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
841
+ */
842
+
843
+ }, {
844
+ key: 'listenClick',
845
+ value: function listenClick(trigger) {
846
+ var _this2 = this;
847
+
848
+ this.listener = listen_default()(trigger, 'click', function (e) {
849
+ return _this2.onClick(e);
850
+ });
851
+ }
852
+
853
+ /**
854
+ * Defines a new `ClipboardAction` on each click event.
855
+ * @param {Event} e
856
+ */
857
+
858
+ }, {
859
+ key: 'onClick',
860
+ value: function onClick(e) {
861
+ var trigger = e.delegateTarget || e.currentTarget;
862
+
863
+ if (this.clipboardAction) {
864
+ this.clipboardAction = null;
865
+ }
866
+
867
+ this.clipboardAction = new clipboard_action({
868
+ action: this.action(trigger),
869
+ target: this.target(trigger),
870
+ text: this.text(trigger),
871
+ container: this.container,
872
+ trigger: trigger,
873
+ emitter: this
874
+ });
875
+ }
876
+
877
+ /**
878
+ * Default `action` lookup function.
879
+ * @param {Element} trigger
880
+ */
881
+
882
+ }, {
883
+ key: 'defaultAction',
884
+ value: function defaultAction(trigger) {
885
+ return getAttributeValue('action', trigger);
886
+ }
887
+
888
+ /**
889
+ * Default `target` lookup function.
890
+ * @param {Element} trigger
891
+ */
892
+
893
+ }, {
894
+ key: 'defaultTarget',
895
+ value: function defaultTarget(trigger) {
896
+ var selector = getAttributeValue('target', trigger);
897
+
898
+ if (selector) {
899
+ return document.querySelector(selector);
900
+ }
901
+ }
902
+
903
+ /**
904
+ * Returns the support of the given action, or all actions if no action is
905
+ * given.
906
+ * @param {String} [action]
907
+ */
908
+
909
+ }, {
910
+ key: 'defaultText',
911
+
912
+
913
+ /**
914
+ * Default `text` lookup function.
915
+ * @param {Element} trigger
916
+ */
917
+ value: function defaultText(trigger) {
918
+ return getAttributeValue('text', trigger);
919
+ }
920
+
921
+ /**
922
+ * Destroy lifecycle.
923
+ */
924
+
925
+ }, {
926
+ key: 'destroy',
927
+ value: function destroy() {
928
+ this.listener.destroy();
929
+
930
+ if (this.clipboardAction) {
931
+ this.clipboardAction.destroy();
932
+ this.clipboardAction = null;
933
+ }
934
+ }
935
+ }], [{
936
+ key: 'isSupported',
937
+ value: function isSupported() {
938
+ var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];
939
+
940
+ var actions = typeof action === 'string' ? [action] : action;
941
+ var support = !!document.queryCommandSupported;
942
+
943
+ actions.forEach(function (action) {
944
+ support = support && !!document.queryCommandSupported(action);
945
+ });
946
+
947
+ return support;
948
+ }
949
+ }]);
950
+
951
+ return Clipboard;
952
+ }(tiny_emitter_default.a);
953
+
954
+ /**
955
+ * Helper function to retrieve attribute value.
956
+ * @param {String} suffix
957
+ * @param {Element} element
958
+ */
959
+
960
+
961
+ function getAttributeValue(suffix, element) {
962
+ var attribute = 'data-clipboard-' + suffix;
963
+
964
+ if (!element.hasAttribute(attribute)) {
965
+ return;
966
+ }
967
+
968
+ return element.getAttribute(attribute);
969
+ }
970
+
971
+ /* harmony default export */ var clipboard = __webpack_exports__["default"] = (clipboard_Clipboard);
972
+
973
+ /***/ })
974
+ /******/ ])["default"];
975
+ });