module Frails::Monkey::ActionView::AbstractRenderer

Public Instance Methods

side_load_assets(view, tpl) click to toggle source
# File lib/frails/monkey/action_view/abstract_renderer.rb, line 7
def side_load_assets(view, tpl)
  path = tpl.short_identifier.delete_prefix('app/').delete_suffix('.html.erb')

  instrument :side_loaded_assets, identifier: tpl.identifier, asset_types: [] do |payload|
    side_load_javascript path, view, payload
    side_load_stylesheet path, view, payload
  end

  path
end
side_load_javascript(path, view, payload) click to toggle source
# File lib/frails/monkey/action_view/abstract_renderer.rb, line 18
def side_load_javascript(path, view, payload)
  # Render the JS - if any.
  view.content_for :side_loaded_js do
    view.javascript_pack_tag(path, soft_lookup: true).tap do |tag|
      !tag.nil? && (payload[:asset_types] << :js)
    end
  end
end
side_load_stylesheet(path, view, payload) click to toggle source
# File lib/frails/monkey/action_view/abstract_renderer.rb, line 27
def side_load_stylesheet(path, view, payload)
  loaded = side_loaded_stylesheets(view)

  # Don't inline the styles if already inlined.
  return if loaded.include?(path)

  # Render the CSS inline - if any.
  Frails.manifest.read(path, :stylesheet) do |href, src|
    view.content_for :side_loaded_css do
      view.content_tag :style, src, { data: { href: href } }, false
    end

    loaded << path
    payload[:asset_types] << :css
  end
end
side_loaded_stylesheets(view) click to toggle source
# File lib/frails/monkey/action_view/abstract_renderer.rb, line 44
def side_loaded_stylesheets(view)
  if view.instance_variable_defined?(:@side_loaded_stylesheets)
    view.instance_variable_get(:@side_loaded_stylesheets)
  else
    view.instance_variable_set :@side_loaded_stylesheets, []
  end
end