You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

45 lines
1.5 KiB

module SiteHelper
def frontend_javascript_importmap_tags(only_use = %w[application])
only_use = Array(only_use)
importmap_json = JSON.parse(Rails.application.importmap.to_json(resolver: self))["imports"].select { |k, v| only_use.include?(k) }
safe_join [
javascript_inline_importmap_tag(JSON.pretty_generate({ "imports" => importmap_json })),
javascript_module_preload_tag(*importmap_json.map { |v| v[1] }),
javascript_import_module_tag(only_use[0])
], "\n"
end
def node_title(node)
parts = [ node.page_title.blank? ? node.title : node.page_title ]
parts << t(:client_name)
parts.uniq.join(" - ")
rescue
t(:client_name)
end
def render_responsive_picture(asset = nil, alt: "", lazy: false, fetchpriority: nil)
return unless asset
widths = [ 800, 1600, 2400 ]
metadata = asset.file.metadata
image_tag(rails_storage_proxy_path(asset.file.variant(resize_to_limit: [ 1600, nil ], format: "webp")),
alt: alt,
srcset: responsive_srcset(asset, widths),
sizes: "100vw",
width: metadata[:width],
height: metadata[:height],
loading: ("lazy" if lazy),
fetchpriority: fetchpriority,
decoding: "async")
end
def responsive_srcset(asset, widths)
widths.map { |w|
"#{rails_storage_proxy_path(asset.file.variant(resize_to_limit: [ w, nil ], format: "webp"))} #{w}w"
}.join(", ")
end
end