Class: Engine::Components::UI::FlexLayout::Pack

Inherits:
Base
  • Object
show all
Defined in:
lib/engine/components/ui/flex/pack_layout.rb

Instance Method Summary collapse

Constructor Details

#initialize(direction:, gap:, justify:) ⇒ Pack

Returns a new instance of Pack.



7
8
9
10
# File 'lib/engine/components/ui/flex/pack_layout.rb', line 7

def initialize(direction:, gap:, justify:)
  super(direction: direction, gap: gap)
  @justify = justify
end

Instance Method Details

#rect_for_child(child_ui_rect, index, children, parent_rect) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/engine/components/ui/flex/pack_layout.rb', line 12

def rect_for_child(child_ui_rect, index, children, parent_rect)
  sizes = children.map { |c| child_main_size(c) }
  total_content = sizes.sum + total_gap(children)

  available = row? ? parent_rect.width : parent_rect.height
  start_offset = calculate_start_offset(available, total_content, children.length)

  # Y-down: both row and column increment main_start
  main_start = main_axis_start(parent_rect)
  main_start += start_offset

  children.each_with_index do |_, i|
    break if i == index
    main_start += sizes[i] + gap
  end

  build_rect(parent_rect, main_start: main_start, main_size: sizes[index], child_ui_rect: child_ui_rect)
end