components

package
v0.0.0-...-2b0391e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IconOnline       = "●"
	IconOffline      = "○"
	IconChannel      = "#"
	IconGroup        = "☰"
	IconIM           = "●"
	IconMpIM         = "☰"
	IconNotification = "*"

	PresenceAway   = "away"
	PresenceActive = "active"

	ChannelTypeChannel = "channel"
	ChannelTypeGroup   = "group"
	ChannelTypeIM      = "im"
	ChannelTypeMpIM    = "mpim"
)
View Source
const (
	CommandMode = "NORMAL"
	InsertMode  = "INSERT"
	SearchMode  = "SEARCH"
)

Variables

View Source
var (
	COLORS = []string{
		"fg-black",
		"fg-red",
		"fg-green",
		"fg-yellow",
		"fg-blue",
		"fg-magenta",
		"fg-cyan",
		"fg-white",
	}
)

Functions

This section is empty.

Types

type ChannelItem

type ChannelItem struct {
	ID           string
	Name         string
	Topic        string
	Type         string
	UserID       string
	Presence     string
	Notification bool

	StylePrefix string
	StyleIcon   string
	StyleText   string
}

func (ChannelItem) GetChannelName

func (c ChannelItem) GetChannelName() string

GetChannelName will return a formatted representation of the name of the channel

func (ChannelItem) ToString

func (c ChannelItem) ToString() string

ToString will set the label of the channel, how it will be displayed on screen. Based on the type, different icons are shown, as well as an optional notification icon.

type Channels

type Channels struct {
	ChannelItems    []ChannelItem
	List            *termui.List
	SelectedChannel int // index of which channel is selected from the List
	Offset          int // from what offset are channels rendered
	CursorPosition  int // the y position of the 'cursor'

	SearchMatches  []int // index of the search matches
	SearchPosition int   // current position of a search match
}

Channels is the definition of a Channels component

func CreateChannelsComponent

func CreateChannelsComponent(height int) *Channels

CreateChannels is the constructor for the Channels component

func (*Channels) Buffer

func (c *Channels) Buffer() termui.Buffer

Buffer implements interface termui.Bufferer

func (*Channels) FindChannel

func (c *Channels) FindChannel(channelID string) int

func (*Channels) GetHeight

func (c *Channels) GetHeight() int

GetHeight implements interface termui.GridBufferer

func (*Channels) GetSelectedChannel

func (c *Channels) GetSelectedChannel() ChannelItem

Get SelectedChannel returns the ChannelItem that is currently selected

func (*Channels) GotoPosition

func (c *Channels) GotoPosition(newPos int)

GotoPosition is used by to automatically scroll to a specific location in the channels component

func (*Channels) GotoPositionSearch

func (c *Channels) GotoPositionSearch(position int)

GotoPosition is used by the search functionality to automatically scroll to a specific location in the channels component

func (*Channels) Jump

func (c *Channels) Jump()

Jump to the first channel with a notification

func (*Channels) MarkAsRead

func (c *Channels) MarkAsRead(channelID int)

func (*Channels) MarkAsUnread

func (c *Channels) MarkAsUnread(channelID string)

func (*Channels) MoveCursorBottom

func (c *Channels) MoveCursorBottom()

MoveCursorBottom will move the cursor to the bottom of the channels

func (*Channels) MoveCursorDown

func (c *Channels) MoveCursorDown()

MoveCursorDown will increase the SelectedChannel by 1

func (*Channels) MoveCursorTop

func (c *Channels) MoveCursorTop()

MoveCursorTop will move the cursor to the top of the channels

func (*Channels) MoveCursorUp

func (c *Channels) MoveCursorUp()

MoveCursorUp will decrease the SelectedChannel by 1

func (*Channels) ScrollDown

func (c *Channels) ScrollDown()

ScrollDown enables us to scroll through the channel list when it overflows

func (*Channels) ScrollUp

func (c *Channels) ScrollUp()

ScrollUp enables us to scroll through the channel list when it overflows

func (*Channels) Search

func (c *Channels) Search(term string)

Search will search through the channels to find a channel, when a match has been found the selected channel will then be the channel that has been found

func (*Channels) SearchNext

func (c *Channels) SearchNext()

SearchNext allows us to cycle through the c.SearchMatches

func (*Channels) SearchPrev

func (c *Channels) SearchPrev()

SearchPrev allows us to cycle through the c.SearchMatches

func (*Channels) SetChannels

func (c *Channels) SetChannels(channels []ChannelItem)

func (*Channels) SetPresence

func (c *Channels) SetPresence(channelID string, presence string)

func (*Channels) SetSelectedChannel

