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