Visuele editor toont mermaid-fence als codeblok (MermaidEmbedBuilder ontbreekt) #1920
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1920
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
docs/design/DOCUMENT_MODE.md§4.3 belooft dat de visuele modus tabel, grafiek, gantt, mermaid, afbeelding en formule als volledig gerenderde embed-kaarten toont. Inlib/widgets/markdown_editor/bestaan echter alleen builders voor:DividerEmbedBuilderFootnoteRefEmbedBuilder/FootnoteDefEmbedBuilderImageEmbedBuilderPentestBlockEmbedBuilderTableEmbedBuilderTimelineTableEmbedBuilderTocEmbedBuilderFallbackEmbedBuilder(de catch-all)Een
mermaid-fence (en ook eenchart-fence en blokformules) valt daardoor in de visuele editor terug op een codeblok viaFallbackEmbedBuilder. De lezer, voorvertoning, Pagina's-weergave, PDF- en HTML-export tekenen het diagram wél — alleen de visuele editor niet.Oplossingsrichting
Een
MermaidEmbedBuilderdieDocMermaidViewin een alleen-lezen kaart zet, met bewerken via de bron (klik op de kaart opent de Markdown-bron op de betreffende fence). Dit sluit het gat tussen de belofte in §4.3 en de daadwerkelijke builders.Dit is het enige punt dat echt "fixen" verdient — de andere weergaven renderen mermaid al correct, de visuele editor is de ontbrekende schakel.
Referenties
docs/design/DOCUMENT_MODE.md§4.3lib/widgets/markdown_editor/wysiwyg_notes_field.dart(regel 306-325: de lijst van builders)lib/widgets/reader/doc_mermaid_view.dart(de renderer die hergebruikt kan worden)Labels
bug,enhancement,document-modusOpgepakt. Tak: fix/mermaid-embed-visual-editor. Reikwijdte: nieuwe lib/utils/mermaid_embed_syntax.dart en lib/widgets/markdown_editor/mermaid_embed_builder.dart, plus registratie in markdown_quill_codec.dart en wysiwyg_notes_field.dart.
Eén correctie op de probleemanalyse hierboven: FallbackEmbedBuilder is er niet bij betrokken. De fence-scanner in markdown_visual_compatibility.dart slaat alles binnen een ```-fence bewust over, en de codec kent geen mermaid-embed, dus de fence wordt een gewoon Quill-codeblok. Het symptoom klopt; de fix vraagt daarom een embed-syntax plus een builder, langs hetzelfde pad als de pentest-envelop.
Randproef op de nieuwe embed: een mermaid-fence binnen een lijstitem wordt uit zijn inspringing gehaald en aan de bulletregel geplakt. Nagemeten of dit nieuw is — dat is het niet. Een gewoon dart-codeblok in een lijstitem verliest vandaag al zijn fence-regels helemaal ('- Stap een:void main() {}'), en een tabel verliest zijn bullet. Mermaid houdt zijn inhoud juist heel. De klasse fout is dus ouder dan deze wijziging en breder dan mermaid; apart opgevoerd als #1925 met de drie gemeten gevallen. Ik heb hem hier niet meegenomen: de fix raakt de codec voor codeblokken en tabellen net zo goed, en dat is een andere wijziging dan deze.
Opgelost en op main geverifieerd: merge-commit
2188e88ed(PR #1926). Een mermaid-fence reist nu als blok-embed (x-embed-mermaid) door de Quill-brug en wordt door MermaidEmbedBuilder als gerenderd diagram getekend, via dezelfde DocumentMarkdownView als de lezer.Wat er NIET in zit, en waarom: