module Lookbook::TargetableConcern
def set_display_options
def set_display_options @dynamic_display_options = [] @static_display_options = [] if @target.present? opts = @target.display_options @dynamic_display_options = opts.select { _2.is_a?(Array) || _2.is_a?(Hash) } @static_display_options = opts.except(*@dynamic_display_options.keys) if params[:_display] display_params = SearchParamParser.call(params[:_display]) display_params.each do |name, value| if @dynamic_display_options.key?(name) cookies["lookbook-display-#{name}"] = value.is_a?(Array) ? value[1] : value end end end @dynamic_display_options.each do |name, opts| choices = opts.is_a?(Hash) ? opts[:choices].to_a : opts value = choices.first.is_a?(Array) ? choices.first[1] : choices.first @static_display_options[name] ||= cookies.fetch("lookbook-display-#{name}", value) end unless params[:_display] display_params = @dynamic_display_options.each_with_object({}) do |(name, opts), hash| hash[name] = @static_display_options[name] end request.query_parameters[:_display] = SearchParamEncoder.call(display_params) end end end