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