module Lookbook::PreviewControllerActions

def default_preview_layout

def default_preview_layout
  Lookbook.config.preview_layout
end

def determine_layout(layout_override = nil)

def determine_layout(layout_override = nil)
  return {} unless defined?(Rails.root)
  layout_declaration = {}
  if !layout_override.nil?
    layout_declaration[:layout] = layout_override
  elsif default_preview_layout.present?
    layout_declaration[:layout] = default_preview_layout
  end
  prepend_application_view_paths if layout_declaration[:layout].present?
  layout_declaration
end

def lookbook_render_scenario(scenario = @scenario)

def lookbook_render_scenario(scenario = @scenario)
  prepend_application_view_paths
  prepend_preview_scenarios_view_path
  @render_args = scenario.render_args(request_params: request.query_parameters)
  template = @render_args[:template]
  locals = @render_args[:locals]
  opts = {}
  opts[:assigns] = @render_args[:assigns] || {}
  opts[:locals] = locals if locals.present?
  opts[:layout] = nil
  with_action_view_settings do
    html = render_to_string(template, **opts)
    render html: html
  end
end

def lookbook_render_template(template, assigns, opts = {})

def lookbook_render_template(template, assigns, opts = {})
  prepend_application_view_paths
  prepend_preview_scenarios_view_path
  with_action_view_settings do
    html = render_to_string(template, assigns: assigns, **determine_layout(opts[:layout]))
    html += opts[:append_html]
    render html: html
  end
end

def prepend_application_view_paths

def prepend_application_view_paths
  prepend_view_path Rails.root.join("app/views") if defined?(Rails.root)
end

def prepend_preview_scenarios_view_path

def prepend_preview_scenarios_view_path
  prepend_view_path(Previews.preview_paths)
end

def set_locale(&block)

def set_locale(&block)
  I18n.with_locale(params[:locale] || I18n.default_locale, &block)
end

def with_action_view_settings(&block)

def with_action_view_settings(&block)
  ActionViewConfigHandler.call(
    disable_annotations: Lookbook.config.preview_disable_action_view_annotations,
    &block
  )
end