jekyll-theme-mozg 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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);