class Lookbook::Nav::Entity::Component

def alpine_data

def alpine_data
  alpine_encode({id: node.id, matchers: search_terms})
end

def children

def children
  collapsed? ? [] : super
end

def collapsed?

def collapsed?
  node.type == :preview && node.children.one?
end

def href

def href
  if collapsed?
    node.first.url_path
  elsif type != :preview
    node.url_path
  end
end

def nav_icon

def nav_icon
  ICONS[collapsed? ? :preview : node.type] || :file
end

def search_terms

def search_terms
  matchers = if collapsed?
    node.first.search_terms
  else
    node.respond_to?(:search_terms) ? Array(node.search_terms) : []
  end
  matchers.flatten.map { |m| m.gsub(/\s/, "").downcase }
end

def type

def type
  collapsed? ? :scenario : node.type
end