lazy_images-rails 1.2.1 → 2.0.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13f44cb2e7e89f97c7fcffeb4ed01541822e1770
|
4
|
+
data.tar.gz: 139c313d6e07fd176e107b5420a1b40e148ff2d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc8d5255274164198f8f48830ac03749eef7d343ec9523c34e66fd15a737e7b3a17bd8e41ca430650b87b9b56dcb488164e363d1c66494bc05821bf4ed18b57a
|
7
|
+
data.tar.gz: f22c1f8b90721c81820c1f2566905808570ba6a58629bfda69faf35fb83c91c3a3cd950e151d98aed6bdd2ce9fca0a58923e4cd2fb1893dcbb1be3bd29545a98
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module LazyImages
|
4
|
+
module Rails
|
5
|
+
class Placeholder
|
6
|
+
include ActionView::Helpers::AssetTagHelper
|
7
|
+
|
8
|
+
attr_reader :svg
|
9
|
+
attr_reader :options
|
10
|
+
|
11
|
+
def initialize(svg, options)
|
12
|
+
@svg = svg
|
13
|
+
@options = options
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
if options[:size]
|
18
|
+
# N. B. extract_dimensions is a private method from
|
19
|
+
# actionview/lib/action_view/helpers/asset_tag_helper.rb
|
20
|
+
# beware of breakage
|
21
|
+
options[:width], options[:height] =
|
22
|
+
extract_dimensions(options.delete(:size))
|
23
|
+
|
24
|
+
fragment = Nokogiri::XML::DocumentFragment.parse(svg)
|
25
|
+
fragment.first_element_child['width'] = options[:width]
|
26
|
+
fragment.first_element_child['height'] = options[:height]
|
27
|
+
|
28
|
+
fragment.to_s
|
29
|
+
else
|
30
|
+
svg
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'lazy_images/rails/placeholder'
|
2
2
|
|
3
3
|
module LazyImages
|
4
4
|
module Rails
|
@@ -10,29 +10,18 @@ module LazyImages
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def image_tag_with_lazy_images(source, options={})
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
options.merge!(
|
14
|
+
class: "#{options[:class]} rli-image",
|
15
|
+
src: path_to_image(source)
|
16
|
+
)
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
# beware of breakage
|
21
|
-
options[:width], options[:height] = extract_dimensions(options.delete(:size))
|
18
|
+
placeholder = LazyImages::Rails::Placeholder.new(
|
19
|
+
LazyImages::Rails.placeholder, options
|
20
|
+
)
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
fragment.first_element_child.set_attribute('height', options[:height])
|
26
|
-
|
27
|
-
placeholder = fragment.to_s
|
28
|
-
end
|
29
|
-
|
30
|
-
content_tag(:div, data: data, class: 'rli-wrapper') do
|
31
|
-
placeholder.html_safe + content_tag(:noscript) do
|
32
|
-
options[:src] = src
|
33
|
-
options[:class] = "#{options[:class]} rli-image"
|
22
|
+
content_tag(:div, class: 'rli-wrapper') do
|
23
|
+
placeholder.to_s.html_safe +
|
34
24
|
image_tag_without_lazy_images(source, options)
|
35
|
-
end
|
36
25
|
end
|
37
26
|
end
|
38
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazy_images-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- René Hansen
|
@@ -67,8 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.5.2
|
69
69
|
description: lazy-images-rails is a rails plugin that augments the standard image_tag
|
70
|
-
helper to provide instant
|
71
|
-
loaded. A noscript fallback is provided along with the placeholder for non-js browsers.
|
70
|
+
helper to provide instant placeholders while theactual image is still being fetched.
|
72
71
|
email:
|
73
72
|
- renehh@gmail.com
|
74
73
|
executables: []
|
@@ -77,11 +76,11 @@ extra_rdoc_files: []
|
|
77
76
|
files:
|
78
77
|
- MIT-LICENSE
|
79
78
|
- app/assets/images/placeholder.svg
|
80
|
-
- app/assets/javascripts/lazy_images_rails.js.coffee
|
81
79
|
- app/assets/stylesheets/lazy_images_rails.css.scss
|
82
80
|
- config/initializers/lazy_images-rails.rb
|
83
81
|
- lib/lazy_images-rails.rb
|
84
82
|
- lib/lazy_images/rails/engine.rb
|
83
|
+
- lib/lazy_images/rails/placeholder.rb
|
85
84
|
- lib/lazy_images/rails/tag_helper.rb
|
86
85
|
- lib/lazy_images/rails/version.rb
|
87
86
|
- lib/tasks/lazy_images_tasks.rake
|
@@ -108,5 +107,5 @@ rubyforge_project:
|
|
108
107
|
rubygems_version: 2.4.5
|
109
108
|
signing_key:
|
110
109
|
specification_version: 4
|
111
|
-
summary:
|
110
|
+
summary: Simple placeholders for images
|
112
111
|
test_files: []
|
@@ -1,26 +0,0 @@
|
|
1
|
-
class @LazyImagesRails
|
2
|
-
@init: (all_replaced) ->
|
3
|
-
replace_with_image = (placeholder) =>
|
4
|
-
noscript = placeholder.querySelector('noscript')
|
5
|
-
method = if 'innerText' in noscript then 'innerText' else 'textContent'
|
6
|
-
content = noscript[method]
|
7
|
-
|
8
|
-
tmp = document.createElement('div')
|
9
|
-
tmp.innerHTML = content # will trigger download of image
|
10
|
-
img = tmp.querySelector('img')
|
11
|
-
|
12
|
-
done = --@placeholder_count == 0 && all_replaced? &&
|
13
|
-
typeof all_replaced == 'function'
|
14
|
-
|
15
|
-
# Race condition:
|
16
|
-
# Event attachment happens after the download triggers above.
|
17
|
-
# If image loads before getting here, the callback never runs.
|
18
|
-
img.onload = =>
|
19
|
-
placeholder.parentNode.replaceChild(img, placeholder)
|
20
|
-
all_replaced.call() if done
|
21
|
-
|
22
|
-
placeholders = document.querySelectorAll('div[data-rli-placeholder]')
|
23
|
-
@placeholder_count = placeholders.length
|
24
|
-
|
25
|
-
for placeholder in placeholders
|
26
|
-
replace_with_image placeholder
|