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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 798e7771330ba8d4034f67cdf7a754751ee680e3
4
- data.tar.gz: a59520c8a45dc565d2be28009768bc8a8c596da5
3
+ metadata.gz: d37fb6863c8b1abfcff47d83fe0ad6b393d621cc
4
+ data.tar.gz: 7954cedf2ef0fef1950be732f4cffb784fea55b6
5
5
  SHA512:
6
- metadata.gz: 5d789610444cf69dc942fad2765ef765d0d9ab2eaa5c0ab52767505507ec537ba65166366176b4a71749aa93fd4133d8bb93d8ee2c40e46f5666d872ce46881f
7
- data.tar.gz: e3a622373bed0a0fc9b7eacabeabf50f781fe7c6dddf515c7ee20f84ed9e7ccb953d1d35e87decb0bbb1cfafd4dffc2d589c4ed44507e69ebd32969258e4ab89
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
- * put necessary images into /app/assets/images folder
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
+
@@ -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{Lazysizes for Rails application.}
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")
@@ -1,3 +1,3 @@
1
1
  module LazysizesRails
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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(regPicture.test(parent.nodeName || '')){
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.1
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
- homepage: ''
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: Lazysizes for Rails application.
82
+ summary: Rails wrapper for Lazysizes.
82
83
  test_files: []