1
0

layout.go 679 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package layout
  2. type LayoutManager struct {
  3. Workspaces []Workspace
  4. }
  5. type Workspace struct {
  6. RootContainer Container[[]int]
  7. }
  8. type SplitType int
  9. const (
  10. SplitHorizontal SplitType = iota
  11. SplitVertical
  12. )
  13. type ContainerNode interface {
  14. []int | Container[[]int]
  15. }
  16. type Container[T ContainerNode] struct {
  17. Children [2]any
  18. Split SplitType
  19. }
  20. func NewLayoutManager() LayoutManager {
  21. return LayoutManager{
  22. Workspaces: []Workspace{NewWorkspace()},
  23. }
  24. }
  25. func NewWorkspace() Workspace {
  26. return Workspace{
  27. RootContainer: NewContainerEmpty(),
  28. }
  29. }
  30. func NewContainerEmpty() Container[[]int] {
  31. return Container[[]int]{
  32. Children: [2]any{},
  33. Split: SplitHorizontal,
  34. }
  35. }