37 lines
787 B
Go
37 lines
787 B
Go
package niri
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
)
|
|
|
|
type LayoutSwitchTarget struct {
|
|
prev Option[bool]
|
|
next Option[bool]
|
|
index Option[int]
|
|
}
|
|
|
|
func LayoutSwitchTargetPrev() LayoutSwitchTarget {
|
|
return LayoutSwitchTarget{prev: OptionOf(true)}
|
|
}
|
|
|
|
func LayoutSwitchTargetNext() LayoutSwitchTarget {
|
|
return LayoutSwitchTarget{next: OptionOf(true)}
|
|
}
|
|
|
|
func LayoutSwitchTargetIndex(index int) LayoutSwitchTarget {
|
|
return LayoutSwitchTarget{index: OptionOf(index)}
|
|
}
|
|
|
|
func (m LayoutSwitchTarget) MarshalJSON() ([]byte, error) {
|
|
if m.prev != nil {
|
|
return json.Marshal("Prev")
|
|
} else if m.next != nil {
|
|
return json.Marshal("Next")
|
|
} else if m.index != nil {
|
|
return json.Marshal(map[string]int{"Index": *m.index})
|
|
}
|
|
|
|
return nil, errors.New("LayoutSwitchTarget.MarshalJson()")
|
|
}
|