jekyll-theme-chalk 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (405) hide show
  1. checksums.yaml +7 -0
  2. data/404.html +39 -0
  3. data/LICENSE +21 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +91 -0
  6. data/_assets/fonts/cormorant-garamond/Cormorant-Garamond-700.eot +0 -0
  7. data/_assets/fonts/cormorant-garamond/Cormorant-Garamond-700.ttf +0 -0
  8. data/_assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff +0 -0
  9. data/_assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff2 +0 -0
  10. data/_assets/fonts/ionicons/ionicons.eot +0 -0
  11. data/_assets/fonts/ionicons/ionicons.ttf +0 -0
  12. data/_assets/fonts/ionicons/ionicons.woff +0 -0
  13. data/_assets/fonts/lato/Lato-300.eot +0 -0
  14. data/_assets/fonts/lato/Lato-300.ttf +0 -0
  15. data/_assets/fonts/lato/Lato-300.woff +0 -0
  16. data/_assets/fonts/lato/Lato-300.woff2 +0 -0
  17. data/_assets/fonts/lato/Lato-700.eot +0 -0
  18. data/_assets/fonts/lato/Lato-700.ttf +0 -0
  19. data/_assets/fonts/lato/Lato-700.woff +0 -0
  20. data/_assets/fonts/lato/Lato-700.woff2 +0 -0
  21. data/_assets/fonts/lato/Lato-regular.eot +0 -0
  22. data/_assets/fonts/lato/Lato-regular.ttf +0 -0
  23. data/_assets/fonts/lato/Lato-regular.woff +0 -0
  24. data/_assets/fonts/lato/Lato-regular.woff2 +0 -0
  25. data/_assets/images/about.jpg +0 -0
  26. data/_assets/images/about@2x.jpg +0 -0
  27. data/_assets/images/apple-touch-icon.png +0 -0
  28. data/_assets/images/documentation/chalk-intro.png +0 -0
  29. data/_assets/images/documentation/chalk-intro@2x.png +0 -0
  30. data/_assets/images/documentation/enlarge.gif +0 -0
  31. data/_assets/images/documentation/enlarge@2x.gif +0 -0
  32. data/_assets/images/documentation/sample-image.jpg +0 -0
  33. data/_assets/images/documentation/sample-image@2x.jpg +0 -0
  34. data/_assets/images/og-image.jpg +0 -0
  35. data/_assets/javascripts/application.js +17 -0
  36. data/_assets/javascripts/scrollappear.js +25 -0
  37. data/_assets/javascripts/vendor.js +4 -0
  38. data/_assets/javascripts/webfonts.js +7 -0
  39. data/_assets/stylesheets/.csscomb.json +196 -0
  40. data/_assets/stylesheets/.scss-lint.yml +33 -0
  41. data/_assets/stylesheets/_base.scss +151 -0
  42. data/_assets/stylesheets/_mixins.scss +28 -0
  43. data/_assets/stylesheets/_variables.scss +47 -0
  44. data/_assets/stylesheets/dark.scss +71 -0
  45. data/_assets/stylesheets/fonts.scss +63 -0
  46. data/_assets/stylesheets/layouts/_footer.scss +17 -0
  47. data/_assets/stylesheets/layouts/_grid.scss +102 -0
  48. data/_assets/stylesheets/light.scss +71 -0
  49. data/_assets/stylesheets/modules/_about.scss +10 -0
  50. data/_assets/stylesheets/modules/_articles.scss +213 -0
  51. data/_assets/stylesheets/modules/_embed.scss +31 -0
  52. data/_assets/stylesheets/modules/_header.scss +57 -0
  53. data/_assets/stylesheets/modules/_highlights-dark.scss +415 -0
  54. data/_assets/stylesheets/modules/_highlights-light.scss +409 -0
  55. data/_assets/stylesheets/modules/_icons.scss +83 -0
  56. data/_assets/stylesheets/modules/_scrollappear.scss +14 -0
  57. data/_assets/stylesheets/notfound-dark.scss +91 -0
  58. data/_assets/stylesheets/notfound-light.scss +91 -0
  59. data/_assets/stylesheets/vendor/_normalize.scss +461 -0
  60. data/_assets/yarn/.yarn-integrity +22 -0
  61. data/_assets/yarn/fluidbox/.gitattributes +22 -0
  62. data/_assets/yarn/fluidbox/.npmignore +220 -0
  63. data/_assets/yarn/fluidbox/.travis.yml +6 -0
  64. data/_assets/yarn/fluidbox/Gruntfile.js +8 -0
  65. data/_assets/yarn/fluidbox/LICENSE.md +23 -0
  66. data/_assets/yarn/fluidbox/README.html +750 -0
  67. data/_assets/yarn/fluidbox/README.md +396 -0
  68. data/_assets/yarn/fluidbox/bower.json +35 -0
  69. data/_assets/yarn/fluidbox/demo/css/styles.min.css +2 -0
  70. data/_assets/yarn/fluidbox/demo/css/styles.min.css.map +1 -0
  71. data/_assets/yarn/fluidbox/demo/fonts/BLOKKRegular.eot +0 -0
  72. data/_assets/yarn/fluidbox/demo/fonts/BLOKKRegular.svg +233 -0
  73. data/_assets/yarn/fluidbox/demo/fonts/BLOKKRegular.ttf +0 -0
  74. data/_assets/yarn/fluidbox/demo/fonts/BLOKKRegular.woff +0 -0
  75. data/_assets/yarn/fluidbox/demo/fonts/fontello.eot +0 -0
  76. data/_assets/yarn/fluidbox/demo/fonts/fontello.svg +13 -0
  77. data/_assets/yarn/fluidbox/demo/fonts/fontello.ttf +0 -0
  78. data/_assets/yarn/fluidbox/demo/fonts/fontello.woff +0 -0
  79. data/_assets/yarn/fluidbox/demo/index.html +758 -0
  80. data/_assets/yarn/fluidbox/demo/src/css/styles.scss +1131 -0
  81. data/_assets/yarn/fluidbox/dist/css/fluidbox.min.css +2 -0
  82. data/_assets/yarn/fluidbox/dist/css/fluidbox.min.css.map +1 -0
  83. data/_assets/yarn/fluidbox/dist/js/jquery.fluidbox.min.js +1 -0
  84. data/_assets/yarn/fluidbox/grunt/aliases.yaml +20 -0
  85. data/_assets/yarn/fluidbox/grunt/clean.js +5 -0
  86. data/_assets/yarn/fluidbox/grunt/concurrent.js +33 -0
  87. data/_assets/yarn/fluidbox/grunt/jshint.js +10 -0
  88. data/_assets/yarn/fluidbox/grunt/postcss.js +47 -0
  89. data/_assets/yarn/fluidbox/grunt/sass.js +42 -0
  90. data/_assets/yarn/fluidbox/grunt/uglify.js +7 -0
  91. data/_assets/yarn/fluidbox/grunt/watch.js +28 -0
  92. data/_assets/yarn/fluidbox/index.html +8 -0
  93. data/_assets/yarn/fluidbox/license.txt +21 -0
  94. data/_assets/yarn/fluidbox/package.json +61 -0
  95. data/_assets/yarn/fluidbox/src/css/_fluidbox.scss +95 -0
  96. data/_assets/yarn/fluidbox/src/css/fluidbox.scss +2 -0
  97. data/_assets/yarn/fluidbox/src/js/jquery.fluidbox.js +722 -0
  98. data/_assets/yarn/jquery/AUTHORS.txt +301 -0
  99. data/_assets/yarn/jquery/LICENSE.txt +36 -0
  100. data/_assets/yarn/jquery/README.md +67 -0
  101. data/_assets/yarn/jquery/bower.json +14 -0
  102. data/_assets/yarn/jquery/dist/core.js +476 -0
  103. data/_assets/yarn/jquery/dist/jquery.js +10253 -0
  104. data/_assets/yarn/jquery/dist/jquery.min.js +4 -0
  105. data/_assets/yarn/jquery/dist/jquery.min.map +1 -0
  106. data/_assets/yarn/jquery/dist/jquery.slim.js +8160 -0
  107. data/_assets/yarn/jquery/dist/jquery.slim.min.js +4 -0
  108. data/_assets/yarn/jquery/dist/jquery.slim.min.map +1 -0
  109. data/_assets/yarn/jquery/external/sizzle/LICENSE.txt +36 -0
  110. data/_assets/yarn/jquery/external/sizzle/dist/sizzle.js +2272 -0
  111. data/_assets/yarn/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  112. data/_assets/yarn/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  113. data/_assets/yarn/jquery/package.json +97 -0
  114. data/_assets/yarn/jquery/src/.eslintrc.json +5 -0
  115. data/_assets/yarn/jquery/src/ajax.js +855 -0
  116. data/_assets/yarn/jquery/src/ajax/jsonp.js +102 -0
  117. data/_assets/yarn/jquery/src/ajax/load.js +76 -0
  118. data/_assets/yarn/jquery/src/ajax/parseXML.js +30 -0
  119. data/_assets/yarn/jquery/src/ajax/script.js +77 -0
  120. data/_assets/yarn/jquery/src/ajax/var/location.js +5 -0
  121. data/_assets/yarn/jquery/src/ajax/var/nonce.js +7 -0
  122. data/_assets/yarn/jquery/src/ajax/var/rquery.js +5 -0
  123. data/_assets/yarn/jquery/src/ajax/xhr.js +169 -0
  124. data/_assets/yarn/jquery/src/attributes.js +13 -0
  125. data/_assets/yarn/jquery/src/attributes/attr.js +141 -0
  126. data/_assets/yarn/jquery/src/attributes/classes.js +174 -0
  127. data/_assets/yarn/jquery/src/attributes/prop.js +143 -0
  128. data/_assets/yarn/jquery/src/attributes/support.js +33 -0
  129. data/_assets/yarn/jquery/src/attributes/val.js +190 -0
  130. data/_assets/yarn/jquery/src/callbacks.js +234 -0
  131. data/_assets/yarn/jquery/src/core.js +476 -0
  132. data/_assets/yarn/jquery/src/core/DOMEval.js +16 -0
  133. data/_assets/yarn/jquery/src/core/access.js +70 -0
  134. data/_assets/yarn/jquery/src/core/init.js +128 -0
  135. data/_assets/yarn/jquery/src/core/nodeName.js +13 -0
  136. data/_assets/yarn/jquery/src/core/parseHTML.js +65 -0
  137. data/_assets/yarn/jquery/src/core/ready-no-deferred.js +96 -0
  138. data/_assets/yarn/jquery/src/core/ready.js +86 -0
  139. data/_assets/yarn/jquery/src/core/readyException.js +13 -0
  140. data/_assets/yarn/jquery/src/core/stripAndCollapse.js +14 -0
  141. data/_assets/yarn/jquery/src/core/support.js +20 -0
  142. data/_assets/yarn/jquery/src/core/var/rsingleTag.js +6 -0
  143. data/_assets/yarn/jquery/src/css.js +438 -0
  144. data/_assets/yarn/jquery/src/css/addGetHookIf.js +26 -0
  145. data/_assets/yarn/jquery/src/css/adjustCSS.js +71 -0
  146. data/_assets/yarn/jquery/src/css/curCSS.js +65 -0
  147. data/_assets/yarn/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  148. data/_assets/yarn/jquery/src/css/showHide.js +105 -0
  149. data/_assets/yarn/jquery/src/css/support.js +89 -0
  150. data/_assets/yarn/jquery/src/css/var/cssExpand.js +5 -0
  151. data/_assets/yarn/jquery/src/css/var/getStyles.js +17 -0
  152. data/_assets/yarn/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  153. data/_assets/yarn/jquery/src/css/var/rmargin.js +5 -0
  154. data/_assets/yarn/jquery/src/css/var/rnumnonpx.js +7 -0
  155. data/_assets/yarn/jquery/src/css/var/swap.js +26 -0
  156. data/_assets/yarn/jquery/src/data.js +179 -0
  157. data/_assets/yarn/jquery/src/data/Data.js +161 -0
  158. data/_assets/yarn/jquery/src/data/var/acceptData.js +19 -0
  159. data/_assets/yarn/jquery/src/data/var/dataPriv.js +7 -0
  160. data/_assets/yarn/jquery/src/data/var/dataUser.js +7 -0
  161. data/_assets/yarn/jquery/src/deferred.js +391 -0
  162. data/_assets/yarn/jquery/src/deferred/exceptionHook.js +21 -0
  163. data/_assets/yarn/jquery/src/deprecated.js +40 -0
  164. data/_assets/yarn/jquery/src/dimensions.js +56 -0
  165. data/_assets/yarn/jquery/src/effects.js +699 -0
  166. data/_assets/yarn/jquery/src/effects/Tween.js +123 -0
  167. data/_assets/yarn/jquery/src/effects/animatedSelector.js +15 -0
  168. data/_assets/yarn/jquery/src/event.js +746 -0
  169. data/_assets/yarn/jquery/src/event/ajax.js +22 -0
  170. data/_assets/yarn/jquery/src/event/alias.js +29 -0
  171. data/_assets/yarn/jquery/src/event/focusin.js +55 -0
  172. data/_assets/yarn/jquery/src/event/support.js +11 -0
  173. data/_assets/yarn/jquery/src/event/trigger.js +185 -0
  174. data/_assets/yarn/jquery/src/exports/amd.js +26 -0
  175. data/_assets/yarn/jquery/src/exports/global.js +34 -0
  176. data/_assets/yarn/jquery/src/jquery.js +41 -0
  177. data/_assets/yarn/jquery/src/manipulation.js +488 -0
  178. data/_assets/yarn/jquery/src/manipulation/_evalUrl.js +23 -0
  179. data/_assets/yarn/jquery/src/manipulation/buildFragment.js +104 -0
  180. data/_assets/yarn/jquery/src/manipulation/getAll.js +32 -0
  181. data/_assets/yarn/jquery/src/manipulation/setGlobalEval.js +22 -0
  182. data/_assets/yarn/jquery/src/manipulation/support.js +35 -0
  183. data/_assets/yarn/jquery/src/manipulation/var/rcheckableType.js +5 -0
  184. data/_assets/yarn/jquery/src/manipulation/var/rscriptType.js +5 -0
  185. data/_assets/yarn/jquery/src/manipulation/var/rtagName.js +5 -0
  186. data/_assets/yarn/jquery/src/manipulation/wrapMap.js +29 -0
  187. data/_assets/yarn/jquery/src/offset.js +229 -0
  188. data/_assets/yarn/jquery/src/queue.js +145 -0
  189. data/_assets/yarn/jquery/src/queue/delay.js +24 -0
  190. data/_assets/yarn/jquery/src/selector-native.js +237 -0
  191. data/_assets/yarn/jquery/src/selector-sizzle.js +19 -0
  192. data/_assets/yarn/jquery/src/selector.js +3 -0
  193. data/_assets/yarn/jquery/src/serialize.js +130 -0
  194. data/_assets/yarn/jquery/src/traversing.js +191 -0
  195. data/_assets/yarn/jquery/src/traversing/findFilter.js +106 -0
  196. data/_assets/yarn/jquery/src/traversing/var/dir.js +22 -0
  197. data/_assets/yarn/jquery/src/traversing/var/rneedsContext.js +8 -0
  198. data/_assets/yarn/jquery/src/traversing/var/siblings.js +17 -0
  199. data/_assets/yarn/jquery/src/var/ObjectFunctionString.js +7 -0
  200. data/_assets/yarn/jquery/src/var/arr.js +5 -0
  201. data/_assets/yarn/jquery/src/var/class2type.js +6 -0
  202. data/_assets/yarn/jquery/src/var/concat.js +7 -0
  203. data/_assets/yarn/jquery/src/var/document.js +5 -0
  204. data/_assets/yarn/jquery/src/var/documentElement.js +7 -0
  205. data/_assets/yarn/jquery/src/var/fnToString.js +7 -0
  206. data/_assets/yarn/jquery/src/var/getProto.js +5 -0
  207. data/_assets/yarn/jquery/src/var/hasOwn.js +7 -0
  208. data/_assets/yarn/jquery/src/var/indexOf.js +7 -0
  209. data/_assets/yarn/jquery/src/var/pnum.js +5 -0
  210. data/_assets/yarn/jquery/src/var/push.js +7 -0
  211. data/_assets/yarn/jquery/src/var/rcssNum.js +9 -0
  212. data/_assets/yarn/jquery/src/var/rnothtmlwhite.js +8 -0
  213. data/_assets/yarn/jquery/src/var/slice.js +7 -0
  214. data/_assets/yarn/jquery/src/var/support.js +6 -0
  215. data/_assets/yarn/jquery/src/var/toString.js +7 -0
  216. data/_assets/yarn/jquery/src/wrap.js +77 -0
  217. data/_assets/yarn/retinajs/.babelrc +4 -0
  218. data/_assets/yarn/retinajs/.editorconfig +15 -0
  219. data/_assets/yarn/retinajs/.eslintignore +2 -0
  220. data/_assets/yarn/retinajs/.eslintrc +9 -0
  221. data/_assets/yarn/retinajs/.npmignore +7 -0
  222. data/_assets/yarn/retinajs/.travis.yml +20 -0
  223. data/_assets/yarn/retinajs/LICENSE +20 -0
  224. data/_assets/yarn/retinajs/README.md +267 -0
  225. data/_assets/yarn/retinajs/bower.json +25 -0
  226. data/_assets/yarn/retinajs/dist/_retina.sass +68 -0
  227. data/_assets/yarn/retinajs/dist/_retina.scss +102 -0
  228. data/_assets/yarn/retinajs/dist/retina.js +100 -0
  229. data/_assets/yarn/retinajs/dist/retina.js.map +1 -0
  230. data/_assets/yarn/retinajs/dist/retina.less +56 -0
  231. data/_assets/yarn/retinajs/dist/retina.min.js +2 -0
  232. data/_assets/yarn/retinajs/dist/retina.min.js.map +1 -0
  233. data/_assets/yarn/retinajs/dist/retina.styl +56 -0
  234. data/_assets/yarn/retinajs/es/_retina.sass +68 -0
  235. data/_assets/yarn/retinajs/es/_retina.scss +102 -0
  236. data/_assets/yarn/retinajs/es/retina.js +91 -0
  237. data/_assets/yarn/retinajs/es/retina.js.map +1 -0
  238. data/_assets/yarn/retinajs/es/retina.less +56 -0
  239. data/_assets/yarn/retinajs/es/retina.styl +56 -0
  240. data/_assets/yarn/retinajs/gulpfile.babel.js +154 -0
  241. data/_assets/yarn/retinajs/package.json +57 -0
  242. data/_assets/yarn/retinajs/src/_retina.sass +68 -0
  243. data/_assets/yarn/retinajs/src/_retina.scss +102 -0
  244. data/_assets/yarn/retinajs/src/retina.js +246 -0
  245. data/_assets/yarn/retinajs/src/retina.less +56 -0
  246. data/_assets/yarn/retinajs/src/retina.styl +56 -0
  247. data/_assets/yarn/retinajs/test/DOM.js +44 -0
  248. data/_assets/yarn/retinajs/test/fixtures/image.js +19 -0
  249. data/_assets/yarn/retinajs/test/fixtures/less_expected_output.css +18 -0
  250. data/_assets/yarn/retinajs/test/fixtures/scss_expected_output.css +13 -0
  251. data/_assets/yarn/retinajs/test/fixtures/test.less +10 -0
  252. data/_assets/yarn/retinajs/test/fixtures/test.scss +11 -0
  253. data/_assets/yarn/retinajs/test/fixtures/xml_http_request.js +24 -0
  254. data/_assets/yarn/retinajs/test/functional/public/google-logo.png +0 -0
  255. data/_assets/yarn/retinajs/test/functional/public/google-logo@2x.png +0 -0
  256. data/_assets/yarn/retinajs/test/functional/public/google-logo@3x.png +0 -0
  257. data/_assets/yarn/retinajs/test/functional/public/index.html +190 -0
  258. data/_assets/yarn/retinajs/test/functional/public/ipad.png +0 -0
  259. data/_assets/yarn/retinajs/test/functional/public/ipad@2x.png +0 -0
  260. data/_assets/yarn/retinajs/test/functional/public/ipad@3x.png +0 -0
  261. data/_assets/yarn/retinajs/test/functional/public/styles/_retina.sass +68 -0
  262. data/_assets/yarn/retinajs/test/functional/public/styles/_retina.scss +102 -0
  263. data/_assets/yarn/retinajs/test/functional/public/styles/less-base.less +13 -0
  264. data/_assets/yarn/retinajs/test/functional/public/styles/retina.less +56 -0
  265. data/_assets/yarn/retinajs/test/functional/public/styles/retina.less.css +73 -0
  266. data/_assets/yarn/retinajs/test/functional/public/styles/retina.sass.css +42 -0
  267. data/_assets/yarn/retinajs/test/functional/public/styles/retina.scss.css +96 -0
  268. data/_assets/yarn/retinajs/test/functional/public/styles/retina.styl +56 -0
  269. data/_assets/yarn/retinajs/test/functional/public/styles/retina.styl.css +61 -0
  270. data/_assets/yarn/retinajs/test/functional/public/styles/sass-base.sass +10 -0
  271. data/_assets/yarn/retinajs/test/functional/public/styles/scss-base.scss +13 -0
  272. data/_assets/yarn/retinajs/test/functional/public/styles/styl-base.styl +10 -0
  273. data/_assets/yarn/retinajs/test/mocha-runner.js +7 -0
  274. data/_assets/yarn/retinajs/test/retina.spec.js +14 -0
  275. data/_assets/yarn/scrollreveal/.gitattributes +10 -0
  276. data/_assets/yarn/scrollreveal/.github/CONTRIBUTING.md +9 -0
  277. data/_assets/yarn/scrollreveal/.github/ISSUE_TEMPLATE.md +11 -0
  278. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/base.css +213 -0
  279. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/index.html +158 -0
  280. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/index.html +93 -0
  281. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/package.json.html +143 -0
  282. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/constructor.js.html +311 -0
  283. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/defaults.js.html +158 -0
  284. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/functions/animate.js.html +395 -0
  285. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/functions/delegate.js.html +179 -0
  286. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/functions/index.html +145 -0
  287. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/functions/initialize.js.html +197 -0
  288. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/functions/rinse.js.html +311 -0
  289. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/functions/style.js.html +617 -0
  290. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/index.html +119 -0
  291. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/methods/clean.js.html +137 -0
  292. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/methods/destroy.js.html +182 -0
  293. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/methods/index.html +132 -0
  294. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/methods/reveal.js.html +524 -0
  295. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/methods/sync.js.html +125 -0
  296. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/instance/noop.js.html +89 -0
  297. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/polyfills/index.html +93 -0
  298. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/polyfills/requestAnimationFrame.js.html +125 -0
  299. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/utils/browser.js.html +272 -0
  300. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/utils/core.js.html +434 -0
  301. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/utils/generic.js.html +218 -0
  302. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/lib/src/utils/index.html +119 -0
  303. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/prettify.css +1 -0
  304. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/prettify.js +1 -0
  305. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/sort-arrow-sprite.png +0 -0
  306. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov-report/sorter.js +158 -0
  307. data/_assets/yarn/scrollreveal/.ignore/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/lcov.info +1016 -0
  308. data/_assets/yarn/scrollreveal/.ignore/coverage/server.coverage.js +11 -0
  309. data/_assets/yarn/scrollreveal/.ignore/sandbox/css/styles.css +32 -0
  310. data/_assets/yarn/scrollreveal/.ignore/sandbox/index.html +68 -0
  311. data/_assets/yarn/scrollreveal/.ignore/sandbox/js/scrollreveal.js +1271 -0
  312. data/_assets/yarn/scrollreveal/.ignore/sandbox/rollup.conf.sandbox.js +15 -0
  313. data/_assets/yarn/scrollreveal/.ignore/sandbox/server.sandbox.js +11 -0
  314. data/_assets/yarn/scrollreveal/.npmignore +8 -0
  315. data/_assets/yarn/scrollreveal/CHANGELOG.md +268 -0
  316. data/_assets/yarn/scrollreveal/LICENSE.md +12 -0
  317. data/_assets/yarn/scrollreveal/README.md +413 -0
  318. data/_assets/yarn/scrollreveal/bower.json +24 -0
  319. data/_assets/yarn/scrollreveal/dist/scrollreveal.js +860 -0
  320. data/_assets/yarn/scrollreveal/dist/scrollreveal.min.js +1 -0
  321. data/_assets/yarn/scrollreveal/gulpfile.js +33 -0
  322. data/_assets/yarn/scrollreveal/lib/gulp/gulp-clean.js +7 -0
  323. data/_assets/yarn/scrollreveal/lib/gulp/gulp-dev.js +6 -0
  324. data/_assets/yarn/scrollreveal/lib/gulp/gulp-dist-min.js +19 -0
  325. data/_assets/yarn/scrollreveal/lib/gulp/gulp-dist.js +6 -0
  326. data/_assets/yarn/scrollreveal/lib/gulp/gulp-server.js +9 -0
  327. data/_assets/yarn/scrollreveal/lib/gulp/gulp-validate-bower.js +13 -0
  328. data/_assets/yarn/scrollreveal/lib/gulp/gulp-watch.js +6 -0
  329. data/_assets/yarn/scrollreveal/src/scrollreveal.js +860 -0
  330. data/_assets/yarn/throttle-debounce-fn/.jscsrc +5 -0
  331. data/_assets/yarn/throttle-debounce-fn/.jshintrc +13 -0
  332. data/_assets/yarn/throttle-debounce-fn/.npmignore +1 -0
  333. data/_assets/yarn/throttle-debounce-fn/Gruntfile.js +76 -0
  334. data/_assets/yarn/throttle-debounce-fn/LICENSE.md +22 -0
  335. data/_assets/yarn/throttle-debounce-fn/README.md +55 -0
  336. data/_assets/yarn/throttle-debounce-fn/dist/throttle-debounce-fn.js +164 -0
  337. data/_assets/yarn/throttle-debounce-fn/dist/throttle-debounce-fn.min.js +10 -0
  338. data/_assets/yarn/throttle-debounce-fn/package.json +36 -0
  339. data/_assets/yarn/throttle-debounce-fn/src/throttle-debounce-fn.js +156 -0
  340. data/_assets/yarn/turbolinks/LICENSE +20 -0
  341. data/_assets/yarn/turbolinks/README.md +473 -0
  342. data/_assets/yarn/turbolinks/dist/turbolinks.js +6 -0
  343. data/_assets/yarn/turbolinks/src/turbolinks/BANNER.js.erb +4 -0
  344. data/_assets/yarn/turbolinks/src/turbolinks/VERSION +1 -0
  345. data/_assets/yarn/turbolinks/src/turbolinks/browser_adapter.coffee +61 -0
  346. data/_assets/yarn/turbolinks/src/turbolinks/compatibility.coffee +30 -0
  347. data/_assets/yarn/turbolinks/src/turbolinks/controller.coffee +239 -0
  348. data/_assets/yarn/turbolinks/src/turbolinks/error_renderer.coffee +21 -0
  349. data/_assets/yarn/turbolinks/src/turbolinks/head_details.coffee +51 -0
  350. data/_assets/yarn/turbolinks/src/turbolinks/helpers.coffee +57 -0
  351. data/_assets/yarn/turbolinks/src/turbolinks/history.coffee +48 -0
  352. data/_assets/yarn/turbolinks/src/turbolinks/http_request.coffee +88 -0
  353. data/_assets/yarn/turbolinks/src/turbolinks/index.coffee +18 -0
  354. data/_assets/yarn/turbolinks/src/turbolinks/location.coffee +70 -0
  355. data/_assets/yarn/turbolinks/src/turbolinks/progress_bar.coffee +83 -0
  356. data/_assets/yarn/turbolinks/src/turbolinks/renderer.coffee +27 -0
  357. data/_assets/yarn/turbolinks/src/turbolinks/scroll_manager.coffee +28 -0
  358. data/_assets/yarn/turbolinks/src/turbolinks/snapshot.coffee +47 -0
  359. data/_assets/yarn/turbolinks/src/turbolinks/snapshot_cache.coffee +43 -0
  360. data/_assets/yarn/turbolinks/src/turbolinks/snapshot_renderer.coffee +88 -0
  361. data/_assets/yarn/turbolinks/src/turbolinks/start.coffee +18 -0
  362. data/_assets/yarn/turbolinks/src/turbolinks/view.coffee +34 -0
  363. data/_assets/yarn/turbolinks/src/turbolinks/visit.coffee +162 -0
  364. data/_assets/yarn/webfontloader/CHANGELOG +419 -0
  365. data/_assets/yarn/webfontloader/LICENSE +176 -0
  366. data/_assets/yarn/webfontloader/README.md +394 -0
  367. data/_assets/yarn/webfontloader/package.json +37 -0
  368. data/_assets/yarn/webfontloader/src/closure.js +2 -0
  369. data/_assets/yarn/webfontloader/src/core/cssclassname.js +46 -0
  370. data/_assets/yarn/webfontloader/src/core/domhelper.js +405 -0
  371. data/_assets/yarn/webfontloader/src/core/eventdispatcher.js +195 -0
  372. data/_assets/yarn/webfontloader/src/core/font.js +140 -0
  373. data/_assets/yarn/webfontloader/src/core/fontmodule.js +16 -0
  374. data/_assets/yarn/webfontloader/src/core/fontmoduleloader.js +47 -0
  375. data/_assets/yarn/webfontloader/src/core/fontruler.js +60 -0
  376. data/_assets/yarn/webfontloader/src/core/fontwatcher.js +171 -0
  377. data/_assets/yarn/webfontloader/src/core/fontwatchrunner.js +249 -0
  378. data/_assets/yarn/webfontloader/src/core/initialize.js +97 -0
  379. data/_assets/yarn/webfontloader/src/core/nativefontwatchrunner.js +69 -0
  380. data/_assets/yarn/webfontloader/src/core/stylesheetwaiter.js +48 -0
  381. data/_assets/yarn/webfontloader/src/core/webfont.js +97 -0
  382. data/_assets/yarn/webfontloader/src/modules/custom.js +63 -0
  383. data/_assets/yarn/webfontloader/src/modules/fontdeck.js +66 -0
  384. data/_assets/yarn/webfontloader/src/modules/google/fontapiparser.js +181 -0
  385. data/_assets/yarn/webfontloader/src/modules/google/fontapiurlbuilder.js +77 -0
  386. data/_assets/yarn/webfontloader/src/modules/google/googlefontapi.js +54 -0
  387. data/_assets/yarn/webfontloader/src/modules/monotype.js +110 -0
  388. data/_assets/yarn/webfontloader/src/modules/typekit.js +73 -0
  389. data/_assets/yarn/webfontloader/webfontloader.js +17 -0
  390. data/_includes/footer.html +7 -0
  391. data/_includes/head.html +41 -0
  392. data/_includes/image.html +5 -0
  393. data/_includes/javascript.html +1 -0
  394. data/_includes/javascripts.html +19 -0
  395. data/_includes/navigation.html +75 -0
  396. data/_includes/stylesheet.html +1 -0
  397. data/_layouts/articles_by_tag.html +38 -0
  398. data/_layouts/default.html +16 -0
  399. data/_layouts/post.html +65 -0
  400. data/about.html +18 -0
  401. data/favicon.ico +0 -0
  402. data/feed.xml +20 -0
  403. data/index.html +49 -0
  404. data/robots.txt +5 -0
  405. metadata +596 -0
