j1-template 2020.0.22 → 2020.0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (266) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_page.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_post.html +63 -161
  4. data/_includes/themes/j1/modules/connectors/ad/google-adsense.html +14 -0
  5. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +1 -3
  6. data/_includes/themes/j1/modules/connectors/comment/disqus.html +37 -24
  7. data/_includes/themes/j1/modules/navigator/generator.html +8 -3
  8. data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +36 -26
  9. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  10. data/_includes/themes/j1/procedures/posts/create_series_header.proc +9 -5
  11. data/assets/data/banner.html +1 -1
  12. data/assets/data/fam.html +124 -0
  13. data/assets/data/mmenu_sidebar.html +3 -3
  14. data/assets/data/panel.html +9 -9
  15. data/assets/data/quicklinks.html +13 -13
  16. data/assets/error_pages/HTTP204.html +1 -0
  17. data/assets/error_pages/HTTP400.html +3 -2
  18. data/assets/error_pages/HTTP401.html +3 -2
  19. data/assets/error_pages/HTTP403.html +3 -2
  20. data/assets/error_pages/HTTP404.html +3 -2
  21. data/assets/error_pages/HTTP500.html +3 -2
  22. data/assets/error_pages/HTTP501.html +3 -2
  23. data/assets/error_pages/HTTP502.html +3 -2
  24. data/assets/error_pages/HTTP503.html +3 -2
  25. data/assets/error_pages/HTTP520.html +3 -2
  26. data/assets/error_pages/HTTP521.html +3 -2
  27. data/assets/error_pages/HTTP533.html +3 -2
  28. data/assets/themes/j1/adapter/js/{ssm.js → fam.js} +248 -138
  29. data/assets/themes/j1/adapter/js/framer.js +72 -56
  30. data/assets/themes/j1/adapter/js/gallery_customizer.js +2 -1
  31. data/assets/themes/j1/adapter/js/j1.js +8 -2
  32. data/assets/themes/j1/adapter/js/{searcher.js → lunr_search.js} +68 -65
  33. data/assets/themes/j1/adapter/js/toccer.js +62 -30
  34. data/assets/themes/j1/core/css/bootstrap.css +7154 -0
  35. data/assets/themes/j1/core/css/bootstrap.min.css +6 -0
  36. data/assets/themes/j1/core/css/custom.scss +28 -0
  37. data/assets/themes/j1/core/css/globals.css +14523 -0
  38. data/assets/themes/j1/core/css/globals.min.css +1 -0
  39. data/assets/themes/j1/core/css/globals.scss +28 -0
  40. data/assets/themes/j1/core/css/theme_extensions.css +11558 -0
  41. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -0
  42. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +7 -4
  43. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +2 -2
  44. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.css +7 -4
  45. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.min.css +2 -2
  46. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +514 -417
  47. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +2 -2
  48. data/assets/themes/j1/core/css/uno.css +11823 -0
  49. data/assets/themes/j1/core/css/uno.min.css +1 -0
  50. data/assets/themes/j1/core/css/uno.scss +28 -0
  51. data/assets/themes/j1/core/css/vendor.css +5 -4
  52. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  53. data/assets/themes/j1/core/css/vendor.scss +28 -0
  54. data/assets/themes/j1/core/js/template.js +6 -11
  55. data/assets/themes/j1/core/js/template.js.map +1 -1
  56. data/assets/themes/j1/core/js/template.min.js +1 -1
  57. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +6 -0
  58. data/assets/themes/j1/modules/cash/js/cash.js +1374 -0
  59. data/assets/themes/j1/modules/cash/js/cash.min.js +42 -0
  60. data/assets/themes/j1/modules/fam/css/uno/fam.css +369 -0
  61. data/assets/themes/j1/modules/fam/js/fam.js +477 -0
  62. data/assets/themes/j1/modules/iframeResizer/examples/frame.nested.html +1 -1
  63. data/assets/themes/j1/modules/iframeResizer/js/{iframeResizer.js → resizer.js} +0 -0
  64. data/assets/themes/j1/modules/iframeResizer/js/{iframeResizer.map → resizer.map} +0 -0
  65. data/assets/themes/j1/modules/iframeResizer/js/{iframeResizer.min.js → resizer.min.js} +0 -0
  66. data/assets/themes/j1/modules/jquery/js/require.js +2145 -0
  67. data/assets/themes/j1/modules/jquery/js/require.min.js +5 -0
  68. data/assets/themes/j1/modules/lunrSearch/css/lunr_search.css +32 -0
  69. data/assets/themes/j1/modules/lunrSearch/css/lunr_search.min.css +25 -0
  70. data/assets/themes/j1/modules/lunrSearch/js/dateformat.js +125 -0
  71. data/assets/themes/j1/modules/lunrSearch/js/dateformat.min.js +14 -0
  72. data/assets/themes/j1/modules/lunrSearch/js/lunr.js +3475 -0
  73. data/assets/themes/j1/modules/lunrSearch/js/lunr.min.js +51 -0
  74. data/assets/themes/j1/modules/lunrSearch/js/lunr_search.js +184 -0
  75. data/assets/themes/j1/modules/lunrSearch/js/lunr_search.min.js +17 -0
  76. data/assets/themes/j1/modules/lunrSearch/js/mustache.js +772 -0
  77. data/assets/themes/j1/modules/lunrSearch/js/mustache.min.js +772 -0
  78. data/assets/themes/j1/modules/lunrSearch/js/uri.js +2340 -0
  79. data/assets/themes/j1/modules/lunrSearch/js/uri.min.js +93 -0
  80. data/assets/themes/j1/modules/materialize/js/anime.js +1283 -0
  81. data/assets/themes/j1/modules/materialize/js/anime.min.js +34 -0
  82. data/assets/themes/j1/modules/materialize/js/autocomplete.js +450 -0
  83. data/assets/themes/j1/modules/materialize/js/buttons.js +409 -0
  84. data/assets/themes/j1/modules/materialize/js/cards.js +40 -0
  85. data/assets/themes/j1/modules/materialize/js/carousel.js +717 -0
  86. data/assets/themes/j1/modules/materialize/js/cash-dom.js +1044 -0
  87. data/assets/themes/j1/modules/materialize/js/cash.js +960 -0
  88. data/assets/themes/j1/modules/materialize/js/characterCounter.js +136 -0
  89. data/assets/themes/j1/modules/materialize/js/chips.js +481 -0
  90. data/assets/themes/j1/modules/materialize/js/collapsible.js +275 -0
  91. data/assets/themes/j1/modules/materialize/js/component.js +44 -0
  92. data/assets/themes/j1/modules/materialize/js/datepicker.js +975 -0
  93. data/assets/themes/j1/modules/materialize/js/dropdown.js +617 -0
  94. data/assets/themes/j1/modules/materialize/js/forms.js +275 -0
  95. data/assets/themes/j1/modules/materialize/js/global.js +427 -0
  96. data/assets/themes/j1/modules/materialize/js/materialbox.js +453 -0
  97. data/assets/themes/j1/modules/materialize/js/modal.js +382 -0
  98. data/assets/themes/j1/modules/materialize/js/parallax.js +138 -0
  99. data/assets/themes/j1/modules/materialize/js/pushpin.js +145 -0
  100. data/assets/themes/j1/modules/materialize/js/range.js +263 -0
  101. data/assets/themes/j1/modules/materialize/js/ripple.js +335 -0
  102. data/assets/themes/j1/modules/materialize/js/scrollspy.js +295 -0
  103. data/assets/themes/j1/modules/materialize/js/select.js +432 -0
  104. data/assets/themes/j1/modules/materialize/js/sidenav.js +580 -0
  105. data/assets/themes/j1/modules/materialize/js/slider.js +359 -0
  106. data/assets/themes/j1/modules/materialize/js/tabs.js +402 -0
  107. data/assets/themes/j1/modules/materialize/js/tapTarget.js +314 -0
  108. data/assets/themes/j1/modules/materialize/js/timepicker.js +647 -0
  109. data/assets/themes/j1/modules/materialize/js/toasts.js +310 -0
  110. data/assets/themes/j1/modules/materialize/js/tooltip.js +303 -0
  111. data/assets/themes/j1/modules/materialize/js/waves.js +335 -0
  112. data/assets/themes/j1/modules/materialize/scss/components/_badges.scss +55 -0
  113. data/assets/themes/j1/modules/materialize/scss/components/_buttons.scss +322 -0
  114. data/assets/themes/j1/modules/materialize/scss/components/_cards.scss +195 -0
  115. data/assets/themes/j1/modules/materialize/scss/components/_carousel.scss +90 -0
  116. data/assets/themes/j1/modules/materialize/scss/components/_chips.scss +90 -0
  117. data/assets/themes/j1/modules/materialize/scss/components/_collapsible.scss +91 -0
  118. data/assets/themes/j1/modules/materialize/scss/components/_color-classes.scss +32 -0
  119. data/assets/themes/j1/modules/materialize/scss/components/_color-variables.scss +370 -0
  120. data/assets/themes/j1/modules/materialize/scss/components/_datepicker.scss +191 -0
  121. data/assets/themes/j1/modules/materialize/scss/components/_dropdown.scss +85 -0
  122. data/assets/themes/j1/modules/materialize/scss/components/_global.scss +769 -0
  123. data/assets/themes/j1/modules/materialize/scss/components/_grid.scss +156 -0
  124. data/assets/themes/j1/modules/materialize/scss/components/_icons-material-design.scss +5 -0
  125. data/assets/themes/j1/modules/materialize/scss/components/_materialbox.scss +43 -0
  126. data/assets/themes/j1/modules/materialize/scss/components/_modal.scss +94 -0
  127. data/assets/themes/j1/modules/materialize/scss/components/_navbar.scss +208 -0
  128. data/assets/themes/j1/modules/materialize/scss/components/_normalize.scss +447 -0
  129. data/assets/themes/j1/modules/materialize/scss/components/_preloader.scss +334 -0
  130. data/assets/themes/j1/modules/materialize/scss/components/_pulse.scss +34 -0
  131. data/assets/themes/j1/modules/materialize/scss/components/_sidenav.scss +216 -0
  132. data/assets/themes/j1/modules/materialize/scss/components/_slider.scss +92 -0
  133. data/assets/themes/j1/modules/materialize/scss/components/_table_of_contents.scss +33 -0
  134. data/assets/themes/j1/modules/materialize/scss/components/_tabs.scss +99 -0
  135. data/assets/themes/j1/modules/materialize/scss/components/_tapTarget.scss +103 -0
  136. data/assets/themes/j1/modules/materialize/scss/components/_timepicker.scss +183 -0
  137. data/assets/themes/j1/modules/materialize/scss/components/_toast.scss +58 -0
  138. data/assets/themes/j1/modules/materialize/scss/components/_tooltip.scss +32 -0
  139. data/assets/themes/j1/modules/materialize/scss/components/_transitions.scss +13 -0
  140. data/assets/themes/j1/modules/materialize/scss/components/_typography.scss +60 -0
  141. data/assets/themes/j1/modules/materialize/scss/components/_variables.scss +349 -0
  142. data/assets/themes/j1/modules/materialize/scss/components/_waves.scss +114 -0
  143. data/assets/themes/j1/modules/materialize/scss/components/forms/_checkboxes.scss +200 -0
  144. data/assets/themes/j1/modules/materialize/scss/components/forms/_file-input.scss +44 -0
  145. data/assets/themes/j1/modules/materialize/scss/components/forms/_forms.scss +22 -0
  146. data/assets/themes/j1/modules/materialize/scss/components/forms/_input-fields.scss +354 -0
  147. data/assets/themes/j1/modules/materialize/scss/components/forms/_radio-buttons.scss +115 -0
  148. data/assets/themes/j1/modules/materialize/scss/components/forms/_range.scss +161 -0
  149. data/assets/themes/j1/modules/materialize/scss/components/forms/_select.scss +180 -0
  150. data/assets/themes/j1/modules/materialize/scss/components/forms/_switches.scss +89 -0
  151. data/assets/themes/j1/modules/materialize/scss/materialize.scss +41 -0
  152. data/assets/themes/j1/modules/{bsThemeSwitcher → themeSwitcher}/js/switcher.js +0 -0
  153. data/assets/themes/j1/modules/{bsThemeSwitcher → themeSwitcher}/js/switcher.min.js +0 -0
  154. data/lib/j1/version.rb +1 -1
  155. data/lib/starter_web/Gemfile +12 -16
  156. data/lib/starter_web/_config.yml +95 -21
  157. data/lib/starter_web/_data/blocks/banner.yml +1 -1
  158. data/lib/starter_web/_data/blocks/panel.yml +6 -6
  159. data/lib/starter_web/_data/j1_config.yml +7 -6
  160. data/lib/starter_web/_data/layouts/home.yml +13 -3
  161. data/lib/starter_web/_data/layouts/page.yml +10 -0
  162. data/lib/starter_web/_data/layouts/post.yml +10 -0
  163. data/lib/starter_web/_data/modules/defaults/{ssm.yml → fam.yml} +12 -15
  164. data/lib/starter_web/_data/modules/defaults/lunr_search.yml +171 -0
  165. data/lib/starter_web/_data/modules/defaults/navigator.yml +4 -4
  166. data/lib/starter_web/_data/modules/defaults/toccer.yml +4 -2
  167. data/lib/starter_web/_data/modules/fam.yml +158 -0
  168. data/lib/starter_web/_data/modules/{back2top.yml → lunr_search.yml} +15 -9
  169. data/lib/starter_web/_data/modules/navigator.yml +2 -2
  170. data/lib/starter_web/_data/modules/navigator_menu.yml +57 -6
  171. data/lib/starter_web/_data/modules/toccer.yml +0 -73
  172. data/lib/starter_web/_data/resources.yml +151 -104
  173. data/lib/starter_web/_includes/attributes.asciidoc +2 -2
  174. data/lib/starter_web/_includes/breadcrumbs.html +11 -0
  175. data/lib/starter_web/_plugins/debug.rb +0 -1
  176. data/lib/starter_web/_plugins/filters.rb +0 -1
  177. data/lib/starter_web/_plugins/{lorem-inline.rb → lorem_inline.rb} +1 -2
  178. data/lib/starter_web/_plugins/lunr_index.rb +313 -0
  179. data/lib/starter_web/_plugins/prettify.rb +0 -3
  180. data/lib/starter_web/_plugins/simple_search_filter.rb +0 -1
  181. data/lib/starter_web/_plugins/symlink_watcher.rb +2 -3
  182. data/lib/starter_web/assets/images/modules/attics/banner/lunr-banner-1280x800.jpg +0 -0
  183. data/lib/starter_web/assets/images/pages/winlogbeat/coordinate-map.png +0 -0
  184. data/lib/starter_web/assets/images/pages/winlogbeat/kibana-powershell.jpg +0 -0
  185. data/lib/starter_web/assets/images/pages/winlogbeat/option_ignore_outgoing.png +0 -0
  186. data/lib/starter_web/assets/images/pages/winlogbeat/winlogbeat-dashboard.png +0 -0
  187. data/lib/starter_web/collections/posts/public/featured/_posts/2018-05-01-confusion-about-base-url.adoc +2 -4
  188. data/lib/starter_web/collections/posts/public/featured/_posts/2019-05-01-top-open-source-static-site-generators.adoc +4 -2
  189. data/lib/starter_web/collections/posts/public/featured/_posts/2019-06-01-about-cookies.adoc +3 -2
  190. data/lib/starter_web/collections/posts/public/series/_posts/2018-11-01-docker-using-shared-folders.adoc +5 -4
  191. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-test-series.adoc +144 -0
  192. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-test-series.adoc +146 -0
  193. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-test-series.adoc +146 -0
  194. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-04-post-test-series.adoc +146 -0
  195. data/lib/starter_web/collections/posts/public/test_posts/_posts/2020-09-11-test_post.adoc +2 -4
  196. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-20-minneapolis.adoc +2 -3
  197. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-24-narcisse-snake-dens.adoc +2 -7
  198. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-26-columbia-river.adoc +2 -6
  199. data/lib/starter_web/index.html +16 -10
  200. data/lib/starter_web/package.json +5 -2
  201. data/lib/starter_web/pages/public/about/about_site.adoc +0 -2
  202. data/lib/starter_web/pages/public/about/become_a_patron.adoc +1 -3
  203. data/lib/starter_web/pages/public/blog/navigator/archive.html +8 -1
  204. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +7 -3
  205. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +8 -1
  206. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +7 -2
  207. data/lib/starter_web/pages/public/blog/navigator/index.html +6 -2
  208. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/100_meet_and_greet_jekyll.adoc +3 -4
  209. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/200_preparations.adoc +3 -4
  210. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/300_first_awesome_web.adoc +3 -4
  211. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +25 -20
  212. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +14 -12
  213. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +20 -20
  214. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +13 -8
  215. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +14 -9
  216. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +9 -6
  217. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +62 -8
  218. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +9 -7
  219. data/lib/starter_web/pages/public/learn/roundtrip/600_lunr.adoc +237 -0
  220. data/lib/starter_web/pages/public/learn/roundtrip/610_fam.adoc +302 -0
  221. data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -7
  222. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -2
  223. data/lib/starter_web/pages/public/legal/de/200_terms_of_use.adoc +2 -1
  224. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +2 -1
  225. data/lib/starter_web/pages/public/legal/de/400_license_agreement.adoc +2 -1
  226. data/lib/starter_web/pages/public/legal/de/500_support.adoc +2 -1
  227. data/lib/starter_web/pages/public/legal/en/000_copyright.adoc +30 -27
  228. data/lib/starter_web/pages/public/legal/en/100_impress.adoc +8 -5
  229. data/lib/starter_web/pages/public/legal/en/200_terms_of_use.adoc +12 -8
  230. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +7 -0
  231. data/lib/starter_web/pages/public/legal/en/400_license_agreement.adoc +8 -1
  232. data/lib/starter_web/pages/public/legal/en/500_support.adoc +8 -1
  233. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +3 -1
  234. data/lib/starter_web/pages/public/previewer/iframer.adoc +36 -28
  235. data/lib/starter_web/pages/public/previewer/justified_gallery.html +2 -1
  236. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -1
  237. data/lib/starter_web/pages/public/previewer/rouge.adoc +4 -2
  238. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +2 -1
  239. data/lib/starter_web/pages/public/test_pages/breadcrumbs_tester.adoc +62 -0
  240. data/lib/starter_web/pages/public/test_pages/deck_of_posts.adoc +3 -0
  241. data/lib/starter_web/pages/public/test_pages/floating_actions_button.adoc +523 -0
  242. data/lib/starter_web/pages/public/test_pages/floating_ad.adoc +1 -0
  243. data/lib/starter_web/pages/public/test_pages/floating_div.adoc +1 -0
  244. data/lib/starter_web/pages/public/test_pages/lunr_tester.adoc +89 -0
  245. data/lib/starter_web/pages/public/test_pages/nav_pagination_tester.adoc +1 -0
  246. data/lib/starter_web/pages/public/test_pages/page_attribute_tester.adoc +1 -0
  247. data/lib/starter_web/pages/public/test_pages/responsive_images.adoc +3 -2
  248. data/lib/starter_web/pages/public/test_pages/responsive_tables.adoc +1 -0
  249. data/lib/starter_web/pages/public/test_pages/toccer_tester.adoc +2245 -0
  250. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  251. data/lib/starter_web/utilsrv/package.json +1 -1
  252. metadata +137 -29
  253. data/assets/data/search.json +0 -165
  254. data/assets/data/ssm.html +0 -242
  255. data/assets/themes/j1/adapter/js/back2top.js +0 -231
  256. data/assets/themes/j1/modules/jekyllSearch/js/simple-jekyll-search.js +0 -468
  257. data/assets/themes/j1/modules/jekyllSearch/js/simple-jekyll-search.min.js +0 -6
  258. data/assets/themes/j1/modules/tocbot/css/theme/uno.css +0 -95
  259. data/assets/themes/j1/modules/tocbot/css/theme/uno.min.css +0 -15
  260. data/assets/themes/j1/modules/tocbot/css/tocbot.css +0 -75
  261. data/assets/themes/j1/modules/tocbot/css/tocbot.min.css +0 -19
  262. data/assets/themes/j1/modules/tocbot/js/tocbot.js +0 -19
  263. data/assets/themes/j1/modules/tocbot/js/tocbot.min.js +0 -19
  264. data/lib/starter_web/_data/modules/defaults/back2top.yml +0 -146
  265. data/lib/starter_web/_data/modules/defaults/stickybits.yml +0 -36
  266. data/lib/starter_web/_data/modules/ssm.yml +0 -142
