lazysizes_rails 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -3
- data/Rakefile +6 -0
- data/lazysizes_rails.gemspec +2 -2
- data/lib/lazysizes_rails/version.rb +1 -1
- data/vendor/assets/javascripts/lazysizes_rails.js +4 -3
- data/vendor/assets/javascripts/lazysizes_rails.min.js +3 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d37fb6863c8b1abfcff47d83fe0ad6b393d621cc
|
4
|
+
data.tar.gz: 7954cedf2ef0fef1950be732f4cffb784fea55b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f59a31ddcfc8dbbeedaa431dd31ec8477ceb879169c0551504d6175ac86f6a420e7b2db015a5d67707614f877ac997fd6060036e42d365c84899c8ceac72879
|
7
|
+
data.tar.gz: ccb0526e075803a21cd3b038a0cfb6c9d3fcb33eff07e5e18b54e15d2ad6b06792388e5993ca7f639aa1075666ea5a0d7bc826f89fcb033b196a69c3a887c2ea
|
data/README.md
CHANGED
@@ -14,11 +14,10 @@ And then execute:
|
|
14
14
|
|
15
15
|
$ bundle
|
16
16
|
|
17
|
-
$ gem install lazysizes_rails
|
18
|
-
|
19
17
|
## Usage
|
20
18
|
|
21
|
-
*
|
19
|
+
* add to your **application.js** this line `//= require lazysizes_rails` or `//= require lazysizes_rails.min.js` if your want use minified version
|
20
|
+
* put necessary images into **app/assets/images** folder
|
22
21
|
* and show images with **image_tag** helper
|
23
22
|
|
24
23
|
```ruby
|
data/Rakefile
CHANGED
@@ -1,2 +1,8 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
|
3
|
+
desc 'Download fresh js from GH'
|
4
|
+
task :download_js do
|
5
|
+
`wget https://raw.githubusercontent.com/aFarkas/lazysizes/master/lazysizes.js -O vendor/assets/javascripts/lazysizes_rails.js`
|
6
|
+
`wget https://raw.githubusercontent.com/aFarkas/lazysizes/master/lazysizes.min.js -O vendor/assets/javascripts/lazysizes_rails.min.js`
|
7
|
+
end
|
8
|
+
|
data/lazysizes_rails.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = LazysizesRails::VERSION
|
9
9
|
spec.authors = ["Dima Zudochkin"]
|
10
10
|
spec.email = ["dnd.pliz@gmail.com"]
|
11
|
-
spec.summary = %q{
|
12
|
-
spec.homepage = ""
|
11
|
+
spec.summary = %q{Rails wrapper for Lazysizes.}
|
12
|
+
spec.homepage = "https://github.com/vredniy/lazysizes_rails"
|
13
13
|
spec.license = "MIT"
|
14
14
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -208,7 +208,7 @@
|
|
208
208
|
}
|
209
209
|
|
210
210
|
function unveilLazy(elem, force){
|
211
|
-
var sources, i, len, sourceSrcset, sizes, src, srcset, parent;
|
211
|
+
var sources, i, len, sourceSrcset, sizes, src, srcset, parent, isPicture;
|
212
212
|
|
213
213
|
var event = triggerEvent(elem, 'lazybeforeunveil', {force: !!force});
|
214
214
|
|
@@ -231,14 +231,15 @@
|
|
231
231
|
scriptUrls[src] = true;
|
232
232
|
}
|
233
233
|
} else if(regImg.test(elem.nodeName || '')) {
|
234
|
+
isPicture = regPicture.test(parent.nodeName || '');
|
234
235
|
|
235
236
|
//LQIP
|
236
|
-
if(!force && !elem.complete && elem.getAttribute('src') && elem.src && !elem.lazyload){
|
237
|
+
if(!isPicture && !force && !elem.complete && elem.getAttribute('src') && elem.src && !elem.lazyload){
|
237
238
|
addRemoveImgEvents(elem, resetPreloading);
|
238
239
|
addRemoveImgEvents(elem, resetPreloading, true);
|
239
240
|
return;
|
240
241
|
}
|
241
|
-
if(
|
242
|
+
if(isPicture){
|
242
243
|
sources = parent.getElementsByTagName('source');
|
243
244
|
for(i = 0, len = sources.length; i < len; i++){
|
244
245
|
sourceSrcset = sources[i].getAttribute(lazySizesConfig.srcsetAttr);
|
@@ -0,0 +1,3 @@
|
|
1
|
+
/*! lazysizes - v0.2.0 - 2014-10-21
|
2
|
+
Licensed MIT */
|
3
|
+
!function(a){window.lazySizes=a(),"function"==typeof define&&define.amd&&define(function(){return window.lazySizes})}(function(){"use strict";function a(a,b){var c;window.picturefill?picturefill({reevaluate:!0,reparse:!0,elements:[a]}):window.respimage&&!respimage._.observer?(b&&(c=a[respimage._.ns],c&&(c[b.srcset?"srcset":"src"]=void 0)),respimage({reparse:!0,elements:[a]})):!window.HTMLPictureElement&&window.console&&"complete"==t.readyState&&console.log("Please use a responsive image polyfill, like respimage or picturefill. https://github.com/aFarkas/respimage")}function b(a){u++,a=e(a),C(a,O),C(a,O,!0),clearTimeout(F),F=setTimeout(O,5e3)}function c(a){var b=t.createElement("script"),c=a.parentNode;return a.removeAttribute(j.srcAttr),c.insertBefore(b,a),A(function(){q(a,j.lazyClass)}),b}function d(){n=0,clearTimeout(m)}function e(b,d){var e,f,h,i,k,l,m,n,o,r=D(b,"lazybeforeunveil",{force:!!d});if(!r.defaultPrevented&&(k=b.getAttribute(j.sizesAttr),l=b.getAttribute(j.srcAttr),m=b.getAttribute(j.srcsetAttr),n=b.parentNode,l||m)){if(v.test(b.nodeName)&&(b=c(b)),x.test(b.nodeName||"")){if(B[l])return;B[l]=!0}else if(y.test(b.nodeName||"")){if(o=w.test(n.nodeName||""),!o&&!d&&!b.complete&&b.getAttribute("src")&&b.src&&!b.lazyload)return C(b,O),void C(b,O,!0);if(o)for(e=n.getElementsByTagName("source"),f=0,h=e.length;h>f;f++)i=e[f].getAttribute(j.srcsetAttr),i&&e[f].setAttribute("srcset",i)}k&&("auto"==k?g(b,!0):b.setAttribute("sizes",k),b.removeAttribute(j.sizesAttr),!m&&window.console&&b.getAttribute("srcset")&&console.log("using lazysizes with a `srcset` attribute is not good. Use `data-srcset` instead")),m?(b.setAttribute("srcset",m),b.removeAttribute(j.srcsetAttr)):l&&(b.setAttribute("src",l),b.removeAttribute(j.srcAttr))}return A(function(){q(b,j.lazyClass),"auto"==k&&p(b,j.autosizesClass),(m||k)&&a(b,{srcset:m,src:l})}),b}function f(){l=0,clearTimeout(k)}function g(b,c){var d,e,f,g,h,i,k,l;if(g=b.parentNode){if(d=g.offsetWidth,e=b.offsetWidth,f=e>d?e:d,!f&&!b._lazysizesWidth)for(;g&&g!=t.body&&!f;)f=g.offsetWidth,g=g.parentNode;if(l=D(b,"lazybeforesizes",{width:f,polyfill:!c}),!l.defaultPrevented&&(f=l.details.width,f&&f!==b._lazysizesWidth&&(!j.onlyLargerSizes||!b._lazysizesWidth||b._lazysizesWidth<f))){if(b._lazysizesWidth=f,f+="px",b.setAttribute("sizes",f),w.test(g.nodeName||""))for(h=g.getElementsByTagName("source"),i=0,k=h.length;k>i;i++)h[i].setAttribute("sizes",f);l.details.polyfill&&a(b)}}}if(Date.now&&window.document.getElementsByClassName){var h,i,j,k,l,m,n,o,p,q,r,s,t=window.document,u=0,v=/^(?:span|div)$/i,w=/^picture$/i,x=/^script$/i,y=/^img$/i,z=10,A=window.setImmediate||window.setTimeout,B={},C=function(a,b,c){var d=c?"addEventListener":"removeEventListener";a[d]("load",b,!1),a[d]("abort",b,!1),a[d]("readystatechange",b,!1),a[d]("error",b,!1)},D=function(a,b,c){var d=t.createEvent("Event");return d.initEvent(b,!0,!0),d.details=c||{},a.dispatchEvent(d),d};t.documentElement.classList?(p=function(a,b){a.classList.add(b)},q=function(a,b){a.classList.remove(b)},r=function(a,b){return a.classList.contains(b)}):(p=function(a,b){r(a,b)||(a.className+=" "+b)},q=function(a,b){var c;r(a,b)&&(c=new RegExp("(\\s|^)"+b+"(\\s|$)"),a.className=a.className.replace(c," "))},r=function(a,b){return a.className.match(new RegExp("(\\s|^)"+b+"(\\s|$)"))});var E,F,G,H,I,J,K,L,M,N=Date.now(),O=function(a){u--,clearTimeout(F),a&&a.target&&C(a.target,O),(!a||0>u||!a.target)&&(u=0)},P=function(){var a,b,c=function(){b=!1},e=function(){clearTimeout(a),d(),Q(),setTimeout(c)};return{debounce:function(){clearTimeout(a),clearTimeout(o),b=!0,a=setTimeout(e,66)},throttled:function(){var c;b||(b=!0,clearTimeout(a),c=Date.now()-N,c=c>300?9:99,a=setTimeout(e,c))}}}(),Q=function(){var a,c,d;if(E=h.length,N=Date.now(),E){for(G=window.innerWidth+z,H=window.innerHeight+z,M=-1*z;E>n;n++)if(a=h[n].getBoundingClientRect(),(L=a.bottom)>=M&&(I=a.top)<=H&&(K=a.right)>=M&&(J=a.left)<=G&&(L||K||J||I))e(h[n]),d=!0;else{if(E-1>n&&Date.now()-N>9){n++,c=!1,m=setTimeout(Q,4);break}!d&&s&&!c&&j.preloadAfterLoad&&2>u&&(L||K||J||I||"auto"!=h[n].getAttribute(j.sizesAttr))&&(c=h[n])}c&&!d&&b(c)}},R=function(){var a,b=function(){clearTimeout(a),f(),S()};return function(){clearTimeout(a),clearTimeout(k),a=setTimeout(b,99)}}(),S=function(){var a,b,c,d=i.length;if(d)for(b=Date.now(),c=l||0,a=c+3,f();d>c;c++)if(g(i[c]),c>a&&d-1>c&&Date.now()-b>9){l=c+1,k=setTimeout(S,4);break}},T=function(){z=400,clearTimeout(o),t.addEventListener("load",P.throttled,!0),s=!0},U=function(){var a=t.body||t.documentElement;j.mutation&&(window.MutationObserver?new MutationObserver(P.throttled).observe(t.documentElement,{childList:!0,subtree:!0,attributes:!0}):(a.addEventListener("DOMNodeInserted",P.throttled,!0),t.documentElement.addEventListener("DOMAttrModified",P.throttled,!0))),j.hover&&t.addEventListener("mouseover",P.throttled,!0),t.addEventListener("focus",P.throttled,!0),window.addEventListener("hashchange",P.throttled,!0),"onmozfullscreenchange"in a?window.addEventListener("mozfullscreenchange",P.throttled,!0):"onwebkitfullscreenchange"in a?window.addEventListener("webkitfullscreenchange",P.throttled,!0):window.addEventListener("fullscreenchange",P.throttled,!0),j.cssanimation&&(t.addEventListener("animationstart",P.throttled,!0),t.addEventListener("transitionstart",P.throttled,!0))};return setTimeout(function(){var a,b={mutation:!0,hover:!0,cssanimation:!0,lazyClass:"lazyload",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",preloadAfterLoad:!1,onlyLargerSizes:!0};j=window.lazySizesConfig||{};for(a in b)a in j||(j[a]=b[a]);h=t.getElementsByClassName(j.lazyClass),i=t.getElementsByClassName(j.autosizesClass),addEventListener("scroll",P.throttled,!1),(t.body||t.documentElement).addEventListener("scroll",P.throttled,!0),t.addEventListener("touchmove",P.throttled,!1),addEventListener("resize",P.debounce,!1),addEventListener("resize",R,!1),/^i|^loade|c/.test(t.readyState)?U():t.addEventListener("DOMContentLoaded",U,!1),"complete"==t.readyState?T():(addEventListener("load",T,!1),t.addEventListener("readystatechange",P.throttled,!1)),P.throttled(),"lazySizesConfig"in window&&(window.lazySizesConfig=null)},t.body?9:99),{updateAllSizes:R,updateAllLazy:P.throttled,unveilLazy:function(a){r(a,j.lazyClass)&&e(a)},updateSizes:g,updatePolyfill:a}}});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazysizes_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dima Zudochkin
|
@@ -55,7 +55,8 @@ files:
|
|
55
55
|
- lib/lazysizes_rails/engine.rb
|
56
56
|
- lib/lazysizes_rails/version.rb
|
57
57
|
- vendor/assets/javascripts/lazysizes_rails.js
|
58
|
-
|
58
|
+
- vendor/assets/javascripts/lazysizes_rails.min.js
|
59
|
+
homepage: https://github.com/vredniy/lazysizes_rails
|
59
60
|
licenses:
|
60
61
|
- MIT
|
61
62
|
metadata: {}
|
@@ -78,5 +79,5 @@ rubyforge_project:
|
|
78
79
|
rubygems_version: 2.2.2
|
79
80
|
signing_key:
|
80
81
|
specification_version: 4
|
81
|
-
summary:
|
82
|
+
summary: Rails wrapper for Lazysizes.
|
82
83
|
test_files: []
|