@@ -0,0 +1 @@
1
+ !function(){"use strict";function e(n){return"undefined"==typeof this||Object.getPrototypeOf(this)!==e.prototype?new e(n):(O=this,O.version="3.3.4",O.tools=new E,O.isSupported()?(O.tools.extend(O.defaults,n||{}),O.defaults.container=t(O.defaults),O.store={elements:{},containers:[]},O.sequences={},O.history=[],O.uid=0,O.initialized=!1):"undefined"!=typeof console&&null!==console,O)}function t(e){if(e&&e.container){if("string"==typeof e.container)return window.document.documentElement.querySelector(e.container);if(O.tools.isNode(e.container))return e.container}return O.defaults.container}function n(e,t){return"string"==typeof e?Array.prototype.slice.call(t.querySelectorAll(e)):O.tools.isNode(e)?[e]:O.tools.isNodeList(e)?Array.prototype.slice.call(e):[]}function i(){return++O.uid}function o(e,t,n){t.container&&(t.container=n),e.config?e.config=O.tools.extendClone(e.config,t):e.config=O.tools.extendClone(O.defaults,t),"top"===e.config.origin||"bottom"===e.config.origin?e.config.axis="Y":e.config.axis="X"}function r(e){var t=window.getComputedStyle(e.domEl);e.styles||(e.styles={transition:{},transform:{},computed:{}},e.styles.inline=e.domEl.getAttribute("style")||"",e.styles.inline+="; visibility: visible; ",e.styles.computed.opacity=t.opacity,t.transition&&"all 0s ease 0s"!==t.transition?e.styles.computed.transition=t.transition+", ":e.styles.computed.transition=""),e.styles.transition.instant=s(e,0),e.styles.transition.delayed=s(e,e.config.delay),e.styles.transform.initial=" -webkit-transform:",e.styles.transform.target=" -webkit-transform:",a(e),e.styles.transform.initial+="transform:",e.styles.transform.target+="transform:",a(e)}function s(e,t){var n=e.config;return"-webkit-transition: "+e.styles.computed.transition+"-webkit-transform "+n.duration/1e3+"s "+n.easing+" "+t/1e3+"s, opacity "+n.duration/1e3+"s "+n.easing+" "+t/1e3+"s; transition: "+e.styles.computed.transition+"transform "+n.duration/1e3+"s "+n.easing+" "+t/1e3+"s, opacity "+n.duration/1e3+"s "+n.easing+" "+t/1e3+"s; "}function a(e){var t,n=e.config,i=e.styles.transform;t="top"===n.origin||"left"===n.origin?/^-/.test(n.distance)?n.distance.substr(1):"-"+n.distance:n.distance,parseInt(n.distance)&&(i.initial+=" translate"+n.axis+"("+t+")",i.target+=" translate"+n.axis+"(0)"),n.scale&&(i.initial+=" scale("+n.scale+")",i.target+=" scale(1)"),n.rotate.x&&(i.initial+=" rotateX("+n.rotate.x+"deg)",i.target+=" rotateX(0)"),n.rotate.y&&(i.initial+=" rotateY("+n.rotate.y+"deg)",i.target+=" rotateY(0)"),n.rotate.z&&(i.initial+=" rotateZ("+n.rotate.z+"deg)",i.target+=" rotateZ(0)"),i.initial+="; opacity: "+n.opacity+";",i.target+="; opacity: "+e.styles.computed.opacity+";"}function l(e){var t=e.config.container;t&&O.store.containers.indexOf(t)===-1&&O.store.containers.push(e.config.container),O.store.elements[e.id]=e}function c(e,t,n){var i={target:e,config:t,interval:n};O.history.push(i)}function f(){if(O.isSupported()){y();for(var e=0;e<O.store.containers.length;e++)O.store.containers[e].addEventListener("scroll",d),O.store.containers[e].addEventListener("resize",d);O.initialized||(window.addEventListener("scroll",d),window.addEventListener("resize",d),O.initialized=!0)}return O}function d(){T(y)}function u(){var e,t,n,i;O.tools.forOwn(O.sequences,function(o){i=O.sequences[o],e=!1;for(var r=0;r<i.elemIds.length;r++)n=i.elemIds[r],t=O.store.elements[n],q(t)&&!e&&(e=!0);i.active=e})}function y(){var e,t;u(),O.tools.forOwn(O.store.elements,function(n){t=O.store.elements[n],e=w(t),g(t)?(t.config.beforeReveal(t.domEl),e?t.domEl.setAttribute("style",t.styles.inline+t.styles.transform.target+t.styles.transition.delayed):t.domEl.setAttribute("style",t.styles.inline+t.styles.transform.target+t.styles.transition.instant),p("reveal",t,e),t.revealing=!0,t.seen=!0,t.sequence&&m(t,e)):v(t)&&(t.config.beforeReset(t.domEl),t.domEl.setAttribute("style",t.styles.inline+t.styles.transform.initial+t.styles.transition.instant),p("reset",t),t.revealing=!1)})}function m(e,t){var n=0,i=0,o=O.sequences[e.sequence.id];o.blocked=!0,t&&"onload"===e.config.useDelay&&(i=e.config.delay),e.sequence.timer&&(n=Math.abs(e.sequence.timer.started-new Date),window.clearTimeout(e.sequence.timer)),e.sequence.timer={started:new Date},e.sequence.timer.clock=window.setTimeout(function(){o.blocked=!1,e.sequence.timer=null,d()},Math.abs(o.interval)+i-n)}function p(e,t,n){var i=0,o=0,r="after";switch(e){case"reveal":o=t.config.duration,n&&(o+=t.config.delay),r+="Reveal";break;case"reset":o=t.config.duration,r+="Reset"}t.timer&&(i=Math.abs(t.timer.started-new Date),window.clearTimeout(t.timer.clock)),t.timer={started:new Date},t.timer.clock=window.setTimeout(function(){t.config[r](t.domEl),t.timer=null},o-i)}function g(e){if(e.sequence){var t=O.sequences[e.sequence.id];return t.active&&!t.blocked&&!e.revealing&&!e.disabled}return q(e)&&!e.revealing&&!e.disabled}function w(e){var t=e.config.useDelay;return"always"===t||"onload"===t&&!O.initialized||"once"===t&&!e.seen}function v(e){if(e.sequence){var t=O.sequences[e.sequence.id];return!t.active&&e.config.reset&&e.revealing&&!e.disabled}return!q(e)&&e.config.reset&&e.revealing&&!e.disabled}function b(e){return{width:e.clientWidth,height:e.clientHeight}}function h(e){if(e&&e!==window.document.documentElement){var t=x(e);return{x:e.scrollLeft+t.left,y:e.scrollTop+t.top}}return{x:window.pageXOffset,y:window.pageYOffset}}function x(e){var t=0,n=0,i=e.offsetHeight,o=e.offsetWidth;do isNaN(e.offsetTop)||(t+=e.offsetTop),isNaN(e.offsetLeft)||(n+=e.offsetLeft),e=e.offsetParent;while(e);return{top:t,left:n,height:i,width:o}}function q(e){function t(){var t=c+a*s,n=f+l*s,i=d-a*s,y=u-l*s,m=r.y+e.config.viewOffset.top,p=r.x+e.config.viewOffset.left,g=r.y-e.config.viewOffset.bottom+o.height,w=r.x-e.config.viewOffset.right+o.width;return t<g&&i>m&&n>p&&y<w}function n(){return"fixed"===window.getComputedStyle(e.domEl).position}var i=x(e.domEl),o=b(e.config.container),r=h(e.config.container),s=e.config.viewFactor,a=i.height,l=i.width,c=i.top,f=i.left,d=c+a,u=f+l;return t()||n()}function E(){}var O,T;e.prototype.defaults={origin:"bottom",distance:"20px",duration:500,delay:0,rotate:{x:0,y:0,z:0},opacity:0,scale:.9,easing:"cubic-bezier(0.6, 0.2, 0.1, 1)",container:window.document.documentElement,mobile:!0,reset:!1,useDelay:"always",viewFactor:.2,viewOffset:{top:0,right:0,bottom:0,left:0},beforeReveal:function(e){},beforeReset:function(e){},afterReveal:function(e){},afterReset:function(e){}},e.prototype.isSupported=function(){var e=document.documentElement.style;return"WebkitTransition"in e&&"WebkitTransform"in e||"transition"in e&&"transform"in e},e.prototype.reveal=function(e,s,a,d){var u,y,m,p,g,w;if(void 0!==s&&"number"==typeof s?(a=s,s={}):void 0!==s&&null!==s||(s={}),u=t(s),y=n(e,u),!y.length)return O;a&&"number"==typeof a&&(w=i(),g=O.sequences[w]={id:w,interval:a,elemIds:[],active:!1});for(var v=0;v<y.length;v++)p=y[v].getAttribute("data-sr-id"),p?m=O.store.elements[p]:(m={id:i(),domEl:y[v],seen:!1,revealing:!1},m.domEl.setAttribute("data-sr-id",m.id)),g&&(m.sequence={id:g.id,index:g.elemIds.length},g.elemIds.push(m.id)),o(m,s,u),r(m),l(m),O.tools.isMobile()&&!m.config.mobile||!O.isSupported()?(m.domEl.setAttribute("style",m.styles.inline),m.disabled=!0):m.revealing||m.domEl.setAttribute("style",m.styles.inline+m.styles.transform.initial);return!d&&O.isSupported()&&(c(e,s,a),O.initTimeout&&window.clearTimeout(O.initTimeout),O.initTimeout=window.setTimeout(f,0)),O},e.prototype.sync=function(){if(O.history.length&&O.isSupported()){for(var e=0;e<O.history.length;e++){var t=O.history[e];O.reveal(t.target,t.config,t.interval,!0)}f()}return O},E.prototype.isObject=function(e){return null!==e&&"object"==typeof e&&e.constructor===Object},E.prototype.isNode=function(e){return"object"==typeof window.Node?e instanceof window.Node:e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},E.prototype.isNodeList=function(e){var t=Object.prototype.toString.call(e),n=/^\[object (HTMLCollection|NodeList|Object)\]$/;return"object"==typeof window.NodeList?e instanceof window.NodeList:e&&"object"==typeof e&&n.test(t)&&"number"==typeof e.length&&(0===e.length||this.isNode(e[0]))},E.prototype.forOwn=function(e,t){if(!this.isObject(e))throw new TypeError('Expected "object", but received "'+typeof e+'".');for(var n in e)e.hasOwnProperty(n)&&t(n)},E.prototype.extend=function(e,t){return this.forOwn(t,function(n){this.isObject(t[n])?(e[n]&&this.isObject(e[n])||(e[n]={}),this.extend(e[n],t[n])):e[n]=t[n]}.bind(this)),e},E.prototype.extendClone=function(e,t){return this.extend(this.extend({},e),t)},E.prototype.isMobile=function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},T=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return e}):"undefined"!=typeof module&&module.exports?module.exports=e:window.ScrollReveal=e}();
@@ -0,0 +1,33 @@
1
+ var gulp = require('gulp')
2
+ var fs = require('fs')
3
+ var run = require('run-sequence')
4
+ var browser = require('browser-sync').create()
5
+
6
+ fs.readdirSync('lib/gulp').forEach(function (file) {
7
+ if (file.match(/.+\.js/g)) {
8
+ require(`./lib/gulp/${file}`)(gulp, browser)
9
+ }
10
+ })
11
+
12
+ gulp.task('build', function (done) {
13
+ run(
14
+ 'validate-bower',
15
+ 'clean',
16
+ [
17
+ 'dist',
18
+ 'dist-min'
19
+ ],
20
+ done
21
+ )
22
+ })
23
+
24
+ gulp.task('default', function (done) {
25
+ run(
26
+ 'dev',
27
+ [
28
+ 'server',
29
+ 'watch'
30
+ ],
31
+ done
32
+ )
33
+ })
@@ -0,0 +1,7 @@
1
+ var del = require('del')
2
+
3
+ module.exports = function (gulp) {
4
+ gulp.task('clean', function (done) {
5
+ return del('dist/**', done)
6
+ })
7
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = function (gulp) {
2
+ gulp.task('dev', function () {
3
+ return gulp.src('src/scrollreveal.js')
4
+ .pipe(gulp.dest('dev'))
5
+ })
6
+ }
@@ -0,0 +1,19 @@
1
+ var pump = require('pump')
2
+ var stripDebug = require('gulp-strip-debug')
3
+ var uglify = require('gulp-uglify')
4
+ var rename = require('gulp-rename')
5
+
6
+ module.exports = function (gulp) {
7
+ gulp.task('dist-min', function (done) {
8
+ pump(
9
+ [
10
+ gulp.src('src/scrollreveal.js'),
11
+ stripDebug(),
12
+ uglify(),
13
+ rename('scrollreveal.min.js'),
14
+ gulp.dest('dist')
15
+ ],
16
+ done
17
+ )
18
+ })
19
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = function (gulp) {
2
+ gulp.task('dist', function () {
3
+ return gulp.src('src/scrollreveal.js')
4
+ .pipe(gulp.dest('dist'))
5
+ })
6
+ }
@@ -0,0 +1,9 @@
1
+ module.exports = function (gulp, browser) {
2
+ gulp.task('server', function () {
3
+ browser.init({
4
+ server: {
5
+ baseDir: 'dev'
6
+ }
7
+ })
8
+ })
9
+ }
@@ -0,0 +1,13 @@
1
+ var bower = require('bower-json')
2
+
3
+ module.exports = function (gulp) {
4
+ gulp.task('validate-bower', function () {
5
+ bower.read('./bower.json', function (err, json) {
6
+ if (err) {
7
+ console.error('There was an error reading the file:')
8
+ console.error(err.message)
9
+ return
10
+ }
11
+ })
12
+ })
13
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = function (gulp, browser) {
2
+ gulp.task('watch', function () {
3
+ gulp.watch(['src/scrollreveal.js'], ['dev'])
4
+ gulp.watch(['dev/*.*']).on('change', browser.reload)
5
+ })
6
+ }
@@ -0,0 +1,860 @@
1
+ ///// ///// ///// /////
2
+ ///// ///// ///// /////
3
+ ///// ///// ///// /////
4
+ ///// ///// ///// /////
5
+ ///// ///// /////
6
+ ///// ///// /////
7
+ ///// ///// ///// /////
8
+ ///// ///// ///// /////
9
+ ///// /////
10
+ ///// /////
11
+ ///// ///// ///// /////
12
+ ///// ///// ///// /////
13
+ ///// ///// ///// /////
14
+ ///// ///// ///// /////
15
+
16
+ /**
17
+ * ScrollReveal
18
+ * ------------
19
+ * Version : 3.3.4
20
+ * Website : scrollrevealjs.org
21
+ * Repo : github.com/jlmakes/scrollreveal.js
22
+ * Author : Julian Lloyd (@jlmakes)
23
+ */
24
+
25
+ ;(function () {
26
+ 'use strict'
27
+
28
+ var sr
29
+ var _requestAnimationFrame
30
+
31
+ function ScrollReveal (config) {
32
+ // Support instantiation without the `new` keyword.
33
+ if (typeof this === 'undefined' || Object.getPrototypeOf(this) !== ScrollReveal.prototype) {
34
+ return new ScrollReveal(config)
35
+ }
36
+
37
+ sr = this // Save reference to instance.
38
+ sr.version = '3.3.4'
39
+ sr.tools = new Tools() // *required utilities
40
+
41
+ if (sr.isSupported()) {
42
+ sr.tools.extend(sr.defaults, config || {})
43
+
44
+ sr.defaults.container = _resolveContainer(sr.defaults)
45
+
46
+ sr.store = {
47
+ elements: {},
48
+ containers: []
49
+ }
50
+
51
+ sr.sequences = {}
52
+ sr.history = []
53
+ sr.uid = 0
54
+ sr.initialized = false
55
+ } else if (typeof console !== 'undefined' && console !== null) {
56
+ // Note: IE9 only supports console if devtools are open.
57
+ console.log('ScrollReveal is not supported in this browser.')
58
+ }
59
+
60
+ return sr
61
+ }
62
+
63
+ /**
64
+ * Configuration
65
+ * -------------
66
+ * This object signature can be passed directly to the ScrollReveal constructor,
67
+ * or as the second argument of the `reveal()` method.
68
+ */
69
+
70
+ ScrollReveal.prototype.defaults = {
71
+ // 'bottom', 'left', 'top', 'right'
72
+ origin: 'bottom',
73
+
74
+ // Can be any valid CSS distance, e.g. '5rem', '10%', '20vw', etc.
75
+ distance: '20px',
76
+
77
+ // Time in milliseconds.
78
+ duration: 500,
79
+ delay: 0,
80
+
81
+ // Starting angles in degrees, will transition from these values to 0 in all axes.
82
+ rotate: { x: 0, y: 0, z: 0 },
83
+
84
+ // Starting opacity value, before transitioning to the computed opacity.
85
+ opacity: 0,
86
+
87
+ // Starting scale value, will transition from this value to 1
88
+ scale: 0.9,
89
+
90
+ // Accepts any valid CSS easing, e.g. 'ease', 'ease-in-out', 'linear', etc.
91
+ easing: 'cubic-bezier(0.6, 0.2, 0.1, 1)',
92
+
93
+ // `<html>` is the default reveal container. You can pass either:
94
+ // DOM Node, e.g. document.querySelector('.fooContainer')
95
+ // Selector, e.g. '.fooContainer'
96
+ container: window.document.documentElement,
97
+
98
+ // true/false to control reveal animations on mobile.
99
+ mobile: true,
100
+
101
+ // true: reveals occur every time elements become visible
102
+ // false: reveals occur once as elements become visible
103
+ reset: false,
104
+
105
+ // 'always' — delay for all reveal animations
106
+ // 'once' — delay only the first time reveals occur
107
+ // 'onload' - delay only for animations triggered by first load
108
+ useDelay: 'always',
109
+
110
+ // Change when an element is considered in the viewport. The default value
111
+ // of 0.20 means 20% of an element must be visible for its reveal to occur.
112
+ viewFactor: 0.2,
113
+
114
+ // Pixel values that alter the container boundaries.
115
+ // e.g. Set `{ top: 48 }`, if you have a 48px tall fixed toolbar.
116
+ // --
117
+ // Visual Aid: https://scrollrevealjs.org/assets/viewoffset.png
118
+ viewOffset: { top: 0, right: 0, bottom: 0, left: 0 },
119
+
120
+ // Callbacks that fire for each triggered element reveal, and reset.
121
+ beforeReveal: function (domEl) {},
122
+ beforeReset: function (domEl) {},
123
+
124
+ // Callbacks that fire for each completed element reveal, and reset.
125
+ afterReveal: function (domEl) {},
126
+ afterReset: function (domEl) {}
127
+ }
128
+
129
+ /**
130
+ * Check if client supports CSS Transform and CSS Transition.
131
+ * @return {boolean}
132
+ */
133
+ ScrollReveal.prototype.isSupported = function () {
134
+ var style = document.documentElement.style
135
+ return 'WebkitTransition' in style && 'WebkitTransform' in style ||
136
+ 'transition' in style && 'transform' in style
137
+ }
138
+
139
+ /**
140
+ * Creates a reveal set, a group of elements that will animate when they
141
+ * become visible. If [interval] is provided, a new sequence is created
142
+ * that will ensure elements reveal in the order they appear in the DOM.
143
+ *
144
+ * @param {Node|NodeList|string} [target] The node, node list or selector to use for animation.
145
+ * @param {Object} [config] Override the defaults for this reveal set.
146
+ * @param {number} [interval] Time between sequenced element animations (milliseconds).
147
+ * @param {boolean} [sync] Used internally when updating reveals for async content.
148
+ *
149
+ * @return {Object} The current ScrollReveal instance.
150
+ */
151
+ ScrollReveal.prototype.reveal = function (target, config, interval, sync) {
152
+ var container
153
+ var elements
154
+ var elem
155
+ var elemId
156
+ var sequence
157
+ var sequenceId
158
+
159
+ // No custom configuration was passed, but a sequence interval instead.
160
+ // let’s shuffle things around to make sure everything works.
161
+ if (config !== undefined && typeof config === 'number') {
162
+ interval = config
163
+ config = {}
164
+ } else if (config === undefined || config === null) {
165
+ config = {}
166
+ }
167
+
168
+ container = _resolveContainer(config)
169
+ elements = _getRevealElements(target, container)
170
+
171
+ if (!elements.length) {
172
+ console.log('ScrollReveal: reveal on "' + target + '" failed, no elements found.')
173
+ return sr
174
+ }
175
+
176
+ // Prepare a new sequence if an interval is passed.
177
+ if (interval && typeof interval === 'number') {
178
+ sequenceId = _nextUid()
179
+
180
+ sequence = sr.sequences[sequenceId] = {
181
+ id: sequenceId,
182
+ interval: interval,
183
+ elemIds: [],
184
+ active: false
185
+ }
186
+ }
187
+
188
+ // Begin main loop to configure ScrollReveal elements.
189
+ for (var i = 0; i < elements.length; i++) {
190
+ // Check if the element has already been configured and grab it from the store.
191
+ elemId = elements[i].getAttribute('data-sr-id')
192
+ if (elemId) {
193
+ elem = sr.store.elements[elemId]
194
+ } else {
195
+ // Otherwise, let’s do some basic setup.
196
+ elem = {
197
+ id: _nextUid(),
198
+ domEl: elements[i],
199
+ seen: false,
200
+ revealing: false
201
+ }
202
+ elem.domEl.setAttribute('data-sr-id', elem.id)
203
+ }
204
+
205
+ // Sequence only setup
206
+ if (sequence) {
207
+ elem.sequence = {
208
+ id: sequence.id,
209
+ index: sequence.elemIds.length
210
+ }
211
+
212
+ sequence.elemIds.push(elem.id)
213
+ }
214
+
215
+ // New or existing element, it’s time to update its configuration, styles,
216
+ // and send the updates to our store.
217
+ _configure(elem, config, container)
218
+ _style(elem)
219
+ _updateStore(elem)
220
+
221
+ // We need to make sure elements are set to visibility: visible, even when
222
+ // on mobile and `config.mobile === false`, or if unsupported.
223
+ if (sr.tools.isMobile() && !elem.config.mobile || !sr.isSupported()) {
224
+ elem.domEl.setAttribute('style', elem.styles.inline)
225
+ elem.disabled = true
226
+ } else if (!elem.revealing) {
227
+ // Otherwise, proceed normally.
228
+ elem.domEl.setAttribute('style',
229
+ elem.styles.inline +
230
+ elem.styles.transform.initial
231
+ )
232
+ }
233
+ }
234
+
235
+ // Each `reveal()` is recorded so that when calling `sync()` while working
236
+ // with asynchronously loaded content, it can re-trace your steps but with
237
+ // all your new elements now in the DOM.
238
+
239
+ // Since `reveal()` is called internally by `sync()`, we don’t want to
240
+ // record or intiialize each reveal during syncing.
241
+ if (!sync && sr.isSupported()) {
242
+ _record(target, config, interval)
243
+
244
+ // We push initialization to the event queue using setTimeout, so that we can
245
+ // give ScrollReveal room to process all reveal calls before putting things into motion.
246
+ // --
247
+ // Philip Roberts - What the heck is the event loop anyway? (JSConf EU 2014)
248
+ // https://www.youtube.com/watch?v=8aGhZQkoFbQ
249
+ if (sr.initTimeout) {
250
+ window.clearTimeout(sr.initTimeout)
251
+ }
252
+ sr.initTimeout = window.setTimeout(_init, 0)
253
+ }
254
+
255
+ return sr
256
+ }
257
+
258
+ /**
259
+ * Re-runs `reveal()` for each record stored in history, effectively capturing
260
+ * any content loaded asynchronously that matches existing reveal set targets.
261
+ * @return {Object} The current ScrollReveal instance.
262
+ */
263
+ ScrollReveal.prototype.sync = function () {
264
+ if (sr.history.length && sr.isSupported()) {
265
+ for (var i = 0; i < sr.history.length; i++) {
266
+ var record = sr.history[i]
267
+ sr.reveal(record.target, record.config, record.interval, true)
268
+ }
269
+ _init()
270
+ } else {
271
+ console.log('ScrollReveal: sync failed, no reveals found.')
272
+ }
273
+ return sr
274
+ }
275
+
276
+ /**
277
+ * Private Methods
278
+ * ---------------
279
+ */
280
+
281
+ function _resolveContainer (config) {
282
+ if (config && config.container) {
283
+ if (typeof config.container === 'string') {
284
+ return window.document.documentElement.querySelector(config.container)
285
+ } else if (sr.tools.isNode(config.container)) {
286
+ return config.container
287
+ } else {
288
+ console.log('ScrollReveal: invalid container "' + config.container + '" provided.')
289
+ console.log('ScrollReveal: falling back to default container.')
290
+ }
291
+ }
292
+ return sr.defaults.container
293
+ }
294
+
295
+ /**
296
+ * check to see if a node or node list was passed in as the target,
297
+ * otherwise query the container using target as a selector.
298
+ *
299
+ * @param {Node|NodeList|string} [target] client input for reveal target.
300
+ * @param {Node} [container] parent element for selector queries.
301
+ *
302
+ * @return {array} elements to be revealed.
303
+ */
304
+ function _getRevealElements (target, container) {
305
+ if (typeof target === 'string') {
306
+ return Array.prototype.slice.call(container.querySelectorAll(target))
307
+ } else if (sr.tools.isNode(target)) {
308
+ return [target]
309
+ } else if (sr.tools.isNodeList(target)) {
310
+ return Array.prototype.slice.call(target)
311
+ }
312
+ return []
313
+ }
314
+
315
+ /**
316
+ * A consistent way of creating unique IDs.
317
+ * @returns {number}
318
+ */
319
+ function _nextUid () {
320
+ return ++sr.uid
321
+ }
322
+
323
+ function _configure (elem, config, container) {
324
+ // If a container was passed as a part of the config object,
325
+ // let’s overwrite it with the resolved container passed in.
326
+ if (config.container) config.container = container
327
+ // If the element hasn’t already been configured, let’s use a clone of the
328
+ // defaults extended by the configuration passed as the second argument.
329
+ if (!elem.config) {
330
+ elem.config = sr.tools.extendClone(sr.defaults, config)
331
+ } else {
332
+ // Otherwise, let’s use a clone of the existing element configuration extended
333
+ // by the configuration passed as the second argument.
334
+ elem.config = sr.tools.extendClone(elem.config, config)
335
+ }
336
+
337
+ // Infer CSS Transform axis from origin string.
338
+ if (elem.config.origin === 'top' || elem.config.origin === 'bottom') {
339
+ elem.config.axis = 'Y'
340
+ } else {
341
+ elem.config.axis = 'X'
342
+ }
343
+ }
344
+
345
+ function _style (elem) {
346
+ var computed = window.getComputedStyle(elem.domEl)
347
+
348
+ if (!elem.styles) {
349
+ elem.styles = {
350
+ transition: {},
351
+ transform: {},
352
+ computed: {}
353
+ }
354
+
355
+ // Capture any existing inline styles, and add our visibility override.
356
+ // --
357
+ // See section 4.2. in the Documentation:
358
+ // https://github.com/jlmakes/scrollreveal.js#42-improve-user-experience
359
+ elem.styles.inline = elem.domEl.getAttribute('style') || ''
360
+ elem.styles.inline += '; visibility: visible; '
361
+
362
+ // grab the elements existing opacity.
363
+ elem.styles.computed.opacity = computed.opacity
364
+
365
+ // grab the elements existing transitions.
366
+ if (!computed.transition || computed.transition === 'all 0s ease 0s') {
367
+ elem.styles.computed.transition = ''
368
+ } else {
369
+ elem.styles.computed.transition = computed.transition + ', '
370
+ }
371
+ }
372
+
373
+ // Create transition styles
374
+ elem.styles.transition.instant = _generateTransition(elem, 0)
375
+ elem.styles.transition.delayed = _generateTransition(elem, elem.config.delay)
376
+
377
+ // Generate transform styles, first with the webkit prefix.
378
+ elem.styles.transform.initial = ' -webkit-transform:'
379
+ elem.styles.transform.target = ' -webkit-transform:'
380
+ _generateTransform(elem)
381
+
382
+ // And again without any prefix.
383
+ elem.styles.transform.initial += 'transform:'
384
+ elem.styles.transform.target += 'transform:'
385
+ _generateTransform(elem)
386
+ }
387
+
388
+ function _generateTransition (elem, delay) {
389
+ var config = elem.config
390
+
391
+ return '-webkit-transition: ' + elem.styles.computed.transition +
392
+ '-webkit-transform ' + config.duration / 1000 + 's ' +
393
+ config.easing + ' ' +
394
+ delay / 1000 + 's, opacity ' +
395
+ config.duration / 1000 + 's ' +
396
+ config.easing + ' ' +
397
+ delay / 1000 + 's; ' +
398
+
399
+ 'transition: ' + elem.styles.computed.transition +
400
+ 'transform ' + config.duration / 1000 + 's ' +
401
+ config.easing + ' ' +
402
+ delay / 1000 + 's, opacity ' +
403
+ config.duration / 1000 + 's ' +
404
+ config.easing + ' ' +
405
+ delay / 1000 + 's; '
406
+ }
407
+
408
+ function _generateTransform (elem) {
409
+ var config = elem.config
410
+ var cssDistance
411
+ var transform = elem.styles.transform
412
+
413
+ // Let’s make sure our our pixel distances are negative for top and left.
414
+ // e.g. origin = 'top' and distance = '25px' starts at `top: -25px` in CSS.
415
+ if (config.origin === 'top' || config.origin === 'left') {
416
+ cssDistance = /^-/.test(config.distance)
417
+ ? config.distance.substr(1)
418
+ : '-' + config.distance
419
+ } else {
420
+ cssDistance = config.distance
421
+ }
422
+
423
+ if (parseInt(config.distance)) {
424
+ transform.initial += ' translate' + config.axis + '(' + cssDistance + ')'
425
+ transform.target += ' translate' + config.axis + '(0)'
426
+ }
427
+ if (config.scale) {
428
+ transform.initial += ' scale(' + config.scale + ')'
429
+ transform.target += ' scale(1)'
430
+ }
431
+ if (config.rotate.x) {
432
+ transform.initial += ' rotateX(' + config.rotate.x + 'deg)'
433
+ transform.target += ' rotateX(0)'
434
+ }
435
+ if (config.rotate.y) {
436
+ transform.initial += ' rotateY(' + config.rotate.y + 'deg)'
437
+ transform.target += ' rotateY(0)'
438
+ }
439
+ if (config.rotate.z) {
440
+ transform.initial += ' rotateZ(' + config.rotate.z + 'deg)'
441
+ transform.target += ' rotateZ(0)'
442
+ }
443
+ transform.initial += '; opacity: ' + config.opacity + ';'
444
+ transform.target += '; opacity: ' + elem.styles.computed.opacity + ';'
445
+ }
446
+
447
+ function _updateStore (elem) {
448
+ var container = elem.config.container
449
+
450
+ // If this element’s container isn’t already in the store, let’s add it.
451
+ if (container && sr.store.containers.indexOf(container) === -1) {
452
+ sr.store.containers.push(elem.config.container)
453
+ }
454
+
455
+ // Update the element stored with our new element.
456
+ sr.store.elements[elem.id] = elem
457
+ }
458
+
459
+ function _record (target, config, interval) {
460
+ // Save the `reveal()` arguments that triggered this `_record()` call, so we
461
+ // can re-trace our steps when calling the `sync()` method.
462
+ var record = {
463
+ target: target,
464
+ config: config,
465
+ interval: interval
466
+ }
467
+ sr.history.push(record)
468
+ }
469
+
470
+ function _init () {
471
+ if (sr.isSupported()) {
472
+ // Initial animate call triggers valid reveal animations on first load.
473
+ // Subsequent animate calls are made inside the event handler.
474
+ _animate()
475
+
476
+ // Then we loop through all container nodes in the store and bind event
477
+ // listeners to each.
478
+ for (var i = 0; i < sr.store.containers.length; i++) {
479
+ sr.store.containers[i].addEventListener('scroll', _handler)
480
+ sr.store.containers[i].addEventListener('resize', _handler)
481
+ }
482
+
483
+ // Let’s also do a one-time binding of window event listeners.
484
+ if (!sr.initialized) {
485
+ window.addEventListener('scroll', _handler)
486
+ window.addEventListener('resize', _handler)
487
+ sr.initialized = true
488
+ }
489
+ }
490
+ return sr
491
+ }
492
+
493
+ function _handler () {
494
+ _requestAnimationFrame(_animate)
495
+ }
496
+
497
+ function _setActiveSequences () {
498
+ var active
499
+ var elem
500
+ var elemId
501
+ var sequence
502
+
503
+ // Loop through all sequences
504
+ sr.tools.forOwn(sr.sequences, function (sequenceId) {
505
+ sequence = sr.sequences[sequenceId]
506
+ active = false
507
+
508
+ // For each sequenced elemenet, let’s check visibility and if
509
+ // any are visible, set it’s sequence to active.
510
+ for (var i = 0; i < sequence.elemIds.length; i++) {
511
+ elemId = sequence.elemIds[i]
512
+ elem = sr.store.elements[elemId]
513
+ if (_isElemVisible(elem) && !active) {
514
+ active = true
515
+ }
516
+ }
517
+
518
+ sequence.active = active
519
+ })
520
+ }
521
+
522
+ function _animate () {
523
+ var delayed
524
+ var elem
525
+
526
+ _setActiveSequences()
527
+
528
+ // Loop through all elements in the store
529
+ sr.tools.forOwn(sr.store.elements, function (elemId) {
530
+ elem = sr.store.elements[elemId]
531
+ delayed = _shouldUseDelay(elem)
532
+
533
+ // Let’s see if we should revealand if so,
534
+ // trigger the `beforeReveal` callback and
535
+ // determine whether or not to use delay.
536
+ if (_shouldReveal(elem)) {
537
+ elem.config.beforeReveal(elem.domEl)
538
+ if (delayed) {
539
+ elem.domEl.setAttribute('style',
540
+ elem.styles.inline +
541
+ elem.styles.transform.target +
542
+ elem.styles.transition.delayed
543
+ )
544
+ } else {
545
+ elem.domEl.setAttribute('style',
546
+ elem.styles.inline +
547
+ elem.styles.transform.target +
548
+ elem.styles.transition.instant
549
+ )
550
+ }
551
+
552
+ // Let’s queue the `afterReveal` callback
553
+ // and mark the element as seen and revealing.
554
+ _queueCallback('reveal', elem, delayed)
555
+ elem.revealing = true
556
+ elem.seen = true
557
+
558
+ if (elem.sequence) {
559
+ _queueNextInSequence(elem, delayed)
560
+ }
561
+ } else if (_shouldReset(elem)) {
562
+ //Otherwise reset our element and
563
+ // trigger the `beforeReset` callback.
564
+ elem.config.beforeReset(elem.domEl)
565
+ elem.domEl.setAttribute('style',
566
+ elem.styles.inline +
567
+ elem.styles.transform.initial +
568
+ elem.styles.transition.instant
569
+ )
570
+ // And queue the `afterReset` callback.
571
+ _queueCallback('reset', elem)
572
+ elem.revealing = false
573
+ }
574
+ })
575
+ }
576
+
577
+ function _queueNextInSequence (elem, delayed) {
578
+ var elapsed = 0
579
+ var delay = 0
580
+ var sequence = sr.sequences[elem.sequence.id]
581
+
582
+ // We’re processing a sequenced element, so let's block other elements in this sequence.
583
+ sequence.blocked = true
584
+
585
+ // Since we’re triggering animations a part of a sequence after animations on first load,
586
+ // we need to check for that condition and explicitly add the delay to our timer.
587
+ if (delayed && elem.config.useDelay === 'onload') {
588
+ delay = elem.config.delay
589
+ }
590
+
591
+ // If a sequence timer is already running, capture the elapsed time and clear it.
592
+ if (elem.sequence.timer) {
593
+ elapsed = Math.abs(elem.sequence.timer.started - new Date())
594
+ window.clearTimeout(elem.sequence.timer)
595
+ }
596
+
597
+ // Start a new timer.
598
+ elem.sequence.timer = { started: new Date() }
599
+ elem.sequence.timer.clock = window.setTimeout(function () {
600
+ // Sequence interval has passed, so unblock the sequence and re-run the handler.
601
+ sequence.blocked = false
602
+ elem.sequence.timer = null
603
+ _handler()
604
+ }, Math.abs(sequence.interval) + delay - elapsed)
605
+ }
606
+
607
+ function _queueCallback (type, elem, delayed) {
608
+ var elapsed = 0
609
+ var duration = 0
610
+ var callback = 'after'
611
+
612
+ // Check which callback we’re working with.
613
+ switch (type) {
614
+ case 'reveal':
615
+ duration = elem.config.duration
616
+ if (delayed) {
617
+ duration += elem.config.delay
618
+ }
619
+ callback += 'Reveal'
620
+ break
621
+
622
+ case 'reset':
623
+ duration = elem.config.duration
624
+ callback += 'Reset'
625
+ break
626
+ }
627
+
628
+ // If a timer is already running, capture the elapsed time and clear it.
629
+ if (elem.timer) {
630
+ elapsed = Math.abs(elem.timer.started - new Date())
631
+ window.clearTimeout(elem.timer.clock)
632
+ }
633
+
634
+ // Start a new timer.
635
+ elem.timer = { started: new Date() }
636
+ elem.timer.clock = window.setTimeout(function () {
637
+ // The timer completed, so let’s fire the callback and null the timer.
638
+ elem.config[callback](elem.domEl)
639
+ elem.timer = null
640
+ }, duration - elapsed)
641
+ }
642
+
643
+ function _shouldReveal (elem) {
644
+ if (elem.sequence) {
645
+ var sequence = sr.sequences[elem.sequence.id]
646
+ return sequence.active &&
647
+ !sequence.blocked &&
648
+ !elem.revealing &&
649
+ !elem.disabled
650
+ }
651
+ return _isElemVisible(elem) &&
652
+ !elem.revealing &&
653
+ !elem.disabled
654
+ }
655
+
656
+ function _shouldUseDelay (elem) {
657
+ var config = elem.config.useDelay
658
+ return config === 'always' ||
659
+ (config === 'onload' && !sr.initialized) ||
660
+ (config === 'once' && !elem.seen)
661
+ }
662
+
663
+ function _shouldReset (elem) {
664
+ if (elem.sequence) {
665
+ var sequence = sr.sequences[elem.sequence.id]
666
+ return !sequence.active &&
667
+ elem.config.reset &&
668
+ elem.revealing &&
669
+ !elem.disabled
670
+ }
671
+ return !_isElemVisible(elem) &&
672
+ elem.config.reset &&
673
+ elem.revealing &&
674
+ !elem.disabled
675
+ }
676
+
677
+ function _getContainer (container) {
678
+ return {
679
+ width: container.clientWidth,
680
+ height: container.clientHeight
681
+ }
682
+ }
683
+
684
+ function _getScrolled (container) {
685
+ // Return the container scroll values, plus the its offset.
686
+ if (container && container !== window.document.documentElement) {
687
+ var offset = _getOffset(container)
688
+ return {
689
+ x: container.scrollLeft + offset.left,
690
+ y: container.scrollTop + offset.top
691
+ }
692
+ } else {
693
+ // Otherwise, default to the window object’s scroll values.
694
+ return {
695
+ x: window.pageXOffset,
696
+ y: window.pageYOffset
697
+ }
698
+ }
699
+ }
700
+
701
+ function _getOffset (domEl) {
702
+ var offsetTop = 0
703
+ var offsetLeft = 0
704
+
705
+ // Grab the element’s dimensions.
706
+ var offsetHeight = domEl.offsetHeight
707
+ var offsetWidth = domEl.offsetWidth
708
+
709
+ // Now calculate the distance between the element and its parent, then
710
+ // again for the parent to its parent, and again etc... until we have the
711
+ // total distance of the element to the document’s top and left origin.
712
+ do {
713
+ if (!isNaN(domEl.offsetTop)) {
714
+ offsetTop += domEl.offsetTop
715
+ }
716
+ if (!isNaN(domEl.offsetLeft)) {
717
+ offsetLeft += domEl.offsetLeft
718
+ }
719
+ domEl = domEl.offsetParent
720
+ } while (domEl)
721
+
722
+ return {
723
+ top: offsetTop,
724
+ left: offsetLeft,
725
+ height: offsetHeight,
726
+ width: offsetWidth
727
+ }
728
+ }
729
+
730
+ function _isElemVisible (elem) {
731
+ var offset = _getOffset(elem.domEl)
732
+ var container = _getContainer(elem.config.container)
733
+ var scrolled = _getScrolled(elem.config.container)
734
+ var vF = elem.config.viewFactor
735
+
736
+ // Define the element geometry.
737
+ var elemHeight = offset.height
738
+ var elemWidth = offset.width
739
+ var elemTop = offset.top
740
+ var elemLeft = offset.left
741
+ var elemBottom = elemTop + elemHeight
742
+ var elemRight = elemLeft + elemWidth
743
+
744
+ return confirmBounds() || isPositionFixed()
745
+
746
+ function confirmBounds () {
747
+ // Define the element’s functional boundaries using its view factor.
748
+ var top = elemTop + elemHeight * vF
749
+ var left = elemLeft + elemWidth * vF
750
+ var bottom = elemBottom - elemHeight * vF
751
+ var right = elemRight - elemWidth * vF
752
+
753
+ // Define the container functional boundaries using its view offset.
754
+ var viewTop = scrolled.y + elem.config.viewOffset.top
755
+ var viewLeft = scrolled.x + elem.config.viewOffset.left
756
+ var viewBottom = scrolled.y - elem.config.viewOffset.bottom + container.height
757
+ var viewRight = scrolled.x - elem.config.viewOffset.right + container.width
758
+
759
+ return top < viewBottom &&
760
+ bottom > viewTop &&
761
+ left > viewLeft &&
762
+ right < viewRight
763
+ }
764
+
765
+ function isPositionFixed () {
766
+ return (window.getComputedStyle(elem.domEl).position === 'fixed')
767
+ }
768
+ }
769
+
770
+ /**
771
+ * Utilities
772
+ * ---------
773
+ */
774
+
775
+ function Tools () {}
776
+
777
+ Tools.prototype.isObject = function (object) {
778
+ return object !== null && typeof object === 'object' && object.constructor === Object
779
+ }
780
+
781
+ Tools.prototype.isNode = function (object) {
782
+ return typeof window.Node === 'object'
783
+ ? object instanceof window.Node
784
+ : object && typeof object === 'object' &&
785
+ typeof object.nodeType === 'number' &&
786
+ typeof object.nodeName === 'string'
787
+ }
788
+
789
+ Tools.prototype.isNodeList = function (object) {
790
+ var prototypeToString = Object.prototype.toString.call(object)
791
+ var regex = /^\[object (HTMLCollection|NodeList|Object)\]$/
792
+
793
+ return typeof window.NodeList === 'object'
794
+ ? object instanceof window.NodeList
795
+ : object && typeof object === 'object' &&
796
+ regex.test(prototypeToString) &&
797
+ typeof object.length === 'number' &&
798
+ (object.length === 0 || this.isNode(object[0]))
799
+ }
800
+
801
+ Tools.prototype.forOwn = function (object, callback) {
802
+ if (!this.isObject(object)) {
803
+ throw new TypeError('Expected "object", but received "' + typeof object + '".')
804
+ } else {
805
+ for (var property in object) {
806
+ if (object.hasOwnProperty(property)) {
807
+ callback(property)
808
+ }
809
+ }
810
+ }
811
+ }
812
+
813
+ Tools.prototype.extend = function (target, source) {
814
+ this.forOwn(source, function (property) {
815
+ if (this.isObject(source[property])) {
816
+ if (!target[property] || !this.isObject(target[property])) {
817
+ target[property] = {}
818
+ }
819
+ this.extend(target[property], source[property])
820
+ } else {
821
+ target[property] = source[property]
822
+ }
823
+ }.bind(this))
824
+ return target
825
+ }
826
+
827
+ Tools.prototype.extendClone = function (target, source) {
828
+ return this.extend(this.extend({}, target), source)
829
+ }
830
+
831
+ Tools.prototype.isMobile = function () {
832
+ return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
833
+ }
834
+
835
+ /**
836
+ * Polyfills
837
+ * --------
838
+ */
839
+
840
+ _requestAnimationFrame = window.requestAnimationFrame ||
841
+ window.webkitRequestAnimationFrame ||
842
+ window.mozRequestAnimationFrame ||
843
+ function (callback) {
844
+ window.setTimeout(callback, 1000 / 60)
845
+ }
846
+
847
+ /**
848
+ * Module Wrapper
849
+ * --------------
850
+ */
851
+ if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
852
+ define(function () {
853
+ return ScrollReveal
854
+ })
855
+ } else if (typeof module !== 'undefined' && module.exports) {
856
+ module.exports = ScrollReveal
857
+ } else {
858
+ window.ScrollReveal = ScrollReveal
859
+ }
860
+ })();