class Lookbook::PreviewsController

def self.controller_path

def self.controller_path
  "lookbook/previews"
end

def embedded?

def embedded?
  params[:lookbook_embed] == "true"
end

def iframe_content_scripts

def iframe_content_scripts
  render_to_string("lookbook/partials/_iframe_content_scripts", layout: nil)
end

def index

def index
  respond_to do |format|
    format.json do
      render(
        json: Lookbook.previews.map do |preview|
          {
            name: preview.name,
            scenarios: preview.scenarios.map { |scenario|
              case scenario
              when Lookbook::ScenarioEntity
                scenario_json(scenario)
              when Lookbook::ScenarioGroupEntity
                {
                  name: scenario.name,
                  examples: scenario.scenarios.map { |s| scenario_json(s) }
                }
              end
            }
          }
        end
      )
    end
  end
end

def permit_framing

def permit_framing
  headers["X-Frame-Options"] = Lookbook.config.preview_embeds.policy if embedded?
  headers["X-Frame-Options"] = "SAMEORIGIN" if headers["X-Frame-Options"] == "DENY"
end

def scenario_json(scenario)

def scenario_json(scenario)
  {
    name: scenario.name,
    inspect_path: scenario.url_path,
    preview_path: scenario.preview_path
  }
end

def show

def show
  raise_not_found("Preview not found") unless @target
  @preview_html = preview_controller.process(
    :render_in_layout_to_string,
    "lookbook/previews/group",
    inspector_data,
    layout: @preview.layout,
    append_html: (iframe_content_scripts if embedded?)
  )
end