2018-08-18 11:19:57 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-07-24 17:36:52 +00:00
|
|
|
module LazyImageTagHelper
|
|
|
|
def placeholder_image
|
|
|
|
"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
|
|
|
|
end
|
|
|
|
|
|
|
|
# Override the default ActionView `image_tag` helper to support lazy-loading
|
|
|
|
def image_tag(source, options = {})
|
|
|
|
options = options.symbolize_keys
|
|
|
|
|
|
|
|
unless options.delete(:lazy) == false
|
|
|
|
options[:data] ||= {}
|
2017-10-05 14:29:45 +00:00
|
|
|
options[:data][:src] = path_to_image(source)
|
2017-10-04 11:58:32 +00:00
|
|
|
|
2018-08-18 11:19:57 +00:00
|
|
|
# options[:class] can be either String or Array.
|
|
|
|
klass_opts = Array.wrap(options[:class])
|
|
|
|
klass_opts << "lazy"
|
2017-07-24 17:36:52 +00:00
|
|
|
|
2018-08-18 11:19:57 +00:00
|
|
|
options[:class] = klass_opts.join(' ')
|
2017-07-24 17:36:52 +00:00
|
|
|
source = placeholder_image
|
|
|
|
end
|
|
|
|
|
|
|
|
super(source, options)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Required for Banzai::Filter::ImageLazyLoadFilter
|
2020-09-03 21:08:18 +00:00
|
|
|
module_function :placeholder_image # rubocop: disable Style/AccessModifierDeclarations
|
2017-07-24 17:36:52 +00:00
|
|
|
end
|