Allow empty style/media-style serialization. Remove media-styles if they don't have content.

This commit is contained in:
Mikalai Turankou 2026-06-29 15:09:49 +03:00
parent 0c1bdce7c8
commit 3114b810a4
1 changed files with 22 additions and 3 deletions

View File

@ -369,6 +369,15 @@ func (theme *theme) RemoveStyle(tag string) {
for _, mediaStyle := range theme.mediaStyles { for _, mediaStyle := range theme.mediaStyles {
remove(mediaStyle.styles) remove(mediaStyle.styles)
} }
// Remove empty media styles
newMediaStyles := make([]mediaStyle, 0)
for _, mediaStyle := range theme.mediaStyles {
if len(mediaStyle.styles) > 0 {
newMediaStyles = append(newMediaStyles, mediaStyle)
}
}
theme.mediaStyles = newMediaStyles
} }
func (theme *theme) MediaStyle(tag string, params MediaStyleParams) ViewStyle { func (theme *theme) MediaStyle(tag string, params MediaStyleParams) ViewStyle {
@ -420,14 +429,24 @@ func (theme *theme) SetMediaStyle(tag string, params MediaStyleParams, style Vie
styles.MinHeight == params.MinHeight { styles.MinHeight == params.MinHeight {
if style != nil { if style != nil {
theme.mediaStyles[i].styles[tag] = style theme.mediaStyles[i].styles[tag] = style
return
} else { } else {
delete(theme.mediaStyles[i].styles, tag) delete(theme.mediaStyles[i].styles, tag)
// Remove empty media styles
newMediaStyles := make([]mediaStyle, 0)
for _, mediaStyle := range theme.mediaStyles {
if len(mediaStyle.styles) > 0 {
newMediaStyles = append(newMediaStyles, mediaStyle)
}
}
theme.mediaStyles = newMediaStyles
return
} }
break
} }
} }
if style != nil { if style != nil {
// New media style, append and sort media styles
theme.mediaStyles = append(theme.mediaStyles, mediaStyle{ theme.mediaStyles = append(theme.mediaStyles, mediaStyle{
MediaStyleParams: params, MediaStyleParams: params,
styles: map[string]ViewStyle{tag: style}, styles: map[string]ViewStyle{tag: style},
@ -964,7 +983,7 @@ func (theme *theme) String() string {
buffer.WriteString(" = [\n") buffer.WriteString(" = [\n")
for _, tag := range tags { for _, tag := range tags {
if style, ok := styles[tag]; ok && !style.IsEmpty() { if style, ok := styles[tag]; ok {
buffer.WriteString("\t\t") buffer.WriteString("\t\t")
writeViewStyle(tag, style, buffer, "\t\t", nil) writeViewStyle(tag, style, buffer, "\t\t", nil)
buffer.WriteString(",\n") buffer.WriteString(",\n")
@ -1015,7 +1034,7 @@ func (theme *theme) String() string {
buffer.WriteString(" = [\n") buffer.WriteString(" = [\n")
for _, tag := range tags { for _, tag := range tags {
if style, ok := media.styles[tag]; ok && !style.IsEmpty() { if style, ok := media.styles[tag]; ok {
buffer.WriteString("\t\t") buffer.WriteString("\t\t")
writeViewStyle(tag, style, buffer, "\t\t", nil) writeViewStyle(tag, style, buffer, "\t\t", nil)
buffer.WriteString(",\n") buffer.WriteString(",\n")