@@ -0,0 +1,1044 @@
1
+ /*! cash-dom 1.3.5, https://github.com/kenwheeler/cash @license MIT */
2
+ (function (factory) {
3
+ window.cash = factory();
4
+ })(function () {
5
+ var doc = document,
6
+ win = window,
7
+ ArrayProto = Array.prototype,
8
+ slice = ArrayProto.slice,
9
+ filter = ArrayProto.filter,
10
+ push = ArrayProto.push;
11
+
12
+ var noop = function () {},
13
+ isFunction = function (item) {
14
+ // @see https://crbug.com/568448
15
+ return typeof item === typeof noop && item.call;
16
+ },
17
+ isString = function (item) {
18
+ return typeof item === typeof "";
19
+ };
20
+
21
+ var idMatch = /^#[\w-]*$/,
22
+ classMatch = /^\.[\w-]*$/,
23
+ htmlMatch = /<.+>/,
24
+ singlet = /^\w+$/;
25
+
26
+ function find(selector, context) {
27
+ context = context || doc;
28
+ var elems = classMatch.test(selector) ? context.getElementsByClassName(selector.slice(1)) : singlet.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);
29
+ return elems;
30
+ }
31
+
32
+ var frag;
33
+ function parseHTML(str) {
34
+ if (!frag) {
35
+ frag = doc.implementation.createHTMLDocument(null);
36
+ var base = frag.createElement("base");
37
+ base.href = doc.location.href;
38
+ frag.head.appendChild(base);
39
+ }
40
+
41
+ frag.body.innerHTML = str;
42
+
43
+ return frag.body.childNodes;
44
+ }
45
+
46
+ function onReady(fn) {
47
+ if (doc.readyState !== "loading") {
48
+ fn();
49
+ } else {
50
+ doc.addEventListener("DOMContentLoaded", fn);
51
+ }
52
+ }
53
+
54
+ function Init(selector, context) {
55
+ if (!selector) {
56
+ return this;
57
+ }
58
+
59
+ // If already a cash collection, don't do any further processing
60
+ if (selector.cash && selector !== win) {
61
+ return selector;
62
+ }
63
+
64
+ var elems = selector,
65
+ i = 0,
66
+ length;
67
+
68
+ if (isString(selector)) {
69
+ elems = idMatch.test(selector) ?
70
+ // If an ID use the faster getElementById check
71
+ doc.getElementById(selector.slice(1)) : htmlMatch.test(selector) ?
72
+ // If HTML, parse it into real elements
73
+ parseHTML(selector) :
74
+ // else use `find`
75
+ find(selector, context);
76
+
77
+ // If function, use as shortcut for DOM ready
78
+ } else if (isFunction(selector)) {
79
+ onReady(selector);return this;
80
+ }
81
+
82
+ if (!elems) {
83
+ return this;
84
+ }
85
+
86
+ // If a single DOM element is passed in or received via ID, return the single element
87
+ if (elems.nodeType || elems === win) {
88
+ this[0] = elems;
89
+ this.length = 1;
90
+ } else {
91
+ // Treat like an array and loop through each item.
92
+ length = this.length = elems.length;
93
+ for (; i < length; i++) {
94
+ this[i] = elems[i];
95
+ }
96
+ }
97
+
98
+ return this;
99
+ }
100
+
101
+ function cash(selector, context) {
102
+ return new Init(selector, context);
103
+ }
104
+
105
+ var fn = cash.fn = cash.prototype = Init.prototype = { // jshint ignore:line
106
+ cash: true,
107
+ length: 0,
108
+ push: push,
109
+ splice: ArrayProto.splice,
110
+ map: ArrayProto.map,
111
+ init: Init
112
+ };
113
+
114
+ Object.defineProperty(fn, "constructor", { value: cash });
115
+
116
+ cash.parseHTML = parseHTML;
117
+ cash.noop = noop;
118
+ cash.isFunction = isFunction;
119
+ cash.isString = isString;
120
+
121
+ cash.extend = fn.extend = function (target) {
122
+ target = target || {};
123
+
124
+ var args = slice.call(arguments),
125
+ length = args.length,
126
+ i = 1;
127
+
128
+ if (args.length === 1) {
129
+ target = this;
130
+ i = 0;
131
+ }
132
+
133
+ for (; i < length; i++) {
134
+ if (!args[i]) {
135
+ continue;
136
+ }
137
+ for (var key in args[i]) {
138
+ if (args[i].hasOwnProperty(key)) {
139
+ target[key] = args[i][key];
140
+ }
141
+ }
142
+ }
143
+
144
+ return target;
145
+ };
146
+
147
+ function each(collection, callback) {
148
+ var l = collection.length,
149
+ i = 0;
150
+
151
+ for (; i < l; i++) {
152
+ if (callback.call(collection[i], collection[i], i, collection) === false) {
153
+ break;
154
+ }
155
+ }
156
+ }
157
+
158
+ function matches(el, selector) {
159
+ var m = el && (el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector);
160
+ return !!m && m.call(el, selector);
161
+ }
162
+
163
+ function getCompareFunction(selector) {
164
+ return (
165
+ /* Use browser's `matches` function if string */
166
+ isString(selector) ? matches :
167
+ /* Match a cash element */
168
+ selector.cash ? function (el) {
169
+ return selector.is(el);
170
+ } :
171
+ /* Direct comparison */
172
+ function (el, selector) {
173
+ return el === selector;
174
+ }
175
+ );
176
+ }
177
+
178
+ function unique(collection) {
179
+ return cash(slice.call(collection).filter(function (item, index, self) {
180
+ return self.indexOf(item) === index;
181
+ }));
182
+ }
183
+
184
+ cash.extend({
185
+ merge: function (first, second) {
186
+ var len = +second.length,
187
+ i = first.length,
188
+ j = 0;
189
+
190
+ for (; j < len; i++, j++) {
191
+ first[i] = second[j];
192
+ }
193
+
194
+ first.length = i;
195
+ return first;
196
+ },
197
+
198
+ each: each,
199
+ matches: matches,
200
+ unique: unique,
201
+ isArray: Array.isArray,
202
+ isNumeric: function (n) {
203
+ return !isNaN(parseFloat(n)) && isFinite(n);
204
+ }
205
+
206
+ });
207
+
208
+ var uid = cash.uid = "_cash" + Date.now();
209
+
210
+ function getDataCache(node) {
211
+ return node[uid] = node[uid] || {};
212
+ }
213
+
214
+ function setData(node, key, value) {
215
+ return getDataCache(node)[key] = value;
216
+ }
217
+
218
+ function getData(node, key) {
219
+ var c = getDataCache(node);
220
+ if (c[key] === undefined) {
221
+ c[key] = node.dataset ? node.dataset[key] : cash(node).attr("data-" + key);
222
+ }
223
+ return c[key];
224
+ }
225
+
226
+ function removeData(node, key) {
227
+ var c = getDataCache(node);
228
+ if (c) {
229
+ delete c[key];
230
+ } else if (node.dataset) {
231
+ delete node.dataset[key];
232
+ } else {
233
+ cash(node).removeAttr("data-" + name);
234
+ }
235
+ }
236
+
237
+ fn.extend({
238
+ data: function (name, value) {
239
+ if (isString(name)) {
240
+ return value === undefined ? getData(this[0], name) : this.each(function (v) {
241
+ return setData(v, name, value);
242
+ });
243
+ }
244
+
245
+ for (var key in name) {
246
+ this.data(key, name[key]);
247
+ }
248
+
249
+ return this;
250
+ },
251
+
252
+ removeData: function (key) {
253
+ return this.each(function (v) {
254
+ return removeData(v, key);
255
+ });
256
+ }
257
+
258
+ });
259
+
260
+ var notWhiteMatch = /\S+/g;
261
+
262
+ function getClasses(c) {
263
+ return isString(c) && c.match(notWhiteMatch);
264
+ }
265
+
266
+ function hasClass(v, c) {
267
+ return v.classList ? v.classList.contains(c) : new RegExp("(^| )" + c + "( |$)", "gi").test(v.className);
268
+ }
269
+
270
+ function addClass(v, c, spacedName) {
271
+ if (v.classList) {
272
+ v.classList.add(c);
273
+ } else if (spacedName.indexOf(" " + c + " ")) {
274
+ v.className += " " + c;
275
+ }
276
+ }
277
+
278
+ function removeClass(v, c) {
279
+ if (v.classList) {
280
+ v.classList.remove(c);
281
+ } else {
282
+ v.className = v.className.replace(c, "");
283
+ }
284
+ }
285
+
286
+ fn.extend({
287
+ addClass: function (c) {
288
+ var classes = getClasses(c);
289
+
290
+ return classes ? this.each(function (v) {
291
+ var spacedName = " " + v.className + " ";
292
+ each(classes, function (c) {
293
+ addClass(v, c, spacedName);
294
+ });
295
+ }) : this;
296
+ },
297
+
298
+ attr: function (name, value) {
299
+ if (!name) {
300
+ return undefined;
301
+ }
302
+
303
+ if (isString(name)) {
304
+ if (value === undefined) {
305
+ return this[0] ? this[0].getAttribute ? this[0].getAttribute(name) : this[0][name] : undefined;
306
+ }
307
+
308
+ return this.each(function (v) {
309
+ if (v.setAttribute) {
310
+ v.setAttribute(name, value);
311
+ } else {
312
+ v[name] = value;
313
+ }
314
+ });
315
+ }
316
+
317
+ for (var key in name) {
318
+ this.attr(key, name[key]);
319
+ }
320
+
321
+ return this;
322
+ },
323
+
324
+ hasClass: function (c) {
325
+ var check = false,
326
+ classes = getClasses(c);
327
+ if (classes && classes.length) {
328
+ this.each(function (v) {
329
+ check = hasClass(v, classes[0]);
330
+ return !check;
331
+ });
332
+ }
333
+ return check;
334
+ },
335
+
336
+ prop: function (name, value) {
337
+ if (isString(name)) {
338
+ return value === undefined ? this[0][name] : this.each(function (v) {
339
+ v[name] = value;
340
+ });
341
+ }
342
+
343
+ for (var key in name) {
344
+ this.prop(key, name[key]);
345
+ }
346
+
347
+ return this;
348
+ },
349
+
350
+ removeAttr: function (name) {
351
+ return this.each(function (v) {
352
+ if (v.removeAttribute) {
353
+ v.removeAttribute(name);
354
+ } else {
355
+ delete v[name];
356
+ }
357
+ });
358
+ },
359
+
360
+ removeClass: function (c) {
361
+ if (!arguments.length) {
362
+ return this.attr("class", "");
363
+ }
364
+ var classes = getClasses(c);
365
+ return classes ? this.each(function (v) {
366
+ each(classes, function (c) {
367
+ removeClass(v, c);
368
+ });
369
+ }) : this;
370
+ },
371
+
372
+ removeProp: function (name) {
373
+ return this.each(function (v) {
374
+ delete v[name];
375
+ });
376
+ },
377
+
378
+ toggleClass: function (c, state) {
379
+ if (state !== undefined) {
380
+ return this[state ? "addClass" : "removeClass"](c);
381
+ }
382
+ var classes = getClasses(c);
383
+ return classes ? this.each(function (v) {
384
+ var spacedName = " " + v.className + " ";
385
+ each(classes, function (c) {
386
+ if (hasClass(v, c)) {
387
+ removeClass(v, c);
388
+ } else {
389
+ addClass(v, c, spacedName);
390
+ }
391
+ });
392
+ }) : this;
393
+ } });
394
+
395
+ fn.extend({
396
+ add: function (selector, context) {
397
+ return unique(cash.merge(this, cash(selector, context)));
398
+ },
399
+
400
+ each: function (callback) {
401
+ each(this, callback);
402
+ return this;
403
+ },
404
+
405
+ eq: function (index) {
406
+ return cash(this.get(index));
407
+ },
408
+
409
+ filter: function (selector) {
410
+ if (!selector) {
411
+ return this;
412
+ }
413
+
414
+ var comparator = isFunction(selector) ? selector : getCompareFunction(selector);
415
+
416
+ return cash(filter.call(this, function (e) {
417
+ return comparator(e, selector);
418
+ }));
419
+ },
420
+
421
+ first: function () {
422
+ return this.eq(0);
423
+ },
424
+
425
+ get: function (index) {
426
+ if (index === undefined) {
427
+ return slice.call(this);
428
+ }
429
+ return index < 0 ? this[index + this.length] : this[index];
430
+ },
431
+
432
+ index: function (elem) {
433
+ var child = elem ? cash(elem)[0] : this[0],
434
+ collection = elem ? this : cash(child).parent().children();
435
+ return slice.call(collection).indexOf(child);
436
+ },
437
+
438
+ last: function () {
439
+ return this.eq(-1);
440
+ }
441
+
442
+ });
443
+
444
+ var camelCase = function () {
445
+ var camelRegex = /(?:^\w|[A-Z]|\b\w)/g,
446
+ whiteSpace = /[\s-_]+/g;
447
+ return function (str) {
448
+ return str.replace(camelRegex, function (letter, index) {
449
+ return letter[index === 0 ? "toLowerCase" : "toUpperCase"]();
450
+ }).replace(whiteSpace, "");
451
+ };
452
+ }();
453
+
454
+ var getPrefixedProp = function () {
455
+ var cache = {},
456
+ doc = document,
457
+ div = doc.createElement("div"),
458
+ style = div.style;
459
+
460
+ return function (prop) {
461
+ prop = camelCase(prop);
462
+ if (cache[prop]) {
463
+ return cache[prop];
464
+ }
465
+
466
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
467
+ prefixes = ["webkit", "moz", "ms", "o"],
468
+ props = (prop + " " + prefixes.join(ucProp + " ") + ucProp).split(" ");
469
+
470
+ each(props, function (p) {
471
+ if (p in style) {
472
+ cache[p] = prop = cache[prop] = p;
473
+ return false;
474
+ }
475
+ });
476
+
477
+ return cache[prop];
478
+ };
479
+ }();
480
+
481
+ cash.prefixedProp = getPrefixedProp;
482
+ cash.camelCase = camelCase;
483
+
484
+ fn.extend({
485
+ css: function (prop, value) {
486
+ if (isString(prop)) {
487
+ prop = getPrefixedProp(prop);
488
+ return arguments.length > 1 ? this.each(function (v) {
489
+ return v.style[prop] = value;
490
+ }) : win.getComputedStyle(this[0])[prop];
491
+ }
492
+
493
+ for (var key in prop) {
494
+ this.css(key, prop[key]);
495
+ }
496
+
497
+ return this;
498
+ }
499
+
500
+ });
501
+
502
+ function compute(el, prop) {
503
+ return parseInt(win.getComputedStyle(el[0], null)[prop], 10) || 0;
504
+ }
505
+
506
+ each(["Width", "Height"], function (v) {
507
+ var lower = v.toLowerCase();
508
+
509
+ fn[lower] = function () {
510
+ return this[0].getBoundingClientRect()[lower];
511
+ };
512
+
513
+ fn["inner" + v] = function () {
514
+ return this[0]["client" + v];
515
+ };
516
+
517
+ fn["outer" + v] = function (margins) {
518
+ return this[0]["offset" + v] + (margins ? compute(this, "margin" + (v === "Width" ? "Left" : "Top")) + compute(this, "margin" + (v === "Width" ? "Right" : "Bottom")) : 0);
519
+ };
520
+ });
521
+
522
+ function registerEvent(node, eventName, callback) {
523
+ var eventCache = getData(node, "_cashEvents") || setData(node, "_cashEvents", {});
524
+ eventCache[eventName] = eventCache[eventName] || [];
525
+ eventCache[eventName].push(callback);
526
+ node.addEventListener(eventName, callback);
527
+ }
528
+
529
+ function removeEvent(node, eventName, callback) {
530
+ var events = getData(node, "_cashEvents"),
531
+ eventCache = events && events[eventName],
532
+ index;
533
+
534
+ if (!eventCache) {
535
+ return;
536
+ }
537
+
538
+ if (callback) {
539
+ node.removeEventListener(eventName, callback);
540
+ index = eventCache.indexOf(callback);
541
+ if (index >= 0) {
542
+ eventCache.splice(index, 1);
543
+ }
544
+ } else {
545
+ each(eventCache, function (event) {
546
+ node.removeEventListener(eventName, event);
547
+ });
548
+ eventCache = [];
549
+ }
550
+ }
551
+
552
+ fn.extend({
553
+ off: function (eventName, callback) {
554
+ return this.each(function (v) {
555
+ return removeEvent(v, eventName, callback);
556
+ });
557
+ },
558
+
559
+ on: function (eventName, delegate, callback, runOnce) {
560
+ // jshint ignore:line
561
+ var originalCallback;
562
+ if (!isString(eventName)) {
563
+ for (var key in eventName) {
564
+ this.on(key, delegate, eventName[key]);
565
+ }
566
+ return this;
567
+ }
568
+
569
+ if (isFunction(delegate)) {
570
+ callback = delegate;
571
+ delegate = null;
572
+ }
573
+
574
+ if (eventName === "ready") {
575
+ onReady(callback);
576
+ return this;
577
+ }
578
+
579
+ if (delegate) {
580
+ originalCallback = callback;
581
+ callback = function (e) {
582
+ var t = e.target;
583
+ while (!matches(t, delegate)) {
584
+ if (t === this || t === null) {
585
+ return t = false;
586
+ }
587
+
588
+ t = t.parentNode;
589
+ }
590
+
591
+ if (t) {
592
+ originalCallback.call(t, e);
593
+ }
594
+ };
595
+ }
596
+
597
+ return this.each(function (v) {
598
+ var finalCallback = callback;
599
+ if (runOnce) {
600
+ finalCallback = function () {
601
+ callback.apply(this, arguments);
602
+ removeEvent(v, eventName, finalCallback);
603
+ };
604
+ }
605
+ registerEvent(v, eventName, finalCallback);
606
+ });
607
+ },
608
+
609
+ one: function (eventName, delegate, callback) {
610
+ return this.on(eventName, delegate, callback, true);
611
+ },
612
+
613
+ ready: onReady,
614
+
615
+ /**
616
+ * Modified
617
+ * Triggers browser event
618
+ * @param String eventName
619
+ * @param Object data - Add properties to event object
620
+ */
621
+ trigger: function (eventName, data) {
622
+ if (document.createEvent) {
623
+ var evt = document.createEvent('HTMLEvents');
624
+ evt.initEvent(eventName, true, false);
625
+ evt = this.extend(evt, data);
626
+ return this.each(function (v) {
627
+ return v.dispatchEvent(evt);
628
+ });
629
+ }
630
+ }
631
+
632
+ });
633
+
634
+ function encode(name, value) {
635
+ return "&" + encodeURIComponent(name) + "=" + encodeURIComponent(value).replace(/%20/g, "+");
636
+ }
637
+
638
+ function getSelectMultiple_(el) {
639
+ var values = [];
640
+ each(el.options, function (o) {
641
+ if (o.selected) {
642
+ values.push(o.value);
643
+ }
644
+ });
645
+ return values.length ? values : null;
646
+ }
647
+
648
+ function getSelectSingle_(el) {
649
+ var selectedIndex = el.selectedIndex;
650
+ return selectedIndex >= 0 ? el.options[selectedIndex].value : null;
651
+ }
652
+
653
+ function getValue(el) {
654
+ var type = el.type;
655
+ if (!type) {
656
+ return null;
657
+ }
658
+ switch (type.toLowerCase()) {
659
+ case "select-one":
660
+ return getSelectSingle_(el);
661
+ case "select-multiple":
662
+ return getSelectMultiple_(el);
663
+ case "radio":
664
+ return el.checked ? el.value : null;
665
+ case "checkbox":
666
+ return el.checked ? el.value : null;
667
+ default:
668
+ return el.value ? el.value : null;
669
+ }
670
+ }
671
+
672
+ fn.extend({
673
+ serialize: function () {
674
+ var query = "";
675
+
676
+ each(this[0].elements || this, function (el) {
677
+ if (el.disabled || el.tagName === "FIELDSET") {
678
+ return;
679
+ }
680
+ var name = el.name;
681
+ switch (el.type.toLowerCase()) {
682
+ case "file":
683
+ case "reset":
684
+ case "submit":
685
+ case "button":
686
+ break;
687
+ case "select-multiple":
688
+ var values = getValue(el);
689
+ if (values !== null) {
690
+ each(values, function (value) {
691
+ query += encode(name, value);
692
+ });
693
+ }
694
+ break;
695
+ default:
696
+ var value = getValue(el);
697
+ if (value !== null) {
698
+ query += encode(name, value);
699
+ }
700
+ }
701
+ });
702
+
703
+ return query.substr(1);
704
+ },
705
+
706
+ val: function (value) {
707
+ if (value === undefined) {
708
+ return getValue(this[0]);
709
+ }
710
+
711
+ return this.each(function (v) {
712
+ return v.value = value;
713
+ });
714
+ }
715
+
716
+ });
717
+
718
+ function insertElement(el, child, prepend) {
719
+ if (prepend) {
720
+ var first = el.childNodes[0];
721
+ el.insertBefore(child, first);
722
+ } else {
723
+ el.appendChild(child);
724
+ }
725
+ }
726
+
727
+ function insertContent(parent, child, prepend) {
728
+ var str = isString(child);
729
+
730
+ if (!str && child.length) {
731
+ each(child, function (v) {
732
+ return insertContent(parent, v, prepend);
733
+ });
734
+ return;
735
+ }
736
+
737
+ each(parent, str ? function (v) {
738
+ return v.insertAdjacentHTML(prepend ? "afterbegin" : "beforeend", child);
739
+ } : function (v, i) {
740
+ return insertElement(v, i === 0 ? child : child.cloneNode(true), prepend);
741
+ });
742
+ }
743
+
744
+ fn.extend({
745
+ after: function (selector) {
746
+ cash(selector).insertAfter(this);
747
+ return this;
748
+ },
749
+
750
+ append: function (content) {
751
+ insertContent(this, content);
752
+ return this;
753
+ },
754
+
755
+ appendTo: function (parent) {
756
+ insertContent(cash(parent), this);
757
+ return this;
758
+ },
759
+
760
+ before: function (selector) {
761
+ cash(selector).insertBefore(this);
762
+ return this;
763
+ },
764
+
765
+ clone: function () {
766
+ return cash(this.map(function (v) {
767
+ return v.cloneNode(true);
768
+ }));
769
+ },
770
+
771
+ empty: function () {
772
+ this.html("");
773
+ return this;
774
+ },
775
+
776
+ html: function (content) {
777
+ if (content === undefined) {
778
+ return this[0].innerHTML;
779
+ }
780
+ var source = content.nodeType ? content[0].outerHTML : content;
781
+ return this.each(function (v) {
782
+ return v.innerHTML = source;
783
+ });
784
+ },
785
+
786
+ insertAfter: function (selector) {
787
+ var _this = this;
788
+
789
+ cash(selector).each(function (el, i) {
790
+ var parent = el.parentNode,
791
+ sibling = el.nextSibling;
792
+ _this.each(function (v) {
793
+ parent.insertBefore(i === 0 ? v : v.cloneNode(true), sibling);
794
+ });
795
+ });
796
+
797
+ return this;
798
+ },
799
+
800
+ insertBefore: function (selector) {
801
+ var _this2 = this;
802
+ cash(selector).each(function (el, i) {
803
+ var parent = el.parentNode;
804
+ _this2.each(function (v) {
805
+ parent.insertBefore(i === 0 ? v : v.cloneNode(true), el);
806
+ });
807
+ });
808
+ return this;
809
+ },
810
+
811
+ prepend: function (content) {
812
+ insertContent(this, content, true);
813
+ return this;
814
+ },
815
+
816
+ prependTo: function (parent) {
817
+ insertContent(cash(parent), this, true);
818
+ return this;
819
+ },
820
+
821
+ remove: function () {
822
+ return this.each(function (v) {
823
+ if (!!v.parentNode) {
824
+ return v.parentNode.removeChild(v);
825
+ }
826
+ });
827
+ },
828
+
829
+ text: function (content) {
830
+ if (content === undefined) {
831
+ return this[0].textContent;
832
+ }
833
+ return this.each(function (v) {
834
+ return v.textContent = content;
835
+ });
836
+ }
837
+
838
+ });
839
+
840
+ var docEl = doc.documentElement;
841
+
842
+ fn.extend({
843
+ position: function () {
844
+ var el = this[0];
845
+ return {
846
+ left: el.offsetLeft,
847
+ top: el.offsetTop
848
+ };
849
+ },
850
+
851
+ offset: function () {
852
+ var rect = this[0].getBoundingClientRect();
853
+ return {
854
+ top: rect.top + win.pageYOffset - docEl.clientTop,
855
+ left: rect.left + win.pageXOffset - docEl.clientLeft
856
+ };
857
+ },
858
+
859
+ offsetParent: function () {
860
+ return cash(this[0].offsetParent);
861
+ }
862
+
863
+ });
864
+
865
+ fn.extend({
866
+ children: function (selector) {
867
+ var elems = [];
868
+ this.each(function (el) {
869
+ push.apply(elems, el.children);
870
+ });
871
+ elems = unique(elems);
872
+
873
+ return !selector ? elems : elems.filter(function (v) {
874
+ return matches(v, selector);
875
+ });
876
+ },
877
+
878
+ closest: function (selector) {
879
+ if (!selector || this.length < 1) {
880
+ return cash();
881
+ }
882
+ if (this.is(selector)) {
883
+ return this.filter(selector);
884
+ }
885
+ return this.parent().closest(selector);
886
+ },
887
+
888
+ is: function (selector) {
889
+ if (!selector) {
890
+ return false;
891
+ }
892
+
893
+ var match = false,
894
+ comparator = getCompareFunction(selector);
895
+
896
+ this.each(function (el) {
897
+ match = comparator(el, selector);
898
+ return !match;
899
+ });
900
+
901
+ return match;
902
+ },
903
+
904
+ find: function (selector) {
905
+ if (!selector || selector.nodeType) {
906
+ return cash(selector && this.has(selector).length ? selector : null);
907
+ }
908
+
909
+ var elems = [];
910
+ this.each(function (el) {
911
+ push.apply(elems, find(selector, el));
912
+ });
913
+
914
+ return unique(elems);
915
+ },
916
+
917
+ has: function (selector) {
918
+ var comparator = isString(selector) ? function (el) {
919
+ return find(selector, el).length !== 0;
920
+ } : function (el) {
921
+ return el.contains(selector);
922
+ };
923
+
924
+ return this.filter(comparator);
925
+ },
926
+
927
+ next: function () {
928
+ return cash(this[0].nextElementSibling);
929
+ },
930
+
931
+ not: function (selector) {
932
+ if (!selector) {
933
+ return this;
934
+ }
935
+
936
+ var comparator = getCompareFunction(selector);
937
+
938
+ return this.filter(function (el) {
939
+ return !comparator(el, selector);
940
+ });
941
+ },
942
+
943
+ parent: function () {
944
+ var result = [];
945
+
946
+ this.each(function (item) {
947
+ if (item && item.parentNode) {
948
+ result.push(item.parentNode);
949
+ }
950
+ });
951
+
952
+ return unique(result);
953
+ },
954
+
955
+ parents: function (selector) {
956
+ var last,
957
+ result = [];
958
+
959
+ this.each(function (item) {
960
+ last = item;
961
+
962
+ while (last && last.parentNode && last !== doc.body.parentNode) {
963
+ last = last.parentNode;
964
+
965
+ if (!selector || selector && matches(last, selector)) {
966
+ result.push(last);
967
+ }
968
+ }
969
+ });
970
+
971
+ return unique(result);
972
+ },
973
+
974
+ prev: function () {
975
+ return cash(this[0].previousElementSibling);
976
+ },
977
+
978
+ siblings: function (selector) {
979
+ var collection = this.parent().children(selector),
980
+ el = this[0];
981
+
982
+ return collection.filter(function (i) {
983
+ return i !== el;
984
+ });
985
+ }
986
+
987
+ });
988
+
989
+ return cash;
990
+ });
991
+ ;
992
+ var Component = function () {
993
+ /**
994
+ * Generic constructor for all components
995
+ * @constructor
996
+ * @param {Element} el
997
+ * @param {Object} options
998
+ */
999
+ function Component(classDef, el, options) {
1000
+ _classCallCheck(this, Component);
1001
+
1002
+ // Display error if el is valid HTML Element
1003
+ if (!(el instanceof Element)) {
1004
+ console.error(Error(el + ' is not an HTML Element'));
1005
+ }
1006
+
1007
+ // If exists, destroy and reinitialize in child
1008
+ var ins = classDef.getInstance(el);
1009
+ if (!!ins) {
1010
+ ins.destroy();
1011
+ }
1012
+
1013
+ this.el = el;
1014
+ this.$el = cash(el);
1015
+ }
1016
+
1017
+ /**
1018
+ * Initializes components
1019
+ * @param {class} classDef
1020
+ * @param {Element | NodeList | jQuery} els
1021
+ * @param {Object} options
1022
+ */
1023
+
1024
+
1025
+ _createClass(Component, null, [{
1026
+ key: "init",
1027
+ value: function init(classDef, els, options) {
1028
+ var instances = null;
1029
+ if (els instanceof Element) {
1030
+ instances = new classDef(els, options);
1031
+ } else if (!!els && (els.jquery || els.cash || els instanceof NodeList)) {
1032
+ var instancesArr = [];
1033
+ for (var i = 0; i < els.length; i++) {
1034
+ instancesArr.push(new classDef(els[i], options));
1035
+ }
1036
+ instances = instancesArr;
1037
+ }
1038
+
1039
+ return instances;
1040
+ }
1041
+ }]);
1042
+
1043
+ return Component;
1044
+ }();