feat(richtext): parameterized styles, alignment/image/base-style channels, HTML round-trip
RichStyle becomes a sealed interface (Bold/Italic/Underline/Strikethrough + FontFamily/FontSize/FontColor/Highlight); RichTextContent gains alignments, images, and baseStyle channels. The HTML serializer emits merged <span style> runs, text-align on <p>/<li> (splitting merged paragraphs at alignment boundaries), <img src="cid:…"> over the visible [image: name] token, and a single outer <div style> for the base style. The parser is a faithful inverse and additionally tolerates <del>/<strike>, px font sizes, #rgb colors, and start/end alignment synonyms; unknown CSS is ignored without dropping text. hasFormatting() covers every new channel so ComposeViewModel.normalizedHtml() never silently drops serialized formatting. The editor carries parameterized style identity via string annotations (libremail:style / libremail:image), maps alignment onto ParagraphStyle ranges, holds baseStyle in separate field state, and RichTextEditing.toggleStyle now replaces a different value of the same kind while styleAt() answers "current value over the selection" for pickers. ColorSwatchRow is added for the upcoming color/highlight dialogs. No UI change. Closes #70 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -88,6 +88,7 @@
|
||||
<string name="format_link_url">Link address</string>
|
||||
<string name="format_link_apply">Link</string>
|
||||
<string name="format_link_needs_selection">Select some text first, then add a link.</string>
|
||||
<string name="format_color_none">No color</string>
|
||||
|
||||
<!-- Drafts -->
|
||||
<string name="drafts_title">Drafts</string>
|
||||
|
||||
Reference in New Issue
Block a user