jekyll-theme-mozg 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (362) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +21 -0
  3. data/README.md +104 -0
  4. data/_includes/mode_switcher.html +5 -0
  5. data/_includes/post_list.html +51 -0
  6. data/_includes/post_list_item.html +26 -0
  7. data/_includes/site-categories.html +7 -0
  8. data/_includes/site-tags.html +7 -0
  9. data/_includes/snippet-disqus.html +25 -0
  10. data/_includes/snippet-facebook-like-button.html +8 -0
  11. data/_includes/snippet-facebook-page-plugin.html +15 -0
  12. data/_includes/snippet-facebook-send-button.html +5 -0
  13. data/_includes/snippet-facebook-setup-SDK.html +9 -0
  14. data/_includes/snippet-github.html +1 -0
  15. data/_includes/snippet-google-ads.html +9 -0
  16. data/_includes/snippet-google-analytics.html +12 -0
  17. data/_includes/snippet-google-custom-search.html +15 -0
  18. data/_includes/snippet-google-hangout-button.html +7 -0
  19. data/_includes/snippet-google-map.html +1 -0
  20. data/_includes/snippet-google-plus-button.html +7 -0
  21. data/_includes/snippet-google-setup-SDK.html +6 -0
  22. data/_includes/snippet-google-tag-manager.html +24 -0
  23. data/_includes/snippet-jekyll-search.html +17 -0
  24. data/_includes/snippet-linkedin-share.html +5 -0
  25. data/_includes/snippet-pagseguro-button-comprar.html +7 -0
  26. data/_includes/snippet-pagseguro-button-doar.html +8 -0
  27. data/_includes/snippet-post-date.html +19 -0
  28. data/_includes/snippet-sidebar-menu.html +75 -0
  29. data/_includes/snippet-social-plugins.html +27 -0
  30. data/_includes/snippet-top-menu-1.html +56 -0
  31. data/_includes/snippet-top-menu-2.html +27 -0
  32. data/_includes/snippet-twitter-follow-button.html +2 -0
  33. data/_includes/snippet-twitter-setup-SDK.html +20 -0
  34. data/_includes/snippet-twitter-tweet-button.html +2 -0
  35. data/_includes/snippet-twitter.html +19 -0
  36. data/_includes/tags_footer.html +19 -0
  37. data/_includes/tags_head.html +53 -0
  38. data/_layouts/compress.html +10 -0
  39. data/_layouts/default.html +203 -0
  40. data/_layouts/page.html +40 -0
  41. data/_layouts/post.html +24 -0
  42. data/_sass/jekyll-theme-mozg.scss +6 -0
  43. data/_sass/jekyll-theme-primer.scss +8 -0
  44. data/_sass/rouge.scss +209 -0
  45. data/assets/css/bootstrap.css +2 -0
  46. data/assets/css/bootstrap/Gruntfile.js +511 -0
  47. data/assets/css/bootstrap/LICENSE +21 -0
  48. data/assets/css/bootstrap/dist/css/bootstrap-theme.css +587 -0
  49. data/assets/css/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
  50. data/assets/css/bootstrap/dist/css/bootstrap-theme.min.css +6 -0
  51. data/assets/css/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
  52. data/assets/css/bootstrap/dist/css/bootstrap.css +6757 -0
  53. data/assets/css/bootstrap/dist/css/bootstrap.css.map +1 -0
  54. data/assets/css/bootstrap/dist/css/bootstrap.min.css +6 -0
  55. data/assets/css/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  56. data/assets/css/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  57. data/assets/css/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
  58. data/assets/css/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  59. data/assets/css/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  60. data/assets/css/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  61. data/assets/css/bootstrap/dist/js/bootstrap.js +2377 -0
  62. data/assets/css/bootstrap/dist/js/bootstrap.min.js +7 -0
  63. data/assets/css/bootstrap/dist/js/npm.js +13 -0
  64. data/assets/css/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  65. data/assets/css/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
  66. data/assets/css/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  67. data/assets/css/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  68. data/assets/css/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  69. data/assets/css/bootstrap/grunt/.jshintrc +7 -0
  70. data/assets/css/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  71. data/assets/css/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
  72. data/assets/css/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
  73. data/assets/css/bootstrap/grunt/bs-raw-files-generator.js +44 -0
  74. data/assets/css/bootstrap/grunt/change-version.js +109 -0
  75. data/assets/css/bootstrap/grunt/configBridge.json +46 -0
  76. data/assets/css/bootstrap/grunt/npm-shrinkwrap.json +2679 -0
  77. data/assets/css/bootstrap/grunt/sauce_browsers.yml +82 -0
  78. data/assets/css/bootstrap/js/affix.js +162 -0
  79. data/assets/css/bootstrap/js/alert.js +94 -0
  80. data/assets/css/bootstrap/js/button.js +125 -0
  81. data/assets/css/bootstrap/js/carousel.js +237 -0
  82. data/assets/css/bootstrap/js/collapse.js +212 -0
  83. data/assets/css/bootstrap/js/dropdown.js +165 -0
  84. data/assets/css/bootstrap/js/modal.js +339 -0
  85. data/assets/css/bootstrap/js/popover.js +108 -0
  86. data/assets/css/bootstrap/js/scrollspy.js +172 -0
  87. data/assets/css/bootstrap/js/tab.js +155 -0
  88. data/assets/css/bootstrap/js/tooltip.js +520 -0
  89. data/assets/css/bootstrap/js/transition.js +59 -0
  90. data/assets/css/bootstrap/less/alerts.less +73 -0
  91. data/assets/css/bootstrap/less/badges.less +66 -0
  92. data/assets/css/bootstrap/less/bootstrap.less +56 -0
  93. data/assets/css/bootstrap/less/breadcrumbs.less +26 -0
  94. data/assets/css/bootstrap/less/button-groups.less +244 -0
  95. data/assets/css/bootstrap/less/buttons.less +166 -0
  96. data/assets/css/bootstrap/less/carousel.less +270 -0
  97. data/assets/css/bootstrap/less/close.less +34 -0
  98. data/assets/css/bootstrap/less/code.less +69 -0
  99. data/assets/css/bootstrap/less/component-animations.less +33 -0
  100. data/assets/css/bootstrap/less/dropdowns.less +216 -0
  101. data/assets/css/bootstrap/less/forms.less +613 -0
  102. data/assets/css/bootstrap/less/glyphicons.less +305 -0
  103. data/assets/css/bootstrap/less/grid.less +84 -0
  104. data/assets/css/bootstrap/less/input-groups.less +171 -0
  105. data/assets/css/bootstrap/less/jumbotron.less +54 -0
  106. data/assets/css/bootstrap/less/labels.less +64 -0
  107. data/assets/css/bootstrap/less/list-group.less +130 -0
  108. data/assets/css/bootstrap/less/media.less +66 -0
  109. data/assets/css/bootstrap/less/mixins.less +40 -0
  110. data/assets/css/bootstrap/less/mixins/alerts.less +14 -0
  111. data/assets/css/bootstrap/less/mixins/background-variant.less +9 -0
  112. data/assets/css/bootstrap/less/mixins/border-radius.less +18 -0
  113. data/assets/css/bootstrap/less/mixins/buttons.less +65 -0
  114. data/assets/css/bootstrap/less/mixins/center-block.less +7 -0
  115. data/assets/css/bootstrap/less/mixins/clearfix.less +22 -0
  116. data/assets/css/bootstrap/less/mixins/forms.less +85 -0
  117. data/assets/css/bootstrap/less/mixins/gradients.less +59 -0
  118. data/assets/css/bootstrap/less/mixins/grid-framework.less +91 -0
  119. data/assets/css/bootstrap/less/mixins/grid.less +122 -0
  120. data/assets/css/bootstrap/less/mixins/hide-text.less +21 -0
  121. data/assets/css/bootstrap/less/mixins/image.less +33 -0
  122. data/assets/css/bootstrap/less/mixins/labels.less +12 -0
  123. data/assets/css/bootstrap/less/mixins/list-group.less +30 -0
  124. data/assets/css/bootstrap/less/mixins/nav-divider.less +10 -0
  125. data/assets/css/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  126. data/assets/css/bootstrap/less/mixins/opacity.less +8 -0
  127. data/assets/css/bootstrap/less/mixins/pagination.less +24 -0
  128. data/assets/css/bootstrap/less/mixins/panels.less +24 -0
  129. data/assets/css/bootstrap/less/mixins/progress-bar.less +10 -0
  130. data/assets/css/bootstrap/less/mixins/reset-filter.less +8 -0
  131. data/assets/css/bootstrap/less/mixins/reset-text.less +18 -0
  132. data/assets/css/bootstrap/less/mixins/resize.less +6 -0
  133. data/assets/css/bootstrap/less/mixins/responsive-visibility.less +15 -0
  134. data/assets/css/bootstrap/less/mixins/size.less +10 -0
  135. data/assets/css/bootstrap/less/mixins/tab-focus.less +9 -0
  136. data/assets/css/bootstrap/less/mixins/table-row.less +28 -0
  137. data/assets/css/bootstrap/less/mixins/text-emphasis.less +9 -0
  138. data/assets/css/bootstrap/less/mixins/text-overflow.less +8 -0
  139. data/assets/css/bootstrap/less/mixins/vendor-prefixes.less +227 -0
  140. data/assets/css/bootstrap/less/modals.less +150 -0
  141. data/assets/css/bootstrap/less/navbar.less +660 -0
  142. data/assets/css/bootstrap/less/navs.less +242 -0
  143. data/assets/css/bootstrap/less/normalize.less +424 -0
  144. data/assets/css/bootstrap/less/pager.less +54 -0
  145. data/assets/css/bootstrap/less/pagination.less +89 -0
  146. data/assets/css/bootstrap/less/panels.less +271 -0
  147. data/assets/css/bootstrap/less/popovers.less +131 -0
  148. data/assets/css/bootstrap/less/print.less +101 -0
  149. data/assets/css/bootstrap/less/progress-bars.less +87 -0
  150. data/assets/css/bootstrap/less/responsive-embed.less +35 -0
  151. data/assets/css/bootstrap/less/responsive-utilities.less +194 -0
  152. data/assets/css/bootstrap/less/scaffolding.less +161 -0
  153. data/assets/css/bootstrap/less/tables.less +234 -0
  154. data/assets/css/bootstrap/less/theme.less +291 -0
  155. data/assets/css/bootstrap/less/thumbnails.less +36 -0
  156. data/assets/css/bootstrap/less/tooltip.less +101 -0
  157. data/assets/css/bootstrap/less/type.less +302 -0
  158. data/assets/css/bootstrap/less/utilities.less +55 -0
  159. data/assets/css/bootstrap/less/variables.less +869 -0
  160. data/assets/css/bootstrap/less/wells.less +29 -0
  161. data/assets/css/bootstrap/package.json +144 -0
  162. data/assets/css/style.scss +4 -0
  163. data/assets/css/theme.css +7791 -0
  164. data/assets/fonts/fakt/Fakt-Blond.woff2 +0 -0
  165. data/assets/fonts/fakt/Fakt-BlondItalic.woff2 +0 -0
  166. data/assets/fonts/fakt/Fakt-SemiBold.woff2 +0 -0
  167. data/assets/fonts/theme-website.woff +0 -0
  168. data/assets/images/backgrounds/mascote-cerebrum-3d.png +0 -0
  169. data/assets/images/logos/logo.svg +37 -0
  170. data/assets/images/logos/logo_32_32.png +0 -0
  171. data/assets/images/logos/theme-logo-green.png +0 -0
  172. data/assets/images/logos/theme-logo-white.png +0 -0
  173. data/assets/images/rocket.png +0 -0
  174. data/assets/javascript/anchor-js/.eslintrc +77 -0
  175. data/assets/javascript/anchor-js/.gitattributes +2 -0
  176. data/assets/javascript/anchor-js/.npmignore +4 -0
  177. data/assets/javascript/anchor-js/.travis.yml +6 -0
  178. data/assets/javascript/anchor-js/anchor.js +335 -0
  179. data/assets/javascript/anchor-js/anchor.min.js +6 -0
  180. data/assets/javascript/anchor-js/banner.js +17 -0
  181. data/assets/javascript/anchor-js/docs/anchor.js +335 -0
  182. data/assets/javascript/anchor-js/docs/favicon.ico +0 -0
  183. data/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.eot +0 -0
  184. data/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.svg +11 -0
  185. data/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.ttf +0 -0
  186. data/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.woff +0 -0
  187. data/assets/javascript/anchor-js/docs/fonts/fonts.css +24 -0
  188. data/assets/javascript/anchor-js/docs/grunticon/grunticon.loader.js +3 -0
  189. data/assets/javascript/anchor-js/docs/grunticon/icons.data.png.css +5 -0
  190. data/assets/javascript/anchor-js/docs/grunticon/icons.data.svg.css +5 -0
  191. data/assets/javascript/anchor-js/docs/grunticon/icons.fallback.css +5 -0
  192. data/assets/javascript/anchor-js/docs/grunticon/png/grunticon-link.png +0 -0
  193. data/assets/javascript/anchor-js/docs/img/anchoring-links.png +0 -0
  194. data/assets/javascript/anchor-js/docs/img/anchorjs_logo.png +0 -0
  195. data/assets/javascript/anchor-js/docs/img/anchorlinks2.png +0 -0
  196. data/assets/javascript/anchor-js/docs/img/gh-link.svg +9 -0
  197. data/assets/javascript/anchor-js/docs/img/gh_link.svg +9 -0
  198. data/assets/javascript/anchor-js/docs/img/hyperlink.svg +9 -0
  199. data/assets/javascript/anchor-js/docs/img/link.svg +6 -0
  200. data/assets/javascript/anchor-js/docs/img/mini-logo.png +0 -0
  201. data/assets/javascript/anchor-js/docs/img/primer-md.png +0 -0
  202. data/assets/javascript/anchor-js/docs/scripts.js +12 -0
  203. data/assets/javascript/anchor-js/docs/styles.css +494 -0
  204. data/assets/javascript/jquery-lazy/LICENSE +375 -0
  205. data/assets/javascript/jquery-lazy/bower.json +48 -0
  206. data/assets/javascript/jquery-lazy/gulpfile.js +150 -0
  207. data/assets/javascript/jquery-lazy/jquery.lazy.js +870 -0
  208. data/assets/javascript/jquery-lazy/jquery.lazy.min.js +2 -0
  209. data/assets/javascript/jquery-lazy/jquery.lazy.plugins.js +580 -0
  210. data/assets/javascript/jquery-lazy/jquery.lazy.plugins.min.js +2 -0
  211. data/assets/javascript/jquery-lazy/package.json +125 -0
  212. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.ajax.js +73 -0
  213. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.ajax.min.js +2 -0
  214. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.av.js +115 -0
  215. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.av.min.js +2 -0
  216. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.iframe.js +81 -0
  217. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.iframe.min.js +2 -0
  218. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.noop.js +30 -0
  219. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.noop.min.js +2 -0
  220. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.picture.js +187 -0
  221. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.picture.min.js +2 -0
  222. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.script.js +27 -0
  223. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.script.min.js +2 -0
  224. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.vimeo.js +30 -0
  225. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.vimeo.min.js +2 -0
  226. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.youtube.js +30 -0
  227. data/assets/javascript/jquery-lazy/plugins/jquery.lazy.youtube.min.js +2 -0
  228. data/assets/javascript/jquery/AUTHORS.txt +301 -0
  229. data/assets/javascript/jquery/LICENSE.txt +36 -0
  230. data/assets/javascript/jquery/bower.json +14 -0
  231. data/assets/javascript/jquery/dist/core.js +476 -0
  232. data/assets/javascript/jquery/dist/jquery.js +10253 -0
  233. data/assets/javascript/jquery/dist/jquery.min.js +4 -0
  234. data/assets/javascript/jquery/dist/jquery.min.map +1 -0
  235. data/assets/javascript/jquery/dist/jquery.slim.js +8160 -0
  236. data/assets/javascript/jquery/dist/jquery.slim.min.js +4 -0
  237. data/assets/javascript/jquery/dist/jquery.slim.min.map +1 -0
  238. data/assets/javascript/jquery/external/sizzle/LICENSE.txt +36 -0
  239. data/assets/javascript/jquery/external/sizzle/dist/sizzle.js +2272 -0
  240. data/assets/javascript/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  241. data/assets/javascript/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  242. data/assets/javascript/jquery/package.json +162 -0
  243. data/assets/javascript/jquery/src/.eslintrc.json +5 -0
  244. data/assets/javascript/jquery/src/ajax.js +855 -0
  245. data/assets/javascript/jquery/src/ajax/jsonp.js +102 -0
  246. data/assets/javascript/jquery/src/ajax/load.js +76 -0
  247. data/assets/javascript/jquery/src/ajax/parseXML.js +30 -0
  248. data/assets/javascript/jquery/src/ajax/script.js +77 -0
  249. data/assets/javascript/jquery/src/ajax/var/location.js +5 -0
  250. data/assets/javascript/jquery/src/ajax/var/nonce.js +7 -0
  251. data/assets/javascript/jquery/src/ajax/var/rquery.js +5 -0
  252. data/assets/javascript/jquery/src/ajax/xhr.js +169 -0
  253. data/assets/javascript/jquery/src/attributes.js +13 -0
  254. data/assets/javascript/jquery/src/attributes/attr.js +141 -0
  255. data/assets/javascript/jquery/src/attributes/classes.js +174 -0
  256. data/assets/javascript/jquery/src/attributes/prop.js +143 -0
  257. data/assets/javascript/jquery/src/attributes/support.js +33 -0
  258. data/assets/javascript/jquery/src/attributes/val.js +190 -0
  259. data/assets/javascript/jquery/src/callbacks.js +234 -0
  260. data/assets/javascript/jquery/src/core.js +476 -0
  261. data/assets/javascript/jquery/src/core/DOMEval.js +16 -0
  262. data/assets/javascript/jquery/src/core/access.js +70 -0
  263. data/assets/javascript/jquery/src/core/init.js +128 -0
  264. data/assets/javascript/jquery/src/core/nodeName.js +13 -0
  265. data/assets/javascript/jquery/src/core/parseHTML.js +65 -0
  266. data/assets/javascript/jquery/src/core/ready-no-deferred.js +96 -0
  267. data/assets/javascript/jquery/src/core/ready.js +86 -0
  268. data/assets/javascript/jquery/src/core/readyException.js +13 -0
  269. data/assets/javascript/jquery/src/core/stripAndCollapse.js +14 -0
  270. data/assets/javascript/jquery/src/core/support.js +20 -0
  271. data/assets/javascript/jquery/src/core/var/rsingleTag.js +6 -0
  272. data/assets/javascript/jquery/src/css.js +438 -0
  273. data/assets/javascript/jquery/src/css/addGetHookIf.js +26 -0
  274. data/assets/javascript/jquery/src/css/adjustCSS.js +71 -0
  275. data/assets/javascript/jquery/src/css/curCSS.js +65 -0
  276. data/assets/javascript/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  277. data/assets/javascript/jquery/src/css/showHide.js +105 -0
  278. data/assets/javascript/jquery/src/css/support.js +89 -0
  279. data/assets/javascript/jquery/src/css/var/cssExpand.js +5 -0
  280. data/assets/javascript/jquery/src/css/var/getStyles.js +17 -0
  281. data/assets/javascript/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  282. data/assets/javascript/jquery/src/css/var/rmargin.js +5 -0
  283. data/assets/javascript/jquery/src/css/var/rnumnonpx.js +7 -0
  284. data/assets/javascript/jquery/src/css/var/swap.js +26 -0
  285. data/assets/javascript/jquery/src/data.js +179 -0
  286. data/assets/javascript/jquery/src/data/Data.js +161 -0
  287. data/assets/javascript/jquery/src/data/var/acceptData.js +19 -0
  288. data/assets/javascript/jquery/src/data/var/dataPriv.js +7 -0
  289. data/assets/javascript/jquery/src/data/var/dataUser.js +7 -0
  290. data/assets/javascript/jquery/src/deferred.js +391 -0
  291. data/assets/javascript/jquery/src/deferred/exceptionHook.js +21 -0
  292. data/assets/javascript/jquery/src/deprecated.js +40 -0
  293. data/assets/javascript/jquery/src/dimensions.js +56 -0
  294. data/assets/javascript/jquery/src/effects.js +699 -0
  295. data/assets/javascript/jquery/src/effects/Tween.js +123 -0
  296. data/assets/javascript/jquery/src/effects/animatedSelector.js +15 -0
  297. data/assets/javascript/jquery/src/event.js +746 -0
  298. data/assets/javascript/jquery/src/event/ajax.js +22 -0
  299. data/assets/javascript/jquery/src/event/alias.js +29 -0
  300. data/assets/javascript/jquery/src/event/focusin.js +55 -0
  301. data/assets/javascript/jquery/src/event/support.js +11 -0
  302. data/assets/javascript/jquery/src/event/trigger.js +185 -0
  303. data/assets/javascript/jquery/src/exports/amd.js +26 -0
  304. data/assets/javascript/jquery/src/exports/global.js +34 -0
  305. data/assets/javascript/jquery/src/jquery.js +41 -0
  306. data/assets/javascript/jquery/src/manipulation.js +488 -0
  307. data/assets/javascript/jquery/src/manipulation/_evalUrl.js +23 -0
  308. data/assets/javascript/jquery/src/manipulation/buildFragment.js +104 -0
  309. data/assets/javascript/jquery/src/manipulation/getAll.js +32 -0
  310. data/assets/javascript/jquery/src/manipulation/setGlobalEval.js +22 -0
  311. data/assets/javascript/jquery/src/manipulation/support.js +35 -0
  312. data/assets/javascript/jquery/src/manipulation/var/rcheckableType.js +5 -0
  313. data/assets/javascript/jquery/src/manipulation/var/rscriptType.js +5 -0
  314. data/assets/javascript/jquery/src/manipulation/var/rtagName.js +5 -0
  315. data/assets/javascript/jquery/src/manipulation/wrapMap.js +29 -0
  316. data/assets/javascript/jquery/src/offset.js +229 -0
  317. data/assets/javascript/jquery/src/queue.js +145 -0
  318. data/assets/javascript/jquery/src/queue/delay.js +24 -0
  319. data/assets/javascript/jquery/src/selector-native.js +237 -0
  320. data/assets/javascript/jquery/src/selector-sizzle.js +19 -0
  321. data/assets/javascript/jquery/src/selector.js +3 -0
  322. data/assets/javascript/jquery/src/serialize.js +130 -0
  323. data/assets/javascript/jquery/src/traversing.js +191 -0
  324. data/assets/javascript/jquery/src/traversing/findFilter.js +106 -0
  325. data/assets/javascript/jquery/src/traversing/var/dir.js +22 -0
  326. data/assets/javascript/jquery/src/traversing/var/rneedsContext.js +8 -0
  327. data/assets/javascript/jquery/src/traversing/var/siblings.js +17 -0
  328. data/assets/javascript/jquery/src/var/ObjectFunctionString.js +7 -0
  329. data/assets/javascript/jquery/src/var/arr.js +5 -0
  330. data/assets/javascript/jquery/src/var/class2type.js +6 -0
  331. data/assets/javascript/jquery/src/var/concat.js +7 -0
  332. data/assets/javascript/jquery/src/var/document.js +5 -0
  333. data/assets/javascript/jquery/src/var/documentElement.js +7 -0
  334. data/assets/javascript/jquery/src/var/fnToString.js +7 -0
  335. data/assets/javascript/jquery/src/var/getProto.js +5 -0
  336. data/assets/javascript/jquery/src/var/hasOwn.js +7 -0
  337. data/assets/javascript/jquery/src/var/indexOf.js +7 -0
  338. data/assets/javascript/jquery/src/var/pnum.js +5 -0
  339. data/assets/javascript/jquery/src/var/push.js +7 -0
  340. data/assets/javascript/jquery/src/var/rcssNum.js +9 -0
  341. data/assets/javascript/jquery/src/var/rnothtmlwhite.js +8 -0
  342. data/assets/javascript/jquery/src/var/slice.js +7 -0
  343. data/assets/javascript/jquery/src/var/support.js +6 -0
  344. data/assets/javascript/jquery/src/var/toString.js +7 -0
  345. data/assets/javascript/jquery/src/wrap.js +77 -0
  346. data/assets/javascript/velocity-animate/package.json +104 -0
  347. data/assets/javascript/velocity-animate/velocity.js +4768 -0
  348. data/assets/javascript/velocity-animate/velocity.min.js +4 -0
  349. data/assets/javascript/velocity-animate/velocity.ui.js +804 -0
  350. data/assets/javascript/velocity-animate/velocity.ui.min.js +1 -0
  351. data/assets/js/0-bootstrap.min.js +7 -0
  352. data/assets/js/0-jquery.ba-postmessage.min.js +20 -0
  353. data/assets/js/0-jquery.lazy.min.js +2 -0
  354. data/assets/js/0-velocity.js +4 -0
  355. data/assets/js/application.js +103 -0
  356. data/assets/js/internal/listAndPagi.js +38 -0
  357. data/assets/js/internal/pagination.js +11 -0
  358. data/assets/js/internal/search.js +65 -0
  359. data/assets/js/internal/utils.js +128 -0
  360. data/assets/js/jquery.js +5 -0
  361. data/assets/js/web/libs/lunr.js/0.6.0/lunr.min.js +7 -0
  362. metadata +461 -0