func (c *Channels) SetSelectedChannel(index int)

SetSelectedChannel sets the SelectedChannel given the index

func (*Channels) SetWidth

func (c *Channels) SetWidth(w int)

SetWidth implements interface termui.GridBufferer

func (*Channels) SetX

func (c *Channels) SetX(x int)

SetX implements interface termui.GridBufferer

func (*Channels) SetY

func (c *Channels) SetY(y int)

SetY implements interface termui.GridBufferer

type Chat

type Chat struct {
	List     *termui.List
	Messages map[string]Message
	Offset   int
}

Chat is the definition of a Chat component

func CreateChatComponent

func CreateChatComponent(inputHeight int) *Chat

CreateChatComponent is the constructor for the Chat struct

func (*Chat) AddMessage

func (c *Chat) AddMessage(message Message)

AddMessage adds a single message to Messages

func (*Chat) AddReply

func (c *Chat) AddReply(parentID string, message Message)

AddReply adds a single reply to a parent thread, it also sets the thread separator

func (*Chat) Buffer

func (c *Chat) Buffer() termui.Buffer

Buffer implements interface termui.Bufferer

func (*Chat) ClearMessages

func (c *Chat) ClearMessages()

ClearMessages clear the c.Messages

func (*Chat) GetHeight

func (c *Chat) GetHeight() int

GetHeight implements interface termui.GridBufferer

func (*Chat) GetMaxItems

func (c *Chat) GetMaxItems() int

GetMaxItems return the maximal amount of items can fit in the Chat component

func (*Chat) Help

func (c *Chat) Help(usage string, cfg *config.Config)

Help shows the usage and key bindings in the chat pane

func (*Chat) IsNewThread

func (c *Chat) IsNewThread(parentID string) bool

IsNewThread check whether a message that is going to be added as a child to a parent message, is the first one or not

func (*Chat) MessageToCells

func (c *Chat) MessageToCells(msg Message) []termui.Cell

MessageToCells will convert a Message struct to termui.Cell

We're building parts of the message individually, or else DefaultTxBuilder will interpret potential markdown usage in a message as well.

func (*Chat) MessagesToCells

func (c *Chat) MessagesToCells(msgs map[string]Message) []termui.Cell

MessagesToCells is a wrapper around MessageToCells to use for a slice of of type Message

func (*Chat) ScrollDown

func (c *Chat) ScrollDown()

ScrollDown will render the chat messages based on the Offset of the Chat pane.

Offset is 0 when scrolled down. (we loop backwards over the array, so we start with rendering last item in the list at the maximum y of the Chat pane). Increasing the Offset will thus result in substracting the offset from the len(Chat.Messages).

func (*Chat) ScrollUp

func (c *Chat) ScrollUp()

ScrollUp will render the chat messages based on the Offset of the Chat pane.

Offset is 0 when scrolled down. (we loop backwards over the array, so we start with rendering last item in the list at the maximum y of the Chat pane). Increasing the Offset will thus result in substracting the offset from the len(Chat.Messages).

func (*Chat) SetBorderLabel

func (c *Chat) SetBorderLabel(channelName string)

SetBorderLabel will set Label of the Chat pane to the specified string

func (*Chat) SetMessages

func (c *Chat) SetMessages(messages []Message)

SetMessages will put the provided messages into the Messages field of the Chat view

func (*Chat) SetWidth

func (c *Chat) SetWidth(w int)

SetWidth implements interface termui.GridBufferer

func (*Chat) SetX

func (c *Chat) SetX(x int)

SetX implements interface termui.GridBufferer

func (*Chat) SetY

func (c *Chat) SetY(y int)

SetY implements interface termui.GridBufferer

type Debug

type Debug struct {
	Par  *termui.Par
	List *termui.List
}

Debug can be used to relay debugging information in the Debug component, see event.go on how to use it

func CreateDebugComponent

func CreateDebugComponent(inputHeight int) *Debug

func (*Debug) Buffer

func (d *Debug) Buffer() termui.Buffer

Buffer implements interface termui.Bufferer

func (*Debug) GetHeight

func (d *Debug) GetHeight() int

GetHeight implements interface termui.GridBufferer

func (*Debug) Println

func (d *Debug) Println(text string)

Println will add the text to the Debug component

func (*Debug) SetWidth

func (d *Debug) SetWidth(w int)

SetWidth implements interface termui.GridBufferer

func (*Debug) SetX

func (d *Debug) SetX(x int)

SetX implements interface termui.GridBufferer

func (*Debug) SetY

func (d *Debug) SetY(y int)

SetY implements interface termui.GridBufferer

func (*Debug) Sprintf

func (d *Debug) Sprintf(format string, a ...interface{})

type Input

type Input struct {
	Par                  *termui.Par
	Text                 []rune
	CursorPositionScreen int
	CursorPositionText   int
	Offset               int
}

Input is the definition of an Input component

func CreateInputComponent

func CreateInputComponent() *Input

CreateInput is the constructor of the Input struct

func (*Input) Backspace

func (i *Input) Backspace()

Backspace will remove a character in front of the CursorPositionText

func (*Input) Buffer

func (i *Input) Buffer() termui.Buffer

Buffer implements interface termui.Bufferer

func (*Input) CalculateOffset

func (i *Input) CalculateOffset() int

CalculateOffset will, based on the width of the runes on the left of the text cursor, calculate the offset that needs to be used by the Inpute Component

func (*Input) Clear

func (i *Input) Clear()

Clear will empty the input and move the cursor to the start position

func (*Input) Delete

func (i *Input) Delete()

Delete will remove a character at the CursorPositionText

func (*Input) GetHeight

func (i *Input) GetHeight() int

GetHeight implements interface termui.GridBufferer

func (*Input) GetMaxWidth

func (i *Input) GetMaxWidth() int

GetMaxWidth returns the maximum number of positions the Input component can display

func (*Input) GetRuneWidthLeft

func (i *Input) GetRuneWidthLeft() int

GetRuneWidthLeft will get the width of a rune on the left side of the CursorPositionText

func (*Input) GetRuneWidthOffsetToCursor

func (i *Input) GetRuneWidthOffsetToCursor() int

GetRunWidthOffsetToCursor will get the rune width of all the runes from the offset until the text cursor

func (*Input) GetRuneWidthRight

func (i *Input) GetRuneWidthRight() int

GetRuneWidthLeft will get the width of a rune on the right side of the CursorPositionText

func (*Input) GetText

func (i *Input) GetText() string

GetText returns the text currently in the input

func (*Input) Insert

func (i *Input) Insert(key rune)

Insert will insert a given key at the place of the current CursorPositionText

func (*Input) IsEmpty

func (i *Input) IsEmpty() bool

IsEmpty will return true when the input is empty

func (*Input) MoveCursorLeft

func (i *Input) MoveCursorLeft()

MoveCursorLeft will decrease the current CursorPositionText with 1

func (*Input) MoveCursorRight

func (i *Input) MoveCursorRight()

MoveCursorRight will increase the current CursorPositionText with 1

func (*Input) ScrollLeft

func (i *Input) ScrollLeft()

func (*Input) ScrollRight

func (i *Input) ScrollRight()

func (*Input) SetWidth

func (i *Input) SetWidth(w int)

SetWidth implements interface termui.GridBufferer

func (*Input) SetX

func (i *Input) SetX(x int)

SetX implements interface termui.GridBufferer

func (*Input) SetY

func (i *Input) SetY(y int)

SetY implements interface termui.GridBufferer

type Message

type Message struct {
	ID       string
	Messages map[string]Message

	Time    time.Time
	Thread  string
	Name    string
	Content string

	StyleTime   string
	StyleThread string
	StyleName   string
	StyleText   string

	FormatTime string
}

func SortMessages

func SortMessages(msgs map[string]Message) []Message

func (Message) GetContent

func (m Message) GetContent() string

func (Message) GetName

func (m Message) GetName() string

func (Message) GetThread

func (m Message) GetThread() string

func (Message) GetTime

func (m Message) GetTime() string

type Mode

type Mode struct {
	Par *termui.Par
}

Mode is the definition of Mode component

func CreateModeComponent

func CreateModeComponent() *Mode

CreateMode is the constructor of the Mode struct

func (*Mode) Buffer

func (m *Mode) Buffer() termui.Buffer

Buffer implements interface termui.Bufferer

func (*Mode) GetHeight

func (m *Mode) GetHeight() int

GetHeight implements interface termui.GridBufferer

func (*Mode) SetCommandMode

func (m *Mode) SetCommandMode()

func (*Mode) SetInsertMode

func (m *Mode) SetInsertMode()

func (*Mode) SetSearchMode

func (m *Mode) SetSearchMode()

func (*Mode) SetWidth

func (m *Mode) SetWidth(w int)

SetWidth implements interface termui.GridBufferer

func (*Mode) SetX

func (m *Mode) SetX(x int)

SetX implements interface termui.GridBufferer

func (*Mode) SetY

func (m *Mode) SetY(y int)

SetY implements interface termui.GridBufferer

type Threads

type Threads struct {
	*Channels
}

func CreateThreadsComponent

func CreateThreadsComponent(height int) *Threads

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL