class Lookbook::EmbedsController

def lookup

def lookup
  props = Store.new(params[:props] ? JsonParser.call(sanitize(params[:props])) : {})
  if props.preview.present?
    preview = Engine.previews.find_by_preview_class(props.preview)
    if preview.present?
      props.scenarios ||= (props.scenario || "")
      scenario = preview.scenario(Array(props.scenarios).first)
      boolean_options = ["display_option_controls"]
      array_options = ["panels", "actions", "scenarios"]
      param_prefix = "param_"
      options = {}
      embed_params = {}
      props.each do |key, value|
        key = key.to_s.strip.tr("-", "_")
        value.strip!
        if array_options.include?(key)
          options[key] = if value == "false"
            []
          elsif value == "true"
            ["*"]
          else
            value.split(",").map(&:strip)
          end
        elsif boolean_options.include?(key)
          options[key] = (value == "false") ? false : !!value
        elsif key.start_with?(param_prefix)
          embed_params[key.gsub(param_prefix, "")] = value
        end
      end
      embed_params[:_options] = SearchParamEncoder.call(options)
      embed_params.symbolize_keys!
      return redirect_to lookbook_embed_url(scenario ? scenario.path : preview.path, embed_params)
    end
  end
  raise_not_found("Preview not found")
end