jumbo-jekyll-theme 3.0.40 → 3.0.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +4 -4
  2. metadata +17 -246
  3. data/LICENSE.txt +0 -21
  4. data/README.md +0 -26
  5. data/_config.yml +0 -127
  6. data/_data/authors.yml +0 -7
  7. data/_data/footer.yml +0 -57
  8. data/_data/nav.yml +0 -75
  9. data/_data/news.yaml +0 -230
  10. data/_data/settings.yml +0 -93
  11. data/_data/sidebar-nav.yml +0 -23
  12. data/_data/sticky-tab-bar.yml +0 -29
  13. data/_includes/author-pagination.html +0 -36
  14. data/_includes/authors-posts.html +0 -49
  15. data/_includes/breadcrumb.html +0 -95
  16. data/_includes/carousel-header.html +0 -15
  17. data/_includes/css.html +0 -11
  18. data/_includes/custom.html +0 -1
  19. data/_includes/display-blog-posts.html +0 -67
  20. data/_includes/disqus-comments.html +0 -8
  21. data/_includes/footer.html +0 -68
  22. data/_includes/github-edit.html +0 -60
  23. data/_includes/google-analytics-script.html +0 -9
  24. data/_includes/gtm-noscript.html +0 -5
  25. data/_includes/gtm-script.html +0 -7
  26. data/_includes/head.html +0 -44
  27. data/_includes/hero-banner.html +0 -21
  28. data/_includes/image.html +0 -6
  29. data/_includes/javascript.html +0 -9
  30. data/_includes/jumbotron.html +0 -71
  31. data/_includes/linaro-404.html +0 -10
  32. data/_includes/linaro-svg.html +0 -1
  33. data/_includes/media.html +0 -11
  34. data/_includes/members.html +0 -63
  35. data/_includes/nav.html +0 -132
  36. data/_includes/newsletter-script.html +0 -30
  37. data/_includes/owl-carousel-homepage.html +0 -103
  38. data/_includes/pagination-authors.html +0 -36
  39. data/_includes/pagination-news.html +0 -36
  40. data/_includes/pagination.html +0 -36
  41. data/_includes/post-sidebar.html +0 -74
  42. data/_includes/post-tags.html +0 -9
  43. data/_includes/read_time.html +0 -2
  44. data/_includes/schema.html +0 -50
  45. data/_includes/sidebar.html +0 -55
  46. data/_includes/sticky-tab-bar.html +0 -61
  47. data/_includes/thumbnail_image.html +0 -10
  48. data/_includes/universal-nav.html +0 -28
  49. data/_includes/youtube.html +0 -7
  50. data/_layouts/author-layout.html +0 -13
  51. data/_layouts/author.html +0 -7
  52. data/_layouts/container-breadcrumb-tabs.html +0 -10
  53. data/_layouts/container-breadcrumb.html +0 -19
  54. data/_layouts/container.html +0 -8
  55. data/_layouts/default.html +0 -27
  56. data/_layouts/error.html +0 -23
  57. data/_layouts/jumbotron-container.html +0 -19
  58. data/_layouts/jumbotron.html +0 -12
  59. data/_layouts/post-index.html +0 -18
  60. data/_layouts/post-old.html +0 -70
  61. data/_layouts/post.html +0 -149
  62. data/_layouts/redirect.html +0 -11
  63. data/_sass/_bootstrap-compass.scss +0 -9
  64. data/_sass/_bootstrap-mincer.scss +0 -19
  65. data/_sass/_bootstrap-sprockets.scss +0 -9
  66. data/_sass/_bootstrap.scss +0 -56
  67. data/_sass/app/blog.scss +0 -59
  68. data/_sass/app/contact.scss +0 -3
  69. data/_sass/app/custom.scss +0 -1
  70. data/_sass/app/overrides.scss +0 -37
  71. data/_sass/app/search.scss +0 -1
  72. data/_sass/blog.scss +0 -9
  73. data/_sass/bootstrap/_alerts.scss +0 -73
  74. data/_sass/bootstrap/_badges.scss +0 -68
  75. data/_sass/bootstrap/_breadcrumbs.scss +0 -28
  76. data/_sass/bootstrap/_button-groups.scss +0 -244
  77. data/_sass/bootstrap/_buttons.scss +0 -168
  78. data/_sass/bootstrap/_carousel.scss +0 -270
  79. data/_sass/bootstrap/_close.scss +0 -36
  80. data/_sass/bootstrap/_code.scss +0 -69
  81. data/_sass/bootstrap/_component-animations.scss +0 -37
  82. data/_sass/bootstrap/_dropdowns.scss +0 -216
  83. data/_sass/bootstrap/_forms.scss +0 -617
  84. data/_sass/bootstrap/_glyphicons.scss +0 -307
  85. data/_sass/bootstrap/_grid.scss +0 -84
  86. data/_sass/bootstrap/_input-groups.scss +0 -171
  87. data/_sass/bootstrap/_jumbotron.scss +0 -54
  88. data/_sass/bootstrap/_labels.scss +0 -66
  89. data/_sass/bootstrap/_list-group.scss +0 -130
  90. data/_sass/bootstrap/_media.scss +0 -66
  91. data/_sass/bootstrap/_mixins.scss +0 -40
  92. data/_sass/bootstrap/_modals.scss +0 -150
  93. data/_sass/bootstrap/_navbar.scss +0 -662
  94. data/_sass/bootstrap/_navs.scss +0 -242
  95. data/_sass/bootstrap/_normalize.scss +0 -424
  96. data/_sass/bootstrap/_pager.scss +0 -54
  97. data/_sass/bootstrap/_pagination.scss +0 -89
  98. data/_sass/bootstrap/_panels.scss +0 -271
  99. data/_sass/bootstrap/_popovers.scss +0 -131
  100. data/_sass/bootstrap/_print.scss +0 -101
  101. data/_sass/bootstrap/_progress-bars.scss +0 -87
  102. data/_sass/bootstrap/_responsive-embed.scss +0 -35
  103. data/_sass/bootstrap/_responsive-utilities.scss +0 -179
  104. data/_sass/bootstrap/_scaffolding.scss +0 -161
  105. data/_sass/bootstrap/_tables.scss +0 -234
  106. data/_sass/bootstrap/_theme.scss +0 -291
  107. data/_sass/bootstrap/_thumbnails.scss +0 -38
  108. data/_sass/bootstrap/_tooltip.scss +0 -101
  109. data/_sass/bootstrap/_type.scss +0 -298
  110. data/_sass/bootstrap/_utilities.scss +0 -55
  111. data/_sass/bootstrap/_variables.scss +0 -932
  112. data/_sass/bootstrap/_wells.scss +0 -29
  113. data/_sass/bootstrap/mixins/_alerts.scss +0 -14
  114. data/_sass/bootstrap/mixins/_background-variant.scss +0 -12
  115. data/_sass/bootstrap/mixins/_border-radius.scss +0 -18
  116. data/_sass/bootstrap/mixins/_buttons.scss +0 -65
  117. data/_sass/bootstrap/mixins/_center-block.scss +0 -7
  118. data/_sass/bootstrap/mixins/_clearfix.scss +0 -22
  119. data/_sass/bootstrap/mixins/_forms.scss +0 -88
  120. data/_sass/bootstrap/mixins/_gradients.scss +0 -58
  121. data/_sass/bootstrap/mixins/_grid-framework.scss +0 -81
  122. data/_sass/bootstrap/mixins/_grid.scss +0 -122
  123. data/_sass/bootstrap/mixins/_hide-text.scss +0 -21
  124. data/_sass/bootstrap/mixins/_image.scss +0 -33
  125. data/_sass/bootstrap/mixins/_labels.scss +0 -12
  126. data/_sass/bootstrap/mixins/_list-group.scss +0 -32
  127. data/_sass/bootstrap/mixins/_nav-divider.scss +0 -10
  128. data/_sass/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  129. data/_sass/bootstrap/mixins/_opacity.scss +0 -8
  130. data/_sass/bootstrap/mixins/_pagination.scss +0 -24
  131. data/_sass/bootstrap/mixins/_panels.scss +0 -24
  132. data/_sass/bootstrap/mixins/_progress-bar.scss +0 -10
  133. data/_sass/bootstrap/mixins/_reset-filter.scss +0 -8
  134. data/_sass/bootstrap/mixins/_reset-text.scss +0 -18
  135. data/_sass/bootstrap/mixins/_resize.scss +0 -6
  136. data/_sass/bootstrap/mixins/_responsive-visibility.scss +0 -21
  137. data/_sass/bootstrap/mixins/_size.scss +0 -10
  138. data/_sass/bootstrap/mixins/_tab-focus.scss +0 -9
  139. data/_sass/bootstrap/mixins/_table-row.scss +0 -28
  140. data/_sass/bootstrap/mixins/_text-emphasis.scss +0 -12
  141. data/_sass/bootstrap/mixins/_text-overflow.scss +0 -8
  142. data/_sass/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  143. data/_sass/core.scss +0 -18
  144. data/_sass/core/animations.scss +0 -125
  145. data/_sass/core/blog.scss +0 -438
  146. data/_sass/core/breadcrumb.scss +0 -98
  147. data/_sass/core/carousel-header.scss +0 -91
  148. data/_sass/core/carousel-styles.scss +0 -4
  149. data/_sass/core/carousel.scss +0 -312
  150. data/_sass/core/cookieconsent.scss +0 -39
  151. data/_sass/core/critical.scss +0 -0
  152. data/_sass/core/custom.scss +0 -3
  153. data/_sass/core/error.scss +0 -186
  154. data/_sass/core/fa.scss +0 -2336
  155. data/_sass/core/featherlight.scss +0 -158
  156. data/_sass/core/flipclock.scss +0 -434
  157. data/_sass/core/fly.scss +0 -10
  158. data/_sass/core/font-awesome.min.scss +0 -4
  159. data/_sass/core/fonts.scss +0 -3
  160. data/_sass/core/footer.scss +0 -146
  161. data/_sass/core/forms.scss +0 -3
  162. data/_sass/core/homepage.scss +0 -19
  163. data/_sass/core/jumbotron.scss +0 -116
  164. data/_sass/core/lightbox.scss +0 -212
  165. data/_sass/core/nav.scss +0 -958
  166. data/_sass/core/owl.carousel.min.scss +0 -6
  167. data/_sass/core/owl.theme.default.min.scss +0 -6
  168. data/_sass/core/social-media-icons.scss +0 -67
  169. data/_sass/core/syntax.scss +0 -65
  170. data/_sass/core/tables.scss +0 -145
  171. data/_sass/core/theme.scss +0 -714
  172. data/_sass/core/universal-nav.scss +0 -161
  173. data/_sass/core/youtube-lazy.scss +0 -51
  174. data/_sass/core/youtube.scss +0 -65
  175. data/_sass/home.scss +0 -2
  176. data/assets/css/main-blog.scss +0 -19
  177. data/assets/css/main-error.scss +0 -14
  178. data/assets/css/main-search.scss +0 -13
  179. data/assets/css/main.scss +0 -12
  180. data/assets/fonts/fontawesome-webfont.eot +0 -0
  181. data/assets/fonts/fontawesome-webfont.svg +0 -2671
  182. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  183. data/assets/fonts/fontawesome-webfont.woff +0 -0
  184. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  185. data/assets/fonts/fontello.eot +0 -0
  186. data/assets/fonts/fontello.svg +0 -44
  187. data/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  188. data/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  189. data/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  190. data/assets/fonts/lato-regular/LICENSE.txt +0 -93
  191. data/assets/fonts/lato-regular/Lato-regular.eot +0 -0
  192. data/assets/fonts/lato-regular/Lato-regular.svg +0 -435
  193. data/assets/fonts/lato-regular/Lato-regular.ttf +0 -0
  194. data/assets/fonts/lato-regular/Lato-regular.woff +0 -0
  195. data/assets/fonts/lato-regular/Lato-regular.woff2 +0 -0
  196. data/assets/images/Linaro-Logo.svg +0 -1
  197. data/assets/images/Linaro-Logo_light.png +0 -0
  198. data/assets/images/Linaro-Logo_standard.svg +0 -1
  199. data/assets/images/Linaro-Sprinkle.png +0 -0
  200. data/assets/images/avatar-placeholder.png +0 -0
  201. data/assets/images/breadcrumb-image.jpg +0 -0
  202. data/assets/images/close.png +0 -0
  203. data/assets/images/content/background-image1.jpg +0 -0
  204. data/assets/images/content/background-image2.png +0 -0
  205. data/assets/images/content/background-image3.jpg +0 -0
  206. data/assets/images/favicon.ico +0 -0
  207. data/assets/images/favicon.png +0 -0
  208. data/assets/images/loading.gif +0 -0
  209. data/assets/images/next.png +0 -0
  210. data/assets/images/owl.video.play.png +0 -0
  211. data/assets/images/placeholder.png +0 -0
  212. data/assets/images/prev.png +0 -0
  213. data/assets/images/social-media-image.png +0 -0
  214. data/assets/js/app/blog-comments.js +0 -50
  215. data/assets/js/app/custom.js +0 -0
  216. data/assets/js/app/facebook.js +0 -8
  217. data/assets/js/app/fly.js +0 -45
  218. data/assets/js/app/home.js +0 -46
  219. data/assets/js/app/main.js +0 -163
  220. data/assets/js/app/scroll-to-anchors.js +0 -10
  221. data/assets/js/app/search.js +0 -29
  222. data/assets/js/app/sticky-tab-bar.js +0 -71
  223. data/assets/js/app/tables.js +0 -35
  224. data/assets/js/app/youtube-lazy.js +0 -25
  225. data/assets/js/package-blog.js +0 -14
  226. data/assets/js/package-extended.js +0 -15
  227. data/assets/js/package-home.js +0 -14
  228. data/assets/js/package-main.js +0 -14
  229. data/assets/js/package-search.js +0 -10
  230. data/assets/js/vendor/bootstrap.js +0 -2377
  231. data/assets/js/vendor/cognito.js +0 -11
  232. data/assets/js/vendor/cookieconsent.js +0 -1495
  233. data/assets/js/vendor/disqus-loader.js +0 -87
  234. data/assets/js/vendor/featherlight.js +0 -641
  235. data/assets/js/vendor/jquery.js +0 -10364
  236. data/assets/js/vendor/jquery.rss.js +0 -333
  237. data/assets/js/vendor/jquery.validate.js +0 -1601
  238. data/assets/js/vendor/lazysizes.js +0 -698
  239. data/assets/js/vendor/loadCSS.js +0 -35
  240. data/assets/js/vendor/ls.unveilhooks.js +0 -145
  241. data/assets/js/vendor/mc.js +0 -255
  242. data/assets/js/vendor/owl.carousel.js +0 -3475
  243. data/assets/js/vendor/picturefill.js +0 -1471
  244. data/assets/js/vendor/shuffle.js +0 -2004
  245. data/robots.txt +0 -9