@@ -0,0 +1,870 @@
1
+ /*!
2
+ * jQuery & Zepto Lazy - v1.7.7
3
+ * http://jquery.eisbehr.de/lazy/
4
+ *
5
+ * Copyright 2012 - 2017, Daniel 'Eisbehr' Kern
6
+ *
7
+ * Dual licensed under the MIT and GPL-2.0 licenses:
8
+ * http://www.opensource.org/licenses/mit-license.php
9
+ * http://www.gnu.org/licenses/gpl-2.0.html
10
+ *
11
+ * $("img.lazy").lazy();
12
+ */
13
+
14
+ ;(function(window, undefined) {
15
+ "use strict";
16
+
17
+ // noinspection JSUnresolvedVariable
18
+ /**
19
+ * library instance - here and not in construct to be shorter in minimization
20
+ * @return void
21
+ */
22
+ var $ = window.jQuery || window.Zepto,
23
+
24
+ /**
25
+ * unique plugin instance id counter
26
+ * @type {number}
27
+ */
28
+ lazyInstanceId = 0,
29
+
30
+ /**
31
+ * helper to register window load for jQuery 3
32
+ * @type {boolean}
33
+ */
34
+ windowLoaded = false;
35
+
36
+ /**
37
+ * make lazy available to jquery - and make it a bit more case-insensitive :)
38
+ * @access public
39
+ * @type {function}
40
+ * @param {object} settings
41
+ * @return void
42
+ */
43
+ $.fn.Lazy = $.fn.lazy = function(settings) {
44
+ return new LazyPlugin(this, settings);
45
+ };
46
+
47
+ /**
48
+ * helper to add plugins to lazy prototype configuration
49
+ * @access public
50
+ * @type {function}
51
+ * @param {string|Array} names
52
+ * @param {string|Array} [elements]
53
+ * @param {function} loader
54
+ * @return void
55
+ */
56
+ $.Lazy = $.lazy = function(names, elements, loader) {
57
+ // make second parameter optional
58
+ if( $.isFunction(elements) ) {
59
+ loader = elements;
60
+ elements = [];
61
+ }
62
+
63
+ // exit here if parameter is not a callable function
64
+ if( !$.isFunction(loader) ) {
65
+ return;
66
+ }
67
+
68
+ // make parameters an array of names to be sure
69
+ names = $.isArray(names) ? names : [names];
70
+ elements = $.isArray(elements) ? elements : [elements];
71
+
72
+ var config = LazyPlugin.prototype.config,
73
+ forced = config._f || (config._f = {});
74
+
75
+ // add the loader plugin for every name
76
+ for( var i = 0, l = names.length; i < l; i++ ) {
77
+ if( config[names[i]] === undefined || $.isFunction(config[names[i]]) ) {
78
+ config[names[i]] = loader;
79
+ }
80
+ }
81
+
82
+ // add forced elements loader
83
+ for( var c = 0, a = elements.length; c < a; c++ ) {
84
+ forced[elements[c]] = names[0];
85
+ }
86
+ };
87
+
88
+ /**
89
+ * contains all logic and the whole element handling
90
+ * is packed in a private function outside class to reduce memory usage, because it will not be created on every plugin instance
91
+ * @access private
92
+ * @type {function}
93
+ * @param {LazyPlugin} instance
94
+ * @param {object} config
95
+ * @param {object|Array} items
96
+ * @param {object} events
97
+ * @param {string} namespace
98
+ * @return void
99
+ */
100
+ function _executeLazy(instance, config, items, events, namespace) {
101
+ /**
102
+ * a helper to trigger the 'onFinishedAll' callback after all other events
103
+ * @access private
104
+ * @type {number}
105
+ */
106
+ var _awaitingAfterLoad = 0,
107
+
108
+ /**
109
+ * visible content width
110
+ * @access private
111
+ * @type {number}
112
+ */
113
+ _actualWidth = -1,
114
+
115
+ /**
116
+ * visible content height
117
+ * @access private
118
+ * @type {number}
119
+ */
120
+ _actualHeight = -1,
121
+
122
+ /**
123
+ * determine possibly detected high pixel density
124
+ * @access private
125
+ * @type {boolean}
126
+ */
127
+ _isRetinaDisplay = false,
128
+
129
+ /**
130
+ * dictionary entry for better minimization
131
+ * @access private
132
+ * @type {string}
133
+ */
134
+ _afterLoad = "afterLoad",
135
+
136
+ /**
137
+ * dictionary entry for better minimization
138
+ * @access private
139
+ * @type {string}
140
+ */
141
+ _load = "load",
142
+
143
+ /**
144
+ * dictionary entry for better minimization
145
+ * @access private
146
+ * @type {string}
147
+ */
148
+ _error = "error",
149
+
150
+ /**
151
+ * dictionary entry for better minimization
152
+ * @access private
153
+ * @type {string}
154
+ */
155
+ _img = "img",
156
+
157
+ /**
158
+ * dictionary entry for better minimization
159
+ * @access private
160
+ * @type {string}
161
+ */
162
+ _src = "src",
163
+
164
+ /**
165
+ * dictionary entry for better minimization
166
+ * @access private
167
+ * @type {string}
168
+ */
169
+ _srcset = "srcset",
170
+
171
+ /**
172
+ * dictionary entry for better minimization
173
+ * @access private
174
+ * @type {string}
175
+ */
176
+ _sizes = "sizes",
177
+
178
+ /**
179
+ * dictionary entry for better minimization
180
+ * @access private
181
+ * @type {string}
182
+ */
183
+ _backgroundImage = "background-image";
184
+
185
+ /**
186
+ * initialize plugin
187
+ * bind loading to events or set delay time to load all items at once
188
+ * @access private
189
+ * @return void
190
+ */
191
+ function _initialize() {
192
+ // detect actual device pixel ratio
193
+ // noinspection JSUnresolvedVariable
194
+ _isRetinaDisplay = window.devicePixelRatio > 1;
195
+
196
+ // prepare all initial items
197
+ items = _prepareItems(items);
198
+
199
+ // if delay time is set load all items at once after delay time
200
+ if( config.delay >= 0 ) {
201
+ setTimeout(function() {
202
+ _lazyLoadItems(true);
203
+ }, config.delay);
204
+ }
205
+
206
+ // if no delay is set or combine usage is active bind events
207
+ if( config.delay < 0 || config.combined ) {
208
+ // create unique event function
209
+ events.e = _throttle(config.throttle, function(event) {
210
+ // reset detected window size on resize event
211
+ if( event.type === "resize" ) {
212
+ _actualWidth = _actualHeight = -1;
213
+ }
214
+
215
+ // execute 'lazy magic'
216
+ _lazyLoadItems(event.all);
217
+ });
218
+
219
+ // create function to add new items to instance
220
+ events.a = function(additionalItems) {
221
+ additionalItems = _prepareItems(additionalItems);
222
+ items.push.apply(items, additionalItems);
223
+ };
224
+
225
+ // create function to get all instance items left
226
+ events.g = function() {
227
+ // filter loaded items before return in case internal filter was not running until now
228
+ return (items = $(items).filter(function() {
229
+ return !$(this).data(config.loadedName);
230
+ }));
231
+ };
232
+
233
+ // create function to force loading elements
234
+ events.f = function(forcedItems) {
235
+ for( var i = 0; i < forcedItems.length; i++ ) {
236
+ // only handle item if available in current instance
237
+ // use a compare function, because Zepto can't handle object parameter for filter
238
+ // var item = items.filter(forcedItems[i]);
239
+ /* jshint loopfunc: true */
240
+ var item = items.filter(function() {
241
+ return this === forcedItems[i];
242
+ });
243
+
244
+ if( item.length ) {
245
+ _lazyLoadItems(false, item);
246
+ }
247
+ }
248
+ };
249
+
250
+ // load initial items
251
+ _lazyLoadItems();
252
+
253
+ // bind lazy load functions to scroll and resize event
254
+ // noinspection JSUnresolvedVariable
255
+ $(config.appendScroll).on("scroll." + namespace + " resize." + namespace, events.e);
256
+ }
257
+ }
258
+
259
+ /**
260
+ * prepare items before handle them
261
+ * @access private
262
+ * @param {Array|object|jQuery} items
263
+ * @return {Array|object|jQuery}
264
+ */
265
+ function _prepareItems(items) {
266
+ // fetch used configurations before loops
267
+ var defaultImage = config.defaultImage,
268
+ placeholder = config.placeholder,
269
+ imageBase = config.imageBase,
270
+ srcsetAttribute = config.srcsetAttribute,
271
+ loaderAttribute = config.loaderAttribute,
272
+ forcedTags = config._f || {};
273
+
274
+ // filter items and only add those who not handled yet and got needed attributes available
275
+ items = $(items).filter(function() {
276
+ var element = $(this),
277
+ tag = _getElementTagName(this);
278
+
279
+ return !element.data(config.handledName) &&
280
+ (element.attr(config.attribute) || element.attr(srcsetAttribute) || element.attr(loaderAttribute) || forcedTags[tag] !== undefined);
281
+ })
282
+
283
+ // append plugin instance to all elements
284
+ .data("plugin_" + config.name, instance);
285
+
286
+ for( var i = 0, l = items.length; i < l; i++ ) {
287
+ var element = $(items[i]),
288
+ tag = _getElementTagName(items[i]),
289
+ elementImageBase = element.attr(config.imageBaseAttribute) || imageBase;
290
+
291
+ // generate and update source set if an image base is set
292
+ if( tag === _img && elementImageBase && element.attr(srcsetAttribute) ) {
293
+ element.attr(srcsetAttribute, _getCorrectedSrcSet(element.attr(srcsetAttribute), elementImageBase));
294
+ }
295
+
296
+ // add loader to forced element types
297
+ if( forcedTags[tag] !== undefined && !element.attr(loaderAttribute) ) {
298
+ element.attr(loaderAttribute, forcedTags[tag]);
299
+ }
300
+
301
+ // set default image on every element without source
302
+ if( tag === _img && defaultImage && !element.attr(_src) ) {
303
+ element.attr(_src, defaultImage);
304
+ }
305
+
306
+ // set placeholder on every element without background image
307
+ else if( tag !== _img && placeholder && (!element.css(_backgroundImage) || element.css(_backgroundImage) === "none") ) {
308
+ element.css(_backgroundImage, "url('" + placeholder + "')");
309
+ }
310
+ }
311
+
312
+ return items;
313
+ }
314
+
315
+ /**
316
+ * the 'lazy magic' - check all items
317
+ * @access private
318
+ * @param {boolean} [allItems]
319
+ * @param {object} [forced]
320
+ * @return void
321
+ */
322
+ function _lazyLoadItems(allItems, forced) {
323
+ // skip if no items where left
324
+ if( !items.length ) {
325
+ // destroy instance if option is enabled
326
+ if( config.autoDestroy ) {
327
+ // noinspection JSUnresolvedFunction
328
+ instance.destroy();
329
+ }
330
+
331
+ return;
332
+ }
333
+
334
+ var elements = forced || items,
335
+ loadTriggered = false,
336
+ imageBase = config.imageBase || "",
337
+ srcsetAttribute = config.srcsetAttribute,
338
+ handledName = config.handledName;
339
+
340
+ // loop all available items
341
+ for( var i = 0; i < elements.length; i++ ) {
342
+ // item is at least in loadable area
343
+ if( allItems || forced || _isInLoadableArea(elements[i]) ) {
344
+ var element = $(elements[i]),
345
+ tag = _getElementTagName(elements[i]),
346
+ attribute = element.attr(config.attribute),
347
+ elementImageBase = element.attr(config.imageBaseAttribute) || imageBase,
348
+ customLoader = element.attr(config.loaderAttribute);
349
+
350
+ // is not already handled
351
+ if( !element.data(handledName) &&
352
+ // and is visible or visibility doesn't matter
353
+ (!config.visibleOnly || element.is(":visible")) && (
354
+ // and image source or source set attribute is available
355
+ (attribute || element.attr(srcsetAttribute)) && (
356
+ // and is image tag where attribute is not equal source or source set
357
+ (tag === _img && (elementImageBase + attribute !== element.attr(_src) || element.attr(srcsetAttribute) !== element.attr(_srcset))) ||
358
+ // or is non image tag where attribute is not equal background
359
+ (tag !== _img && elementImageBase + attribute !== element.css(_backgroundImage))
360
+ ) ||
361
+ // or custom loader is available
362
+ customLoader ))
363
+ {
364
+ // mark element always as handled as this point to prevent double handling
365
+ loadTriggered = true;
366
+ element.data(handledName, true);
367
+
368
+ // load item
369
+ _handleItem(element, tag, elementImageBase, customLoader);
370
+ }
371
+ }
372
+ }
373
+
374
+ // when something was loaded remove them from remaining items
375
+ if( loadTriggered ) {
376
+ items = $(items).filter(function() {
377
+ return !$(this).data(handledName);
378
+ });
379
+ }
380
+ }
381
+
382
+ /**
383
+ * load the given element the lazy way
384
+ * @access private
385
+ * @param {object} element
386
+ * @param {string} tag
387
+ * @param {string} imageBase
388
+ * @param {function} [customLoader]
389
+ * @return void
390
+ */
391
+ function _handleItem(element, tag, imageBase, customLoader) {
392
+ // increment count of items waiting for after load
393
+ ++_awaitingAfterLoad;
394
+
395
+ // extended error callback for correct 'onFinishedAll' handling
396
+ var errorCallback = function() {
397
+ _triggerCallback("onError", element);
398
+ _reduceAwaiting();
399
+
400
+ // prevent further callback calls
401
+ errorCallback = $.noop;
402
+ };
403
+
404
+ // trigger function before loading image
405
+ _triggerCallback("beforeLoad", element);
406
+
407
+ // fetch all double used data here for better code minimization
408
+ var srcAttribute = config.attribute,
409
+ srcsetAttribute = config.srcsetAttribute,
410
+ sizesAttribute = config.sizesAttribute,
411
+ retinaAttribute = config.retinaAttribute,
412
+ removeAttribute = config.removeAttribute,
413
+ loadedName = config.loadedName,
414
+ elementRetina = element.attr(retinaAttribute);
415
+
416
+ // handle custom loader
417
+ if( customLoader ) {
418
+ // on load callback
419
+ var loadCallback = function() {
420
+ // remove attribute from element
421
+ if( removeAttribute ) {
422
+ element.removeAttr(config.loaderAttribute);
423
+ }
424
+
425
+ // mark element as loaded
426
+ element.data(loadedName, true);
427
+
428
+ // call after load event
429
+ _triggerCallback(_afterLoad, element);
430
+
431
+ // remove item from waiting queue and possibly trigger finished event
432
+ // it's needed to be asynchronous to run after filter was in _lazyLoadItems
433
+ setTimeout(_reduceAwaiting, 1);
434
+
435
+ // prevent further callback calls
436
+ loadCallback = $.noop;
437
+ };
438
+
439
+ // bind error event to trigger callback and reduce waiting amount
440
+ element.off(_error).one(_error, errorCallback)
441
+
442
+ // bind after load callback to element
443
+ .one(_load, loadCallback);
444
+
445
+ // trigger custom loader and handle response
446
+ if( !_triggerCallback(customLoader, element, function(response) {
447
+ if( response ) {
448
+ element.off(_load);
449
+ loadCallback();
450
+ }
451
+ else {
452
+ element.off(_error);
453
+ errorCallback();
454
+ }
455
+ })) element.trigger(_error);
456
+ }
457
+
458
+ // handle images
459
+ else {
460
+ // create image object
461
+ var imageObj = $(new Image());
462
+
463
+ // bind error event to trigger callback and reduce waiting amount
464
+ imageObj.one(_error, errorCallback)
465
+
466
+ // bind after load callback to image
467
+ .one(_load, function() {
468
+ // remove element from view
469
+ element.hide();
470
+
471
+ // set image back to element
472
+ // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'
473
+ if( tag === _img ) {
474
+ element.attr(_sizes, imageObj.attr(_sizes))
475
+ .attr(_srcset, imageObj.attr(_srcset))
476
+ .attr(_src, imageObj.attr(_src));
477
+ }
478
+ else {
479
+ element.css(_backgroundImage, "url('" + imageObj.attr(_src) + "')");
480
+ }
481
+
482
+ // bring it back with some effect!
483
+ element[config.effect](config.effectTime);
484
+
485
+ // remove attribute from element
486
+ if( removeAttribute ) {
487
+ element.removeAttr(srcAttribute + " " + srcsetAttribute + " " + retinaAttribute + " " + config.imageBaseAttribute);
488
+
489
+ // only remove 'sizes' attribute, if it was a custom one
490
+ if( sizesAttribute !== _sizes ) {
491
+ element.removeAttr(sizesAttribute);
492
+ }
493
+ }
494
+
495
+ // mark element as loaded
496
+ element.data(loadedName, true);
497
+
498
+ // call after load event
499
+ _triggerCallback(_afterLoad, element);
500
+
501
+ // cleanup image object
502
+ imageObj.remove();
503
+
504
+ // remove item from waiting queue and possibly trigger finished event
505
+ _reduceAwaiting();
506
+ });
507
+
508
+ // set sources
509
+ // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'
510
+ var imageSrc = (_isRetinaDisplay && elementRetina ? elementRetina : element.attr(srcAttribute)) || "";
511
+ imageObj.attr(_sizes, element.attr(sizesAttribute))
512
+ .attr(_srcset, element.attr(srcsetAttribute))
513
+ .attr(_src, imageSrc ? imageBase + imageSrc : null);
514
+
515
+ // call after load even on cached image
516
+ imageObj.complete && imageObj.trigger(_load); // jshint ignore : line
517
+ }
518
+ }
519
+
520
+ /**
521
+ * check if the given element is inside the current viewport or threshold
522
+ * @access private
523
+ * @param {object} element
524
+ * @return {boolean}
525
+ */
526
+ function _isInLoadableArea(element) {
527
+ var elementBound = element.getBoundingClientRect(),
528
+ direction = config.scrollDirection,
529
+ threshold = config.threshold,
530
+ vertical = // check if element is in loadable area from top
531
+ ((_getActualHeight() + threshold) > elementBound.top) &&
532
+ // check if element is even in loadable are from bottom
533
+ (-threshold < elementBound.bottom),
534
+ horizontal = // check if element is in loadable area from left
535
+ ((_getActualWidth() + threshold) > elementBound.left) &&
536
+ // check if element is even in loadable area from right
537
+ (-threshold < elementBound.right);
538
+
539
+ if( direction === "vertical" ) {
540
+ return vertical;
541
+ }
542
+ else if( direction === "horizontal" ) {
543
+ return horizontal;
544
+ }
545
+
546
+ return vertical && horizontal;
547
+ }
548
+
549
+ /**
550
+ * receive the current viewed width of the browser
551
+ * @access private
552
+ * @return {number}
553
+ */
554
+ function _getActualWidth() {
555
+ return _actualWidth >= 0 ? _actualWidth : (_actualWidth = $(window).width());
556
+ }
557
+
558
+ /**
559
+ * receive the current viewed height of the browser
560
+ * @access private
561
+ * @return {number}
562
+ */
563
+ function _getActualHeight() {
564
+ return _actualHeight >= 0 ? _actualHeight : (_actualHeight = $(window).height());
565
+ }
566
+
567
+ /**
568
+ * get lowercase tag name of an element
569
+ * @access private
570
+ * @param {object} element
571
+ * @returns {string}
572
+ */
573
+ function _getElementTagName(element) {
574
+ return element.tagName.toLowerCase();
575
+ }
576
+
577
+ /**
578
+ * prepend image base to all srcset entries
579
+ * @access private
580
+ * @param {string} srcset
581
+ * @param {string} imageBase
582
+ * @returns {string}
583
+ */
584
+ function _getCorrectedSrcSet(srcset, imageBase) {
585
+ if( imageBase ) {
586
+ // trim, remove unnecessary spaces and split entries
587
+ var entries = srcset.split(",");
588
+ srcset = "";
589
+
590
+ for( var i = 0, l = entries.length; i < l; i++ ) {
591
+ srcset += imageBase + entries[i].trim() + (i !== l - 1 ? "," : "");
592
+ }
593
+ }
594
+
595
+ return srcset;
596
+ }
597
+
598
+ /**
599
+ * helper function to throttle down event triggering
600
+ * @access private
601
+ * @param {number} delay
602
+ * @param {function} callback
603
+ * @return {function}
604
+ */
605
+ function _throttle(delay, callback) {
606
+ var timeout,
607
+ lastExecute = 0;
608
+
609
+ return function(event, ignoreThrottle) {
610
+ var elapsed = +new Date() - lastExecute;
611
+
612
+ function run() {
613
+ lastExecute = +new Date();
614
+ // noinspection JSUnresolvedFunction
615
+ callback.call(instance, event);
616
+ }
617
+
618
+ timeout && clearTimeout(timeout); // jshint ignore : line
619
+
620
+ if( elapsed > delay || !config.enableThrottle || ignoreThrottle ) {
621
+ run();
622
+ }
623
+ else {
624
+ timeout = setTimeout(run, delay - elapsed);
625
+ }
626
+ };
627
+ }
628
+
629
+ /**
630
+ * reduce count of awaiting elements to 'afterLoad' event and fire 'onFinishedAll' if reached zero
631
+ * @access private
632
+ * @return void
633
+ */
634
+ function _reduceAwaiting() {
635
+ --_awaitingAfterLoad;
636
+
637
+ // if no items were left trigger finished event
638
+ if( !items.length && !_awaitingAfterLoad ) {
639
+ _triggerCallback("onFinishedAll");
640
+ }
641
+ }
642
+
643
+ /**
644
+ * single implementation to handle callbacks, pass element and set 'this' to current instance
645
+ * @access private
646
+ * @param {string|function} callback
647
+ * @param {object} [element]
648
+ * @param {*} [args]
649
+ * @return {boolean}
650
+ */
651
+ function _triggerCallback(callback, element, args) {
652
+ if( (callback = config[callback]) ) {
653
+ // jQuery's internal '$(arguments).slice(1)' are causing problems at least on old iPads
654
+ // below is shorthand of 'Array.prototype.slice.call(arguments, 1)'
655
+ callback.apply(instance, [].slice.call(arguments, 1));
656
+ return true;
657
+ }
658
+
659
+ return false;
660
+ }
661
+
662
+ // if event driven or window is already loaded don't wait for page loading
663
+ if( config.bind === "event" || windowLoaded ) {
664
+ _initialize();
665
+ }
666
+
667
+ // otherwise load initial items and start lazy after page load
668
+ else {
669
+ // noinspection JSUnresolvedVariable
670
+ $(window).on(_load + "." + namespace, _initialize);
671
+ }
672
+ }
673
+
674
+ /**
675
+ * lazy plugin class constructor
676
+ * @constructor
677
+ * @access private
678
+ * @param {object} elements
679
+ * @param {object} settings
680
+ * @return {object|LazyPlugin}
681
+ */
682
+ function LazyPlugin(elements, settings) {
683
+ /**
684
+ * this lazy plugin instance
685
+ * @access private
686
+ * @type {object|LazyPlugin|LazyPlugin.prototype}
687
+ */
688
+ var _instance = this,
689
+
690
+ /**
691
+ * this lazy plugin instance configuration
692
+ * @access private
693
+ * @type {object}
694
+ */
695
+ _config = $.extend({}, _instance.config, settings),
696
+
697
+ /**
698
+ * instance generated event executed on container scroll or resize
699
+ * packed in an object to be referenceable and short named because properties will not be minified
700
+ * @access private
701
+ * @type {object}
702
+ */
703
+ _events = {},
704
+
705
+ /**
706
+ * unique namespace for instance related events
707
+ * @access private
708
+ * @type {string}
709
+ */
710
+ _namespace = _config.name + "-" + (++lazyInstanceId);
711
+
712
+ // noinspection JSUndefinedPropertyAssignment
713
+ /**
714
+ * wrapper to get or set an entry from plugin instance configuration
715
+ * much smaller on minify as direct access
716
+ * @access public
717
+ * @type {function}
718
+ * @param {string} entryName
719
+ * @param {*} [value]
720
+ * @return {LazyPlugin|*}
721
+ */
722
+ _instance.config = function(entryName, value) {
723
+ if( value === undefined ) {
724
+ return _config[entryName];
725
+ }
726
+
727
+ _config[entryName] = value;
728
+ return _instance;
729
+ };
730
+
731
+ // noinspection JSUndefinedPropertyAssignment
732
+ /**
733
+ * add additional items to current instance
734
+ * @access public
735
+ * @param {Array|object|string} items
736
+ * @return {LazyPlugin}
737
+ */
738
+ _instance.addItems = function(items) {
739
+ _events.a && _events.a($.type(items) === "string" ? $(items) : items); // jshint ignore : line
740
+ return _instance;
741
+ };
742
+
743
+ // noinspection JSUndefinedPropertyAssignment
744
+ /**
745
+ * get all left items of this instance
746
+ * @access public
747
+ * @returns {object}
748
+ */
749
+ _instance.getItems = function() {
750
+ return _events.g ? _events.g() : {};
751
+ };
752
+
753
+ // noinspection JSUndefinedPropertyAssignment
754
+ /**
755
+ * force lazy to load all items in loadable area right now
756
+ * by default without throttle
757
+ * @access public
758
+ * @type {function}
759
+ * @param {boolean} [useThrottle]
760
+ * @return {LazyPlugin}
761
+ */
762
+ _instance.update = function(useThrottle) {
763
+ _events.e && _events.e({}, !useThrottle); // jshint ignore : line
764
+ return _instance;
765
+ };
766
+
767
+ // noinspection JSUndefinedPropertyAssignment
768
+ /**
769
+ * force element(s) to load directly, ignoring the viewport
770
+ * @access public
771
+ * @param {Array|object|string} items
772
+ * @return {LazyPlugin}
773
+ */
774
+ _instance.force = function(items) {
775
+ _events.f && _events.f($.type(items) === "string" ? $(items) : items); // jshint ignore : line
776
+ return _instance;
777
+ };
778
+
779
+ // noinspection JSUndefinedPropertyAssignment
780
+ /**
781
+ * force lazy to load all available items right now
782
+ * this call ignores throttling
783
+ * @access public
784
+ * @type {function}
785
+ * @return {LazyPlugin}
786
+ */
787
+ _instance.loadAll = function() {
788
+ _events.e && _events.e({all: true}, true); // jshint ignore : line
789
+ return _instance;
790
+ };
791
+
792
+ // noinspection JSUndefinedPropertyAssignment
793
+ /**
794
+ * destroy this plugin instance
795
+ * @access public
796
+ * @type {function}
797
+ * @return undefined
798
+ */
799
+ _instance.destroy = function() {
800
+ // unbind instance generated events
801
+ // noinspection JSUnresolvedFunction, JSUnresolvedVariable
802
+ $(_config.appendScroll).off("." + _namespace, _events.e);
803
+ // noinspection JSUnresolvedVariable
804
+ $(window).off("." + _namespace);
805
+
806
+ // clear events
807
+ _events = {};
808
+
809
+ return undefined;
810
+ };
811
+
812
+ // start using lazy and return all elements to be chainable or instance for further use
813
+ // noinspection JSUnresolvedVariable
814
+ _executeLazy(_instance, _config, elements, _events, _namespace);
815
+ return _config.chainable ? elements : _instance;
816
+ }
817
+
818
+ /**
819
+ * settings and configuration data
820
+ * @access public
821
+ * @type {object}
822
+ */
823
+ LazyPlugin.prototype.config = {
824
+ // general
825
+ name : "lazy",
826
+ chainable : true,
827
+ autoDestroy : true,
828
+ bind : "load",
829
+ threshold : 500,
830
+ visibleOnly : false,
831
+ appendScroll : window,
832
+ scrollDirection : "both",
833
+ imageBase : null,
834
+ defaultImage : "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",
835
+ placeholder : null,
836
+ delay : -1,
837
+ combined : false,
838
+
839
+ // attributes
840
+ attribute : "data-src",
841
+ srcsetAttribute : "data-srcset",
842
+ sizesAttribute : "data-sizes",
843
+ retinaAttribute : "data-retina",
844
+ loaderAttribute : "data-loader",
845
+ imageBaseAttribute : "data-imagebase",
846
+ removeAttribute : true,
847
+ handledName : "handled",
848
+ loadedName : "loaded",
849
+
850
+ // effect
851
+ effect : "show",
852
+ effectTime : 0,
853
+
854
+ // throttle
855
+ enableThrottle : true,
856
+ throttle : 250,
857
+
858
+ // callbacks
859
+ beforeLoad : undefined,
860
+ afterLoad : undefined,
861
+ onError : undefined,
862
+ onFinishedAll : undefined
863
+ };
864
+
865
+ // register window load event globally to prevent not loading elements
866
+ // since jQuery 3.X ready state is fully async and may be executed after 'load'
867
+ $(window).on("load", function() {
868
+ windowLoaded = true;
869
+ });
870
+ })(window);