class Avo::Tab

def empty?

def empty?
  visible_items.blank?
end

def hydrate(view: nil)

def hydrate(view: nil)
  @view = view
  items_holder.items.grep(Avo::Panel).each do |panel|
    panel.hydrate(view: view)
  end
  self
end

def initialize(name: nil, description: nil, view: nil, holds_one_field: false, **args)

def initialize(name: nil, description: nil, view: nil, holds_one_field: false, **args)
  # Initialize the visibility markers
  super
  @name = name
  @description = description
  @holds_one_field = holds_one_field
  @items_holder = Avo::ItemsHolder.new
  @view = view
  show_on args[:show_on] if args[:show_on].present?
  hide_on args[:hide_on] if args[:hide_on].present?
  only_on args[:only_on] if args[:only_on].present?
  except_on args[:except_on] if args[:except_on].present?
end

def name

def name
  if @name.respond_to?(:call)
    Avo::Hosts::BaseHost.new(block: @name).handle
  else
    @name
  end
end

def turbo_frame_id(parent: nil)

def turbo_frame_id(parent: nil)
  id = "#{Avo::Tab.to_s.parameterize} #{name}".parameterize
  return id if parent.nil?
  "#{parent.turbo_frame_id} #{id}".parameterize
end

def visible_on?(view)

Checks for visibility on itself or on theone field it holds
def visible_on?(view)
  if holds_one_field
    super(view) && items.first.visible_on?(view)
  else
    super(view)
  end
end