Change overlay display to allow bubblezone to work

Signed-off-by: Hadi <[email protected]>
This commit is contained in:
Hadi
2026-08-23 17:42:33 +02:00
parent b22ce7cbf7
commit 2fd1861339
4 changed files with 29 additions and 15 deletions
+26
View File
@@ -0,0 +1,26 @@
package style
import (
"strings"
"github.com/charmbracelet/x/ansi"
)
func Overlay(base, top string, x, y int) string {
baseLines := strings.Split(base, "\n")
topLines := strings.Split(top, "\n")
for i, tl := range topLines {
row := y + i
if row < 0 || row >= len(baseLines) {
continue
}
bl := baseLines[row]
tw := ansi.StringWidth(tl)
left := ansi.Cut(bl, 0, x)
right := ansi.Cut(bl, x+tw, ansi.StringWidth(bl))
baseLines[row] = left + tl + right
}
return strings.Join(baseLines, "\n")
}