module Lookbook::PreviewControllerActions

def render_scenario_to_string(preview, scenario)

def render_scenario_to_string(preview, scenario)
  prepend_application_view_paths
  prepend_preview_examples_view_path
  @preview = preview
  @scenario_name = scenario.name
  @render_args = @preview.render_args(@scenario_name, params: params.permit!)
  template = @render_args[:template]
  locals = @render_args[:locals]
  opts = if Lookbook.config.preview_single_pass_rendering && !scenario.group.present?
    determine_layout(preview.layout)
  else
    {layout: nil}
  end
  opts[:assigns] = @render_args[:assigns] || {}
  opts[:locals] = locals if locals.present?
  with_action_view_settings do
    rendered = render_to_string(template, **opts)
    if scenario.after_render_method.present?
      render_context = Store.new({
        preview: preview,
        scenario: scenario,
        params: user_request_parameters
      })
      rendered = @preview.after_render(method: scenario.after_render_method, html: rendered, context: render_context)
    end
    render html: rendered
  end
end