@@ -1,698 +0,0 @@
1
- (function(window, factory) {
2
- var lazySizes = factory(window, window.document);
3
- window.lazySizes = lazySizes;
4
- if(typeof module == 'object' && module.exports){
5
- module.exports = lazySizes;
6
- }
7
- }(window, function l(window, document) {
8
- 'use strict';
9
- /*jshint eqnull:true */
10
- if(!document.getElementsByClassName){return;}
11
-
12
- var lazysizes, lazySizesConfig;
13
-
14
- var docElem = document.documentElement;
15
-
16
- var Date = window.Date;
17
-
18
- var supportPicture = window.HTMLPictureElement;
19
-
20
- var _addEventListener = 'addEventListener';
21
-
22
- var _getAttribute = 'getAttribute';
23
-
24
- var addEventListener = window[_addEventListener];
25
-
26
- var setTimeout = window.setTimeout;
27
-
28
- var requestAnimationFrame = window.requestAnimationFrame || setTimeout;
29
-
30
- var requestIdleCallback = window.requestIdleCallback;
31
-
32
- var regPicture = /^picture$/i;
33
-
34
- var loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];
35
-
36
- var regClassCache = {};
37
-
38
- var forEach = Array.prototype.forEach;
39
-
40
- var hasClass = function(ele, cls) {
41
- if(!regClassCache[cls]){
42
- regClassCache[cls] = new RegExp('(\\s|^)'+cls+'(\\s|$)');
43
- }
44
- return regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];
45
- };
46
-
47
- var addClass = function(ele, cls) {
48
- if (!hasClass(ele, cls)){
49
- ele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);
50
- }
51
- };
52
-
53
- var removeClass = function(ele, cls) {
54
- var reg;
55
- if ((reg = hasClass(ele,cls))) {
56
- ele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));
57
- }
58
- };
59
-
60
- var addRemoveLoadEvents = function(dom, fn, add){
61
- var action = add ? _addEventListener : 'removeEventListener';
62
- if(add){
63
- addRemoveLoadEvents(dom, fn);
64
- }
65
- loadEvents.forEach(function(evt){
66
- dom[action](evt, fn);
67
- });
68
- };
69
-
70
- var triggerEvent = function(elem, name, detail, noBubbles, noCancelable){
71
- var event = document.createEvent('CustomEvent');
72
-
73
- if(!detail){
74
- detail = {};
75
- }
76
-
77
- detail.instance = lazysizes;
78
-
79
- event.initCustomEvent(name, !noBubbles, !noCancelable, detail);
80
-
81
- elem.dispatchEvent(event);
82
- return event;
83
- };
84
-
85
- var updatePolyfill = function (el, full){
86
- var polyfill;
87
- if( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){
88
- polyfill({reevaluate: true, elements: [el]});
89
- } else if(full && full.src){
90
- el.src = full.src;
91
- }
92
- };
93
-
94
- var getCSS = function (elem, style){
95
- return (getComputedStyle(elem, null) || {})[style];
96
- };
97
-
98
- var getWidth = function(elem, parent, width){
99
- width = width || elem.offsetWidth;
100
-
101
- while(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){
102
- width = parent.offsetWidth;
103
- parent = parent.parentNode;
104
- }
105
-
106
- return width;
107
- };
108
-
109
- var rAF = (function(){
110
- var running, waiting;
111
- var firstFns = [];
112
- var secondFns = [];
113
- var fns = firstFns;
114
-
115
- var run = function(){
116
- var runFns = fns;
117
-
118
- fns = firstFns.length ? secondFns : firstFns;
119
-
120
- running = true;
121
- waiting = false;
122
-
123
- while(runFns.length){
124
- runFns.shift()();
125
- }
126
-
127
- running = false;
128
- };
129
-
130
- var rafBatch = function(fn, queue){
131
- if(running && !queue){
132
- fn.apply(this, arguments);
133
- } else {
134
- fns.push(fn);
135
-
136
- if(!waiting){
137
- waiting = true;
138
- (document.hidden ? setTimeout : requestAnimationFrame)(run);
139
- }
140
- }
141
- };
142
-
143
- rafBatch._lsFlush = run;
144
-
145
- return rafBatch;
146
- })();
147
-
148
- var rAFIt = function(fn, simple){
149
- return simple ?
150
- function() {
151
- rAF(fn);
152
- } :
153
- function(){
154
- var that = this;
155
- var args = arguments;
156
- rAF(function(){
157
- fn.apply(that, args);
158
- });
159
- }
160
- ;
161
- };
162
-
163
- var throttle = function(fn){
164
- var running;
165
- var lastTime = 0;
166
- var gDelay = lazySizesConfig.throttleDelay;
167
- var rICTimeout = lazySizesConfig.ricTimeout;
168
- var run = function(){
169
- running = false;
170
- lastTime = Date.now();
171
- fn();
172
- };
173
- var idleCallback = requestIdleCallback && rICTimeout > 49 ?
174
- function(){
175
- requestIdleCallback(run, {timeout: rICTimeout});
176
-
177
- if(rICTimeout !== lazySizesConfig.ricTimeout){
178
- rICTimeout = lazySizesConfig.ricTimeout;
179
- }
180
- } :
181
- rAFIt(function(){
182
- setTimeout(run);
183
- }, true)
184
- ;
185
-
186
- return function(isPriority){
187
- var delay;
188
-
189
- if((isPriority = isPriority === true)){
190
- rICTimeout = 33;
191
- }
192
-
193
- if(running){
194
- return;
195
- }
196
-
197
- running = true;
198
-
199
- delay = gDelay - (Date.now() - lastTime);
200
-
201
- if(delay < 0){
202
- delay = 0;
203
- }
204
-
205
- if(isPriority || delay < 9){
206
- idleCallback();
207
- } else {
208
- setTimeout(idleCallback, delay);
209
- }
210
- };
211
- };
212
-
213
- //based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html
214
- var debounce = function(func) {
215
- var timeout, timestamp;
216
- var wait = 99;
217
- var run = function(){
218
- timeout = null;
219
- func();
220
- };
221
- var later = function() {
222
- var last = Date.now() - timestamp;
223
-
224
- if (last < wait) {
225
- setTimeout(later, wait - last);
226
- } else {
227
- (requestIdleCallback || run)(run);
228
- }
229
- };
230
-
231
- return function() {
232
- timestamp = Date.now();
233
-
234
- if (!timeout) {
235
- timeout = setTimeout(later, wait);
236
- }
237
- };
238
- };
239
-
240
- (function(){
241
- var prop;
242
-
243
- var lazySizesDefaults = {
244
- lazyClass: 'lazyload',
245
- loadedClass: 'lazyloaded',
246
- loadingClass: 'lazyloading',
247
- preloadClass: 'lazypreload',
248
- errorClass: 'lazyerror',
249
- //strictClass: 'lazystrict',
250
- autosizesClass: 'lazyautosizes',
251
- srcAttr: 'data-src',
252
- srcsetAttr: 'data-srcset',
253
- sizesAttr: 'data-sizes',
254
- //preloadAfterLoad: false,
255
- minSize: 40,
256
- customMedia: {},
257
- init: true,
258
- expFactor: 1.5,
259
- hFac: 0.8,
260
- loadMode: 2,
261
- loadHidden: true,
262
- ricTimeout: 0,
263
- throttleDelay: 125,
264
- };
265
-
266
- lazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};
267
-
268
- for(prop in lazySizesDefaults){
269
- if(!(prop in lazySizesConfig)){
270
- lazySizesConfig[prop] = lazySizesDefaults[prop];
271
- }
272
- }
273
-
274
- window.lazySizesConfig = lazySizesConfig;
275
-
276
- setTimeout(function(){
277
- if(lazySizesConfig.init){
278
- init();
279
- }
280
- });
281
- })();
282
-
283
- var loader = (function(){
284
- var preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;
285
-
286
- var eLvW, elvH, eLtop, eLleft, eLright, eLbottom;
287
-
288
- var defaultExpand, preloadExpand, hFac;
289
-
290
- var regImg = /^img$/i;
291
- var regIframe = /^iframe$/i;
292
-
293
- var supportScroll = ('onscroll' in window) && !(/glebot/.test(navigator.userAgent));
294
-
295
- var shrinkExpand = 0;
296
- var currentExpand = 0;
297
-
298
- var isLoading = 0;
299
- var lowRuns = -1;
300
-
301
- var resetPreloading = function(e){
302
- isLoading--;
303
- if(e && e.target){
304
- addRemoveLoadEvents(e.target, resetPreloading);
305
- }
306
-
307
- if(!e || isLoading < 0 || !e.target){
308
- isLoading = 0;
309
- }
310
- };
311
-
312
- var isNestedVisible = function(elem, elemExpand){
313
- var outerRect;
314
- var parent = elem;
315
- var visible = getCSS(document.body, 'visibility') == 'hidden' || getCSS(elem, 'visibility') != 'hidden';
316
-
317
- eLtop -= elemExpand;
318
- eLbottom += elemExpand;
319
- eLleft -= elemExpand;
320
- eLright += elemExpand;
321
-
322
- while(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){
323
- visible = ((getCSS(parent, 'opacity') || 1) > 0);
324
-
325
- if(visible && getCSS(parent, 'overflow') != 'visible'){
326
- outerRect = parent.getBoundingClientRect();
327
- visible = eLright > outerRect.left &&
328
- eLleft < outerRect.right &&
329
- eLbottom > outerRect.top - 1 &&
330
- eLtop < outerRect.bottom + 1
331
- ;
332
- }
333
- }
334
-
335
- return visible;
336
- };
337
-
338
- var checkElements = function() {
339
- var eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal, beforeExpandVal;
340
-
341
- var lazyloadElems = lazysizes.elements;
342
-
343
- if((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){
344
-
345
- i = 0;
346
-
347
- lowRuns++;
348
-
349
- if(preloadExpand == null){
350
- if(!('expand' in lazySizesConfig)){
351
- lazySizesConfig.expand = docElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370;
352
- }
353
-
354
- defaultExpand = lazySizesConfig.expand;
355
- preloadExpand = defaultExpand * lazySizesConfig.expFactor;
356
- }
357
-
358
- if(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){
359
- currentExpand = preloadExpand;
360
- lowRuns = 0;
361
- } else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){
362
- currentExpand = defaultExpand;
363
- } else {
364
- currentExpand = shrinkExpand;
365
- }
366
-
367
- for(; i < eLlen; i++){
368
-
369
- if(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}
370
-
371
- if(!supportScroll){unveilElement(lazyloadElems[i]);continue;}
372
-
373
- if(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){
374
- elemExpand = currentExpand;
375
- }
376
-
377
- if(beforeExpandVal !== elemExpand){
378
- eLvW = innerWidth + (elemExpand * hFac);
379
- elvH = innerHeight + elemExpand;
380
- elemNegativeExpand = elemExpand * -1;
381
- beforeExpandVal = elemExpand;
382
- }
383
-
384
- rect = lazyloadElems[i].getBoundingClientRect();
385
-
386
- if ((eLbottom = rect.bottom) >= elemNegativeExpand &&
387
- (eLtop = rect.top) <= elvH &&
388
- (eLright = rect.right) >= elemNegativeExpand * hFac &&
389
- (eLleft = rect.left) <= eLvW &&
390
- (eLbottom || eLright || eLleft || eLtop) &&
391
- (lazySizesConfig.loadHidden || getCSS(lazyloadElems[i], 'visibility') != 'hidden') &&
392
- ((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){
393
- unveilElement(lazyloadElems[i]);
394
- loadedSomething = true;
395
- if(isLoading > 9){break;}
396
- } else if(!loadedSomething && isCompleted && !autoLoadElem &&
397
- isLoading < 4 && lowRuns < 4 && loadMode > 2 &&
398
- (preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&
399
- (preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){
400
- autoLoadElem = preloadElems[0] || lazyloadElems[i];
401
- }
402
- }
403
-
404
- if(autoLoadElem && !loadedSomething){
405
- unveilElement(autoLoadElem);
406
- }
407
- }
408
- };
409
-
410
- var throttledCheckElements = throttle(checkElements);
411
-
412
- var switchLoadingClass = function(e){
413
- addClass(e.target, lazySizesConfig.loadedClass);
414
- removeClass(e.target, lazySizesConfig.loadingClass);
415
- addRemoveLoadEvents(e.target, rafSwitchLoadingClass);
416
- triggerEvent(e.target, 'lazyloaded');
417
- };
418
- var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);
419
- var rafSwitchLoadingClass = function(e){
420
- rafedSwitchLoadingClass({target: e.target});
421
- };
422
-
423
- var changeIframeSrc = function(elem, src){
424
- try {
425
- elem.contentWindow.location.replace(src);
426
- } catch(e){
427
- elem.src = src;
428
- }
429
- };
430
-
431
- var handleSources = function(source){
432
- var customMedia;
433
-
434
- var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);
435
-
436
- if( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){
437
- source.setAttribute('media', customMedia);
438
- }
439
-
440
- if(sourceSrcset){
441
- source.setAttribute('srcset', sourceSrcset);
442
- }
443
- };
444
-
445
- var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){
446
- var src, srcset, parent, isPicture, event, firesLoad;
447
-
448
- if(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){
449
-
450
- if(sizes){
451
- if(isAuto){
452
- addClass(elem, lazySizesConfig.autosizesClass);
453
- } else {
454
- elem.setAttribute('sizes', sizes);
455
- }
456
- }
457
-
458
- srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);
459
- src = elem[_getAttribute](lazySizesConfig.srcAttr);
460
-
461
- if(isImg) {
462
- parent = elem.parentNode;
463
- isPicture = parent && regPicture.test(parent.nodeName || '');
464
- }
465
-
466
- firesLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));
467
-
468
- event = {target: elem};
469
-
470
- if(firesLoad){
471
- addRemoveLoadEvents(elem, resetPreloading, true);
472
- clearTimeout(resetPreloadingTimer);
473
- resetPreloadingTimer = setTimeout(resetPreloading, 2500);
474
-
475
- addClass(elem, lazySizesConfig.loadingClass);
476
- addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);
477
- }
478
-
479
- if(isPicture){
480
- forEach.call(parent.getElementsByTagName('source'), handleSources);
481
- }
482
-
483
- if(srcset){
484
- elem.setAttribute('srcset', srcset);
485
- } else if(src && !isPicture){
486
- if(regIframe.test(elem.nodeName)){
487
- changeIframeSrc(elem, src);
488
- } else {
489
- elem.src = src;
490
- }
491
- }
492
-
493
- if(isImg && (srcset || isPicture)){
494
- updatePolyfill(elem, {src: src});
495
- }
496
- }
497
-
498
- if(elem._lazyRace){
499
- delete elem._lazyRace;
500
- }
501
- removeClass(elem, lazySizesConfig.lazyClass);
502
-
503
- rAF(function(){
504
- if( !firesLoad || (elem.complete && elem.naturalWidth > 1)){
505
- if(firesLoad){
506
- resetPreloading(event);
507
- } else {
508
- isLoading--;
509
- }
510
- switchLoadingClass(event);
511
- }
512
- }, true);
513
- });
514
-
515
- var unveilElement = function (elem){
516
- var detail;
517
-
518
- var isImg = regImg.test(elem.nodeName);
519
-
520
- //allow using sizes="auto", but don't use. it's invalid. Use data-sizes="auto" or a valid value for sizes instead (i.e.: sizes="80vw")
521
- var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));
522
- var isAuto = sizes == 'auto';
523
-
524
- if( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)){return;}
525
-
526
- detail = triggerEvent(elem, 'lazyunveilread').detail;
527
-
528
- if(isAuto){
529
- autoSizer.updateElem(elem, true, elem.offsetWidth);
530
- }
531
-
532
- elem._lazyRace = true;
533
- isLoading++;
534
-
535
- lazyUnveil(elem, detail, isAuto, sizes, isImg);
536
- };
537
-
538
- var onload = function(){
539
- if(isCompleted){return;}
540
- if(Date.now() - started < 999){
541
- setTimeout(onload, 999);
542
- return;
543
- }
544
- var afterScroll = debounce(function(){
545
- lazySizesConfig.loadMode = 3;
546
- throttledCheckElements();
547
- });
548
-
549
- isCompleted = true;
550
-
551
- lazySizesConfig.loadMode = 3;
552
-
553
- throttledCheckElements();
554
-
555
- addEventListener('scroll', function(){
556
- if(lazySizesConfig.loadMode == 3){
557
- lazySizesConfig.loadMode = 2;
558
- }
559
- afterScroll();
560
- }, true);
561
- };
562
-
563
- return {
564
- _: function(){
565
- started = Date.now();
566
-
567
- lazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);
568
- preloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);
569
- hFac = lazySizesConfig.hFac;
570
-
571
- addEventListener('scroll', throttledCheckElements, true);
572
-
573
- addEventListener('resize', throttledCheckElements, true);
574
-
575
- if(window.MutationObserver){
576
- new MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );
577
- } else {
578
- docElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);
579
- docElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);
580
- setInterval(throttledCheckElements, 999);
581
- }
582
-
583
- addEventListener('hashchange', throttledCheckElements, true);
584
-
585
- //, 'fullscreenchange'
586
- ['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function(name){
587
- document[_addEventListener](name, throttledCheckElements, true);
588
- });
589
-
590
- if((/d$|^c/.test(document.readyState))){
591
- onload();
592
- } else {
593
- addEventListener('load', onload);
594
- document[_addEventListener]('DOMContentLoaded', throttledCheckElements);
595
- setTimeout(onload, 20000);
596
- }
597
-
598
- if(lazysizes.elements.length){
599
- checkElements();
600
- rAF._lsFlush();
601
- } else {
602
- throttledCheckElements();
603
- }
604
- },
605
- checkElems: throttledCheckElements,
606
- unveil: unveilElement
607
- };
608
- })();
609
-
610
-
611
- var autoSizer = (function(){
612
- var autosizesElems;
613
-
614
- var sizeElement = rAFIt(function(elem, parent, event, width){
615
- var sources, i, len;
616
- elem._lazysizesWidth = width;
617
- width += 'px';
618
-
619
- elem.setAttribute('sizes', width);
620
-
621
- if(regPicture.test(parent.nodeName || '')){
622
- sources = parent.getElementsByTagName('source');
623
- for(i = 0, len = sources.length; i < len; i++){
624
- sources[i].setAttribute('sizes', width);
625
- }
626
- }
627
-
628
- if(!event.detail.dataAttr){
629
- updatePolyfill(elem, event.detail);
630
- }
631
- });
632
- var getSizeElement = function (elem, dataAttr, width){
633
- var event;
634
- var parent = elem.parentNode;
635
-
636
- if(parent){
637
- width = getWidth(elem, parent, width);
638
- event = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});
639
-
640
- if(!event.defaultPrevented){
641
- width = event.detail.width;
642
-
643
- if(width && width !== elem._lazysizesWidth){
644
- sizeElement(elem, parent, event, width);
645
- }
646
- }
647
- }
648
- };
649
-
650
- var updateElementsSizes = function(){
651
- var i;
652
- var len = autosizesElems.length;
653
- if(len){
654
- i = 0;
655
-
656
- for(; i < len; i++){
657
- getSizeElement(autosizesElems[i]);
658
- }
659
- }
660
- };
661
-
662
- var debouncedUpdateElementsSizes = debounce(updateElementsSizes);
663
-
664
- return {
665
- _: function(){
666
- autosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);
667
- addEventListener('resize', debouncedUpdateElementsSizes);
668
- },
669
- checkElems: debouncedUpdateElementsSizes,
670
- updateElem: getSizeElement
671
- };
672
- })();
673
-
674
- var init = function(){
675
- if(!init.i){
676
- init.i = true;
677
- autoSizer._();
678
- loader._();
679
- }
680
- };
681
-
682
- lazysizes = {
683
- cfg: lazySizesConfig,
684
- autoSizer: autoSizer,
685
- loader: loader,
686
- init: init,
687
- uP: updatePolyfill,
688
- aC: addClass,
689
- rC: removeClass,
690
- hC: hasClass,
691
- fire: triggerEvent,
692
- gW: getWidth,
693
- rAF: rAF,
694
- };
695
-
696
- return lazysizes;
697
- }
698
- ));