go-fzf
go-fzf copied to clipboard
fix(deps): update module github.com/charmbracelet/lipgloss to v1
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| github.com/charmbracelet/lipgloss | v0.8.0 -> v1.1.0 |
Release Notes
charmbracelet/lipgloss (github.com/charmbracelet/lipgloss)
v1.1.0
Tables, Improved
In this release, the inimitable @andreynering and @bashbunni majorly overhauled on the table sizing and content wrapping algorithms. Tables will now be much smarter on deciding the ideal width of each column, and contents now wraps by default inside cells.
// Table content wraps by default.
t := table.New().
Headers(someHeaders...).
Rows(someRows...).
Width(80)
fmt.Println(t)
// Actually, let's not wrap the content.
t := table.New().
Headers(someHeaders...).
Rows(someRows...).
Width(80).
Wrap(false)
fmt.Println(t)
New Border Styles
Also, we added two new border styles that you can use to generate tables in Markdown and ASCII styles.
Markdown Tables
To render tables correctly for Markdown you'll want to use lipgloss.MarkdownBorder and disable the top and bottom borders.
t := table.New().
Headers(someHeaders...).
Rows(someRows).
Border(lipgloss.MarkdownBorder()).
BorderTop(false).
BorderBottom(false)
fmt.Println(t)
ASCII Tables
To render an ASCII-style table use lipgloss.ASCIIBorder.
t := table.New().
Headers(someHeaders...).
Rows(someRows).
Border(lipgloss.ASCIIBorder())
fmt.Println(t)
Thanks everyone
Special thanks to @aymanbagabas, @bashbunni, @andreynering, and @caarlos0 for or all the work on this release!
Changelog
New Features
7862f52: feat(table): improve sizing and behavior: wrap by default, overflow optionally (@andreynering)1f1209e: feat(table): use cellbuf to preserve styles for wrapped content (@bashbunni)c454a0a: feat(tables): add markdown and ascii border style for tables (#480) (@andreynering)bafb8fd: feat(tree): hide children (#460) (@bashbunni)9942166: feat: style ranges (#458) (@caarlos0)
Bug fixes
9500f10: fix(table): ensure we're passing the right row index tostyleFunc(@andreynering)7b191c5: fix(test): make table wrapping tests use golden files (@bashbunni)9b8304f: fix: border size getters when implicit borders are present (#411) (@meowgorithm)022e967: fix: range test (@caarlos0)
Other work
ecc1bd0: fix: comment on min func in utils (@derezzolution)5cd2074: style(table): improve naming of the resizer functions (@andreynering)9cfb7dd: test(table): check truncation logic for overflow and nowrap (@bashbunni)2aa2eb0: test(table): test wrapping cell styles (@bashbunni)ca67d0f: chore(lint): apply De Morgans law to the if statement (@aymanbagabas)0fbb070: chore(lint): fix lint ignore comments (@andreynering)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v1.0.0
At last: v1.0.0
This is an honorary release indicating that Lip Gloss is now stable. Thank you, open source community, for all your love, support, contributions, and great style.
Stay tuned for a v2 alpha!
v0.13.1
Table improvements, on stream
@bashbunni went to town in this release and fixed a bunch of bugs, mostly around table. Best of all, she did most of it on stream.
Changelog
Table
- fix(table): use table height by @Broderick-Westrope in https://github.com/charmbracelet/lipgloss/pull/358
- fix(table): unset data rows without causing nil pointer err by @bashbunni in https://github.com/charmbracelet/lipgloss/pull/372
- fix(table): shared indices for first row of data and headers (StyleFunc bug) by @bashbunni in https://github.com/charmbracelet/lipgloss/pull/377
- fix(table): do not shrink table with offset by @bashbunni in https://github.com/charmbracelet/lipgloss/pull/373
- fix(table): include margins for cell width by @bashbunni in https://github.com/charmbracelet/lipgloss/pull/401
Other Stuff
- fix(render): strip carriage returns from strings by @bashbunni in https://github.com/charmbracelet/lipgloss/pull/386
Bonus
- docs(example): rainbow string by @caarlos0 in https://github.com/charmbracelet/lipgloss/pull/96
New Contributors
- @Broderick-Westrope made their first contribution in https://github.com/charmbracelet/lipgloss/pull/358
- @swrenn made their first contribution in https://github.com/charmbracelet/lipgloss/pull/364
Full Changelog: https://github.com/charmbracelet/lipgloss/compare/v0.13.0...v0.13.1
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.13.0
Woodn’t you know, Lip Gloss has trees!
Lip Gloss ships with a tree rendering sub-package.
import "github.com/charmbracelet/lipgloss/tree"
Define a new tree.
t := tree.Root(".").
Child("A", "B", "C")
Print the tree.
fmt.Println(t)
// .
// ├── A
// ├── B
// └── C
Trees have the ability to nest.
t := tree.Root(".").
Child("macOS").
Child(
tree.New().
Root("Linux").
Child("NixOS").
Child("Arch Linux (btw)").
Child("Void Linux"),
).
Child(
tree.New().
Root("BSD").
Child("FreeBSD").
Child("OpenBSD"),
)
Print the tree.
fmt.Println(t)
Trees can be customized via their enumeration function as well as using
lipgloss.Styles.
enumeratorStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("63")).MarginRight(1)
rootStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("35"))
itemStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("212"))
t := tree.
Root("⁜ Makeup").
Child(
"Glossier",
"Fenty Beauty",
tree.New().Child(
"Gloss Bomb Universal Lip Luminizer",
"Hot Cheeks Velour Blushlighter",
),
"Nyx",
"Mac",
"Milk",
).
Enumerator(tree.RoundedEnumerator).
EnumeratorStyle(enumeratorStyle).
RootStyle(rootStyle).
ItemStyle(itemStyle)
Print the tree.
The predefined enumerators for trees are DefaultEnumerator and RoundedEnumerator.
If you need, you can also build trees incrementally:
t := tree.New()
for i := 0; i < repeat; i++ {
t.Child("Lip Gloss")
}
There’s more where that came from
Changelog
New Features
0618c73: feat(test): add test forJoinHorizontal(#346) (@aditipatelpro)feb42a9: feat: move tree to root (#342) (@caarlos0)
Bug fixes
8a0e640: fix: remove unnecessary if (@aymanbagabas)
Documentation updates
bc0de5c: docs(README): make tree example match output (@bashbunni)bb3e339: docs(README): match tree example alignment with list examples (@bashbunni)185fde3: docs(README): update tree images (@bashbunni)ed7f56e: docs: fixCompleteColorexample (#345) (@bashbunni)cf0a7c6: docs: fix tree screenshot (@caarlos0)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.12.1
Border width calcs: back to normal
This release fixes a regression with regard to border calculations introduced in Lip Gloss v0.11.1.
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.12.0
Lists, Check ✓
This release adds a new sub-package for rendering trees and lists.
import "github.com/charmbracelet/lipgloss/list"
Define a new list.
l := list.New("A", "B", "C")
Print the list.
fmt.Println(l)
// • A
// • B
// • C
Lists have the ability to nest.
l := list.New(
"A", list.New("Artichoke"),
"B", list.New("Baking Flour", "Bananas", "Barley", "Bean Sprouts"),
"C", list.New("Cashew Apple", "Cashews", "Coconut Milk", "Curry Paste", "Currywurst"),
"D", list.New("Dill", "Dragonfruit", "Dried Shrimp"),
"E", list.New("Eggs"),
"F", list.New("Fish Cake", "Furikake"),
"J", list.New("Jicama"),
"K", list.New("Kohlrabi"),
"L", list.New("Leeks", "Lentils", "Licorice Root"),
)
Print the list.
fmt.Println(l)
Lists can be customized via their enumeration function as well as using
lipgloss.Styles.
enumeratorStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("99")).MarginRight(1)
itemStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("212")).MarginRight(1)
l := list.New(
"Glossier",
"Claire’s Boutique",
"Nyx",
"Mac",
"Milk",
).
Enumerator(list.Roman).
EnumeratorStyle(enumeratorStyle).
ItemStyle(itemStyle)
Print the list.
In addition to the predefined enumerators (Arabic, Alphabet, Roman, Bullet, Tree),
you may also define your own custom enumerator:
l := list.New("Duck", "Duck", "Duck", "Duck", "Goose", "Duck", "Duck")
func DuckDuckGooseEnumerator(l list.Items, i int) string {
if l.At(i).Value() == "Goose" {
return "Honk →"
}
return ""
}
l = l.Enumerator(DuckDuckGooseEnumerator)
Print the list:
If you need, you can also build lists incrementally:
l := list.New()
for i := 0; i < repeat; i++ {
l.Item("Lip Gloss")
}
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.11.1
A lil’ truncation fix
This release is a small patch release to fix text truncation in table cells. For details see: https://github.com/charmbracelet/lipgloss/issues/324.
Other stuff
- chore: remove deprecated Copy() calls by @meowgorithm in https://github.com/charmbracelet/lipgloss/pull/306
- feat: deprecate Style.ColorWhitespace by @meowgorithm in https://github.com/charmbracelet/lipgloss/pull/311
- feat: deprecate Style.ColorWhitespace by @meowgorithm in https://github.com/charmbracelet/lipgloss/pull/314
- fix: Deprecate UnsetBorderTopBackgroundColor in favor of UnsetBorderTopBackground by @nervo in https://github.com/charmbracelet/lipgloss/pull/315
Full Changelog: https://github.com/charmbracelet/lipgloss/compare/v0.11.0...v0.11.1
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.11.0
Immutable Styles and Raw Speed, Baby
So! The big news in this release is:
Stylemethods will now always return new stylesStyleand ANSI operations under the hood are faster
There are also a handful of great lil' bug fixes. Read on for more.
Immutable Styles
Every Style method now returns a completely new style with its own underlying data structure no matter what. This means working with Styles is a lot easier. No more need for Copy()!
// Before
s := lipgloss.NewStyle().Bold(true)
newStyle := s.Copy()
// After
s := lipgloss.NewStyle().Bold(true)
newStyle := s // this is a true copy
Okay, but why are styles easier to work with now? Consider this:
// Before
baseStyle := lipgloss.NewStyle().Background(lipgloss.Color("59"))
styleAtRuntime := baseStyle.Copy().Width(m.Width)
// After
baseStyle := lipgloss.NewStyle().Padding(1, 2)
styleAtRuntime := baseStyle.Width(m.Width)
It might seem small, but eliminating the risk of mutations in persistent styles in an enormous usability improvement.
How to upgrade
There's nothing to do, however Style.Copy() is now deprecated and only returns itself, so you can just remove Style.Copy() calls. If you need to just copy a style without any changes to it you can simply b := a.
Faster ANSI
Sometimes watch companies brag about their "in-house" watch movement. Well, now we're bragging about our in-house-amazing x/ansi library by our own @aymanbagabas. It's a fine-tuned, low-level way to manage ANSI sequencing and, because we're pretty nerdy, we’re super excited about it.
What's Changed
New!
- always return copies of styles by @aymanbagabas in https://github.com/charmbracelet/lipgloss/pull/276
Changed
- switch to term/ansi for text manipulation by @aymanbagabas in https://github.com/charmbracelet/lipgloss/pull/268
- replace stripansi with ansi.Strip in table by @aymanbagabas in https://github.com/charmbracelet/lipgloss/pull/271
- test for different GOOS & GOARCH by @aymanbagabas in https://github.com/charmbracelet/lipgloss/pull/292
Fixed
- fix combining both conditional and unconditional wrapping by @aymanbagabas in https://github.com/charmbracelet/lipgloss/pull/275
- fix UnderlineSpaces and StrikethroughSpaces by @Taz03 in https://github.com/charmbracelet/lipgloss/pull/299
- always render horizontal border edges when enabled by @UnseenBook in https://github.com/charmbracelet/lipgloss/pull/211
- fix possible nil panic by @maaslalani in https://github.com/charmbracelet/lipgloss/pull/245
- fix transform operating on ANSI sequences by @meowgorithm in https://github.com/charmbracelet/lipgloss/pull/274
- change propkeys from int to int64 by @hugoleodev in https://github.com/charmbracelet/lipgloss/pull/291
New Contributors
- @benwaffle made their first contribution in https://github.com/charmbracelet/lipgloss/pull/247
- @UnseenBook made their first contribution in https://github.com/charmbracelet/lipgloss/pull/211
- @hugoleodev made their first contribution in https://github.com/charmbracelet/lipgloss/pull/291
- @Taz03 made their first contribution in https://github.com/charmbracelet/lipgloss/pull/299
Full Changelog: https://github.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.10.0
String Transforms 💄
Lip Gloss v0.10.0 features a brand new Transform function for Styles to alter strings at render time. As well as some bug fixes, like ANSI-aware table cell truncation. 🧹
Simply define a Transform function as func (string) string and apply it to any style:
// Example:
s := NewStyle().Transform(strings.ToUpper)
fmt.Println(s.Render("raow!") // "RAOW!"
Or, if you prefer:
// Example:
reverse := func(s string) string {
n := 0
rune := make([]rune, len(s))
for _, r := range s {
rune[n] = r
n++
}
rune = rune[0:n]
for i := 0; i < n/2; i++ {
rune[i], rune[n-1-i] = rune[n-1-i], rune[i]
}
return string(rune)
}
s := NewStyle().Transform(reverse)
fmt.Println(s.Render("The quick brown 狐 jumped over the lazy 犬")
// "犬 yzal eht revo depmuj 狐 nworb kciuq ehT",
What's Changed?
- Corrected border shorthand functions explanation by @ReidMason in https://github.com/charmbracelet/lipgloss/pull/237
- Align help by @schmurfy in https://github.com/charmbracelet/lipgloss/pull/239
Style.Transformfor altering strings at render time by @meowgorithm in https://github.com/charmbracelet/lipgloss/pull/232- Adding right padding to empty string by @mikelorant in https://github.com/charmbracelet/lipgloss/pull/253
- Refactor padding functions by @mikelorant in https://github.com/charmbracelet/lipgloss/pull/254
- Fix truncate of table cells containing ANSI by @mikelorant in https://github.com/charmbracelet/lipgloss/pull/256
- Improve maximum width of characters in a string by @mikelorant in https://github.com/charmbracelet/lipgloss/pull/257
New Contributors
- @ReidMason made their first contribution in https://github.com/charmbracelet/lipgloss/pull/237
- @schmurfy made their first contribution in https://github.com/charmbracelet/lipgloss/pull/239
- @mikelorant made their first contribution in https://github.com/charmbracelet/lipgloss/pull/253
Full Changelog: https://github.com/charmbracelet/lipgloss/compare/v0.9.1...v0.10.0
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.9.1
This bugfix release changes the Table Headers API to accept []string for consistency with Row / Rows and downgrades Lip Gloss to Go version v1.17.
What's Changed
- Table Headers type from
[]any→[]stringby @maaslalani in https://github.com/charmbracelet/lipgloss/pull/234 - Downgrade Lip Gloss to
v1.17by @maaslalani in https://github.com/charmbracelet/lipgloss/pull/234
Full Changelog: https://github.com/charmbracelet/lipgloss/compare/v0.9.0...v0.9.1
v0.9.0
My, how the tables have turned
Now you can draw Tables with Lip Gloss! 💅
View the source code.
Let's get started
import "github.com/charmbracelet/lipgloss/table"
Define some rows of data.
rows := [][]string{
{"Chinese", "您好", "你好"},
{"Japanese", "こんにちは", "やあ"},
{"Arabic", "أهلين", "أهلا"},
{"Russian", "Здравствуйте", "Привет"},
{"Spanish", "Hola", "¿Qué tal?"},
}
Use the table package to style and render the table.
t := table.New().
Border(lipgloss.NormalBorder()).
BorderStyle(lipgloss.NewStyle().Foreground(lipgloss.Color("99"))).
StyleFunc(func(row, col int) lipgloss.Style {
switch {
case row == 0:
return HeaderStyle
case row%2 == 0:
return EvenRowStyle
default:
return OddRowStyle
}
}).
Headers("LANGUAGE", "FORMAL", "INFORMAL").
Rows(rows...)
// You can also add tables row-by-row
t.Row("English", "You look absolutely fabulous.", "How's it going?")
Print the table.
fmt.Println(t)
For more on tables see the examples.
Additional Borders
Lip Gloss' Border now supports additional middle border separators.
type Border struct {
// ...
MiddleLeft string
MiddleRight string
Middle string
MiddleTop string
MiddleBottom string
}
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
ℹ Artifact update notice
File name: go.mod
In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):
- 5 additional dependencies were updated
Details:
| Package | Change |
|---|---|
github.com/mattn/go-runewidth |
v0.0.15 -> v0.0.16 |
github.com/muesli/termenv |
v0.15.2 -> v0.16.0 |
github.com/mattn/go-isatty |
v0.0.18 -> v0.0.20 |
github.com/rivo/uniseg |
v0.2.0 -> v0.4.7 |
golang.org/x/sys |
v0.7.0 -> v0.30.0